Require a space after # for markdown titles
Lets us types stuff like #room-aliases without having to escape the # or get a bad surprise
This commit is contained in:
parent
c948c75d36
commit
9fa2816d4b
@ -21,8 +21,6 @@ from .color import SVGColor
|
|||||||
class MarkdownInlineGrammar(mistune.InlineGrammar):
|
class MarkdownInlineGrammar(mistune.InlineGrammar):
|
||||||
"""Markdown inline elements syntax modifications for the Mistune parser.
|
"""Markdown inline elements syntax modifications for the Mistune parser.
|
||||||
|
|
||||||
Modifications:
|
|
||||||
|
|
||||||
- Disable underscores for bold/italics (e.g. `__bold__`)
|
- Disable underscores for bold/italics (e.g. `__bold__`)
|
||||||
|
|
||||||
- Add syntax for coloring text: `<color>(text)`,
|
- Add syntax for coloring text: `<color>(text)`,
|
||||||
@ -42,6 +40,15 @@ class MarkdownInlineGrammar(mistune.InlineGrammar):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MarkdownBlockGrammar(mistune.BlockGrammar):
|
||||||
|
"""Markdown block elements syntax modifications for the Mistune parser.
|
||||||
|
|
||||||
|
- Require a space after # for titles
|
||||||
|
"""
|
||||||
|
|
||||||
|
heading = re.compile(r"^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)")
|
||||||
|
|
||||||
|
|
||||||
class MarkdownInlineLexer(mistune.InlineLexer):
|
class MarkdownInlineLexer(mistune.InlineLexer):
|
||||||
"""Apply the changes from `MarkdownInlineGrammar` for Mistune."""
|
"""Apply the changes from `MarkdownInlineGrammar` for Mistune."""
|
||||||
|
|
||||||
@ -74,6 +81,12 @@ class MarkdownInlineLexer(mistune.InlineLexer):
|
|||||||
return self.renderer.color(color, text)
|
return self.renderer.color(color, text)
|
||||||
|
|
||||||
|
|
||||||
|
class MarkdownBlockLexer(mistune.BlockLexer):
|
||||||
|
"""Apply the changes from `MarkdownBlockGrammar` for Mistune."""
|
||||||
|
|
||||||
|
grammar_class = MarkdownBlockGrammar
|
||||||
|
|
||||||
|
|
||||||
class MarkdownRenderer(mistune.Renderer):
|
class MarkdownRenderer(mistune.Renderer):
|
||||||
def color(self, color: str, text: str) -> str:
|
def color(self, color: str, text: str) -> str:
|
||||||
"""Render given text with a color using `<span data-mx-color=#hex>`."""
|
"""Render given text with a color using `<span data-mx-color=#hex>`."""
|
||||||
@ -186,10 +199,11 @@ class HTMLProcessor:
|
|||||||
# hard_wrap: convert all \n to <br> without required two spaces
|
# hard_wrap: convert all \n to <br> without required two spaces
|
||||||
# escape: escape HTML characters in the input string, e.g. tags
|
# escape: escape HTML characters in the input string, e.g. tags
|
||||||
self._markdown_to_html = mistune.Markdown(
|
self._markdown_to_html = mistune.Markdown(
|
||||||
hard_wrap=True,
|
hard_wrap = True,
|
||||||
escape=True,
|
escape = True,
|
||||||
inline=MarkdownInlineLexer,
|
inline = MarkdownInlineLexer,
|
||||||
renderer=MarkdownRenderer(),
|
block = MarkdownBlockLexer,
|
||||||
|
renderer = MarkdownRenderer(),
|
||||||
)
|
)
|
||||||
|
|
||||||
self._markdown_to_html.block.default_rules = [
|
self._markdown_to_html.block.default_rules = [
|
||||||
|
Loading…
Reference in New Issue
Block a user