__init__.py @ 1d3416da68e0

Add commented out code for working with TortoiseHg.
author Chris Eldredge <chris.eldredge@gmail.com>
date Thu, 09 Aug 2012 23:47:58 +0100
parents a1ca051886bd
children 8659ef2c4757 b9bf34a94aad
import os
import sys

# If using TortoiseHg, obtain Python-Markdown and tell Python where to find it:
#sys.path.append("c:/python27/Lib/site-packages/markdown-2.2.0-py2.7.egg")

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')