PCv5/app/utils/filters/markdown.py

46 lines
1.4 KiB
Python
Raw Normal View History

2020-09-18 19:43:10 +02:00
from app import app
from markupsafe import Markup
from markdown import markdown
2021-02-20 15:39:52 +01:00
from markdown.extensions.codehilite import CodeHiliteExtension
from markdown.extensions.footnotes import FootnoteExtension
from markdown.extensions.toc import TocExtension
from bleach import clean
from app.utils.bleach_allowlist import markdown_tags, markdown_attrs
2021-02-20 15:39:52 +01:00
2021-02-20 17:17:33 +01:00
from app.utils.markdown_extensions.pclinks import PCLinkExtension
from app.utils.markdown_extensions.hardbreaks import HardBreakExtension
from app.utils.markdown_extensions.escape_html import EscapeHtmlExtension
2021-02-24 00:38:26 +01:00
from app.utils.markdown_extensions.linkify import LinkifyExtension
from app.utils.markdown_extensions.media import MediaExtension
from app.utils.markdown_extensions.gallery import GalleryExtension
2021-02-20 17:17:33 +01:00
2020-09-18 19:43:10 +02:00
@app.template_filter('md')
def md(text):
"""
Converts markdown to html5
"""
2021-02-20 15:39:52 +01:00
options = 0
extensions = [
# 'admonition',
'fenced_code',
# 'nl2br',
2021-02-20 15:39:52 +01:00
'sane_lists',
'tables',
CodeHiliteExtension(linenums=True, use_pygments=True),
EscapeHtmlExtension(),
2021-02-20 15:39:52 +01:00
FootnoteExtension(UNIQUE_IDS=True),
HardBreakExtension(),
2021-02-24 00:38:26 +01:00
LinkifyExtension(),
2021-02-20 15:39:52 +01:00
TocExtension(baselevel=2),
2021-02-20 17:17:33 +01:00
PCLinkExtension(),
MediaExtension(),
GalleryExtension(),
2021-02-20 15:39:52 +01:00
]
html = markdown(text, options=options, extensions=extensions)
out = clean(html, markdown_tags, markdown_attrs)
2021-02-20 15:39:52 +01:00
return Markup(out)