From 41d1411f86ded4c2e97a7527b42c5caee36f62d8 Mon Sep 17 00:00:00 2001 From: Darks Date: Wed, 24 Feb 2021 00:06:49 +0100 Subject: [PATCH] markdown: add hard breaks with \\ Plus some PEP8 enhancements --- app/utils/filters/markdown.py | 6 ++++-- app/utils/markdown_extensions/escape_html.py | 2 +- app/utils/markdown_extensions/hardbreaks.py | 9 +++++++++ app/utils/markdown_extensions/pclinks.py | 3 ++- 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 app/utils/markdown_extensions/hardbreaks.py diff --git a/app/utils/filters/markdown.py b/app/utils/filters/markdown.py index d59dce5..bedb234 100644 --- a/app/utils/filters/markdown.py +++ b/app/utils/filters/markdown.py @@ -8,7 +8,8 @@ from bleach import clean from app.utils.bleach_allowlist import markdown_tags, markdown_attrs from app.utils.markdown_extensions.pclinks import PCLinkExtension -from app.utils.markdown_extensions.escape_html import EscapeHtml +from app.utils.markdown_extensions.hardbreaks import HardBreakExtension +from app.utils.markdown_extensions.escape_html import EscapeHtmlExtension @app.template_filter('md') @@ -25,8 +26,9 @@ def md(text): 'sane_lists', 'tables', CodeHiliteExtension(linenums=True, use_pygments=True), - EscapeHtml(), + EscapeHtmlExtension(), FootnoteExtension(UNIQUE_IDS=True), + HardBreakExtension(), TocExtension(baselevel=2), PCLinkExtension(), ] diff --git a/app/utils/markdown_extensions/escape_html.py b/app/utils/markdown_extensions/escape_html.py index 28f00a8..099d82e 100644 --- a/app/utils/markdown_extensions/escape_html.py +++ b/app/utils/markdown_extensions/escape_html.py @@ -1,7 +1,7 @@ from markdown.extensions import Extension -class EscapeHtml(Extension): +class EscapeHtmlExtension(Extension): def extendMarkdown(self, md): md.preprocessors.deregister('html_block') md.inlinePatterns.deregister('html') diff --git a/app/utils/markdown_extensions/hardbreaks.py b/app/utils/markdown_extensions/hardbreaks.py new file mode 100644 index 0000000..ecacf4c --- /dev/null +++ b/app/utils/markdown_extensions/hardbreaks.py @@ -0,0 +1,9 @@ +from markdown.extensions import Extension +from markdown.inlinepatterns import SubstituteTagPattern + + +class HardBreakExtension(Extension): + def extendMarkdown(self, md): + BREAK_RE = r' *\\\\\n' + breakPattern = SubstituteTagPattern(BREAK_RE, 'br') + md.inlinePatterns.register(breakPattern, 'hardbreak', 185) diff --git a/app/utils/markdown_extensions/pclinks.py b/app/utils/markdown_extensions/pclinks.py index 192e628..9fe982b 100644 --- a/app/utils/markdown_extensions/pclinks.py +++ b/app/utils/markdown_extensions/pclinks.py @@ -20,6 +20,7 @@ from app.models.poll import Poll from app.models.topic import Topic from app.models.user import Member + class PCLinkExtension(Extension): def __init__(self, **kwargs): self.config = { @@ -36,7 +37,7 @@ class PCLinkExtension(Extension): PCLINK_RE = r'\[\[([a-z]+): ?(\w+)\]\]' pclinkPattern = PCLinksInlineProcessor(PCLINK_RE, self.getConfigs()) pclinkPattern.md = md - md.inlinePatterns.register(pclinkPattern, 'pclink', 75) + md.inlinePatterns.register(pclinkPattern, 'pclink', 135) class PCLinksInlineProcessor(InlineProcessor):