from app import app from markupsafe import Markup from markdown import markdown from markdown.extensions.codehilite import CodeHiliteExtension from markdown.extensions.footnotes import FootnoteExtension from markdown.extensions.toc import TocExtension from app.utils.markdown_extensions.pclinks import PCLinkExtension @app.template_filter('md') def md(text): """ Converts markdown to html5 """ options = 0 extensions = [ # 'admonition', 'fenced_code', 'nl2br', 'sane_lists', 'tables', CodeHiliteExtension(linenums=True, use_pygments=True), FootnoteExtension(UNIQUE_IDS=True), TocExtension(baselevel=2), PCLinkExtension(), ] def escape(text): text = text.replace("&", "&") text = text.replace("<", "<") text = text.replace(">", ">") return text # Escape html chars because markdown does not safe = escape(text) out = markdown(safe, options=options, extensions=extensions) return Markup(out)