markdown: don't parse "> ..." as blockquote

This commit is contained in:
miruka 2019-07-21 16:08:40 -04:00
parent 238f38c9f0
commit 6e65376612
2 changed files with 16 additions and 3 deletions

View File

@ -63,6 +63,7 @@
- Prevent using the SendBox if no permission (power levels)
- Spinner when loading past room events, images or clicking buttons
- Parse themes from JSON
- Distribute fonts
- Settings page
- Message/text selection

View File

@ -10,6 +10,11 @@ import html_sanitizer.sanitizer as sanitizer
from html_sanitizer.sanitizer import Sanitizer
class MarkdownRenderer(mistune.Renderer):
def block_quote(self, text: str) -> str:
return re.sub(r"^<p>", "<p>&gt;", text)
class HtmlFilter:
link_regexes = [re.compile(r, re.IGNORECASE) for r in [
(r"(?P<body>[a-zA-Z\d]+://(?P<host>[a-z\d._-]+)"
@ -29,7 +34,14 @@ class HtmlFilter:
sanitizer.normalize_whitespace_in_text_or_tail = lambda el: el
# hard_wrap: convert all \n to <br> without required two spaces
self._markdown_to_html = mistune.Markdown(hard_wrap=True)
self._markdown_to_html = mistune.Markdown(
hard_wrap=True, renderer=MarkdownRenderer()
)
self._markdown_to_html.block.default_rules = [
rule for rule in self._markdown_to_html.block.default_rules
if rule != "block_quote"
]
def from_markdown(self, text: str) -> str:
@ -76,8 +88,8 @@ class HtmlFilter:
}
inlines_attributes = {
# TODO: translate font attrs to qt html subset
"font": {"data-mx-bg-color", "data-mx-color"},
# TODO: translate font attrs to qt html subset, disallow color
"font": {"data-mx-bg-color", "data-mx-color", "color"},
"a": {"href"},
"code": {"class"},
}