PCv5/app/utils/filters/markdown.py

38 lines
961 B
Python

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
@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),
]
def escape(text):
text = text.replace("&", "&")
text = text.replace("<", "&lt;")
text = text.replace(">", "&gt;")
return text
# Escape html chars because markdown does not
safe = escape(text)
out = markdown(safe, options=options, extensions=extensions)
return Markup(out)