Move info to ReadMe.markdown. Tweak theme.
author |
Chris Eldredge <chris.eldredge@gmail.com> |
date |
Thu, 09 Aug 2012 18:37:12 -0400 |
parents |
299ff954bfa8 |
children |
1d3416da68e0 |
import os
import sys
import markdown
from mercurial.hgweb import webcommands, webutil, common
from mercurial import extensions, encoding, util
import logging
logging.basicConfig()
def filerevision_markdown(web, req, tmpl):
f = req.form.get('file', [''])[0]
parts = os.path.splitext(f)
if not parts[1] == '.markdown' and not parts[1] == '.md':
return rawfile(web, req, tmpl)
previewMode = 'node' in req.form and req.form['node'][0] == '_preview'
if previewMode:
text = file(web.repo.root + "/" + f).read()
else:
fctx = webutil.filectx(web.repo, req)
text = fctx.data()
if util.binary(text):
# todo: handle preview mode
return rawfile(web, req, tmpl)
md = markdown.Markdown(extensions=['wikilinks(base_url={0},end_url={1})'.format('', parts[1])])
html = md.convert(text)
args = {'file':f,
'readmefilename':parts[0].split('/')[-1],
'path':webutil.up(f),
'readme':html}
if previewMode:
args.update({'rev':'PREVIEW', 'node':'PREVIEW'})
else:
args.update({'rev':fctx.rev(),
'node':fctx.hex(),
'author':fctx.user(),
'date':fctx.date(),
'desc':fctx.description(),
'branch':webutil.nodebranchnodefault(fctx),
'parent':webutil.parents(fctx),
'child':webutil.children(fctx)})
return tmpl("markdown", **args)
def summary_markdown(orig, web, req, tmpl):
changeid = 'default' # todo: add hgrc config setting
previewMode = False
text = None
cctx = web.repo[changeid]
changeid = cctx.hex()[0:12]
for filename in cctx:
if filename.lower() == 'readme.md' or filename.lower() == 'readme.markdown':
fctx = cctx.filectx(filename)
text = fctx.data()
readmefile = filename
break
if text:
ext = os.path.splitext(readmefile)[1]
base_url = tmpl.defaults['url'] + 'markdown/' + changeid + "/"
md = markdown.Markdown(
extensions=['urlrebase', 'wikilinks'],
extension_configs={
'urlrebase' : [('base_url', base_url)],
'wikilinks' : [('base_url', base_url), ('end_url', ext)]})
readme = md.convert(text)
else:
readmefile = "ReadMe"
readme = "Add ReadMe.md or ReadMe.markdown to this repository to display it here."
tmpl.defaults['readmefilename'] = readmefile
tmpl.defaults['readme'] = readme
return orig(web, req, tmpl)
def find_working_copy_readme(repo):
for filename in os.listdir(repo.root):
if filename.lower() == 'readme.md' or filename.lower() == 'readme.markdown':
return filename
def extsetup():
extensions.wrapfunction(webcommands, 'summary', summary_markdown)
webcommands.markdown = filerevision_markdown
webcommands.__all__.append('markdown')