Fix markdown in HTML behaviour for Python-Markdown 3.3.3
This commit is contained in:
parent
84493063fd
commit
5e4d32b20d
@ -27,16 +27,10 @@ class WNMarkdown(markdown.Markdown):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
self.registerExtensions([FootnoteExtension(), 'toc', 'tables'], {})
|
self.registerExtensions([FootnoteExtension(), 'toc', 'tables', 'md_in_html'], {})
|
||||||
|
|
||||||
self.meta = {}
|
self.meta = {}
|
||||||
|
|
||||||
# Markdown in HTML
|
|
||||||
self.preprocessors['html_block'].markdown_in_raw = True
|
|
||||||
self.parser.blockprocessors.register(markdown.extensions.md_in_html.MarkdownInHtmlProcessor(self.parser), 'markdown_block', 105)
|
|
||||||
self.parser.blockprocessors.tag_counter = -1
|
|
||||||
self.parser.blockprocessors.contain_span_tags = re.compile(r'^(p|h[1-6]|li|dd|dt|td|th|legend|address)$', re.IGNORECASE)
|
|
||||||
|
|
||||||
# Override default Markdown processors
|
# Override default Markdown processors
|
||||||
self.preprocessors.register(NormalizeWhitespace(self), 'normalize_whitespace', 30)
|
self.preprocessors.register(NormalizeWhitespace(self), 'normalize_whitespace', 30)
|
||||||
self.parser.blockprocessors.register(HashHeaderProcessor(self.parser), 'hashheader', 70)
|
self.parser.blockprocessors.register(HashHeaderProcessor(self.parser), 'hashheader', 70)
|
||||||
@ -136,6 +130,17 @@ class NormalizeWhitespace(markdown.preprocessors.Preprocessor):
|
|||||||
source = re.sub(r'(?<=\n) +\n', '\n', source)
|
source = re.sub(r'(?<=\n) +\n', '\n', source)
|
||||||
return source.split('\n')
|
return source.split('\n')
|
||||||
|
|
||||||
|
# Override to inherit markdown attribute
|
||||||
|
# This is required since Python-Markdown 3.3.3 so we implement this for backwards compatibility
|
||||||
|
def HTMLExtractorExtra_get_state(self, tag, attrs):
|
||||||
|
if 'markdown' not in attrs:
|
||||||
|
parent_state = self.mdstate[-1] if self.mdstate else None
|
||||||
|
if parent_state != 'off':
|
||||||
|
attrs['markdown'] = '1'
|
||||||
|
return HTMLExtractorExtra_get_state.orig(self, tag, attrs)
|
||||||
|
HTMLExtractorExtra_get_state.orig = markdown.extensions.md_in_html.HTMLExtractorExtra.get_state
|
||||||
|
markdown.extensions.md_in_html.HTMLExtractorExtra.get_state = HTMLExtractorExtra_get_state
|
||||||
|
|
||||||
class DirectiveProcessor(markdown.blockprocessors.BlockProcessor):
|
class DirectiveProcessor(markdown.blockprocessors.BlockProcessor):
|
||||||
RE = re.compile(r'^.. +(?P<name>[a-zA-Z0-9_-]+?)::(?: +(?P<arg>.*?))?(?:\n|$)')
|
RE = re.compile(r'^.. +(?P<name>[a-zA-Z0-9_-]+?)::(?: +(?P<arg>.*?))?(?:\n|$)')
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user