__init__.py @ 506fc48e108b default tip

Enable fenced code blocks
author Steve Losh <steve@stevelosh.com>
date Wed, 15 Jan 2020 19:02:22 -0500
parents 1758d8b993d0
children (none)
import os
import sys

# markdown is imported later, in extsetup
import logging
from mercurial import extensions
from mercurial.hgweb import webcommands
from mercurial.templatefilters import escape

logging.basicConfig()

@webcommands.webcommand('readme')
def readme(web):
    text = None
    content = None

    changeid = web.config('web', 'readme.changeid', 'tip')
    cctx = web.repo[changeid]
    changeid = cctx.hex()[0:12]
    for filename in cctx:
        parts = filename.lower().split('.')
        if parts[0] == 'readme':
            content = cctx.filectx(filename).data().decode("utf-8")
            if parts[-1] in ['markdown', 'md']:
                md = Markdown(extensions=['fenced_code', TocExtension(anchorlink=True)])
                content = md.convert(content).encode("utf-8")
            else:
                content = "<pre>" + escape(content) + "</pre>"
            break

    return web.sendtemplate('readme', readme_content=content)

def extsetup(ui):
    try:
        from markdown import Markdown
        from markdown.extensions.toc import TocExtension
    except ImportError:
        ui.warn("Unable to locate markdown in path %s\n" % sys.path)

    global Markdown
    global TocExtension

    webcommands.readme = readme