admonition extension returns invalid html code without blank line. · Issue #1329 · Python-Markdown/markdown (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Description
In [8]: import markdown In [9]: some_text = """ ...: !!! danger "Danger" ...: don't try this at home. ...: ...: """ In [10]: markdown.markdown(some_text, tab_length=2, extensions=['admonition']) Out[10]: '
\n
'
Danger
don't try this at home.
\n\n- A paragraph inside a paragraph is invalid html and etree parser complains!
- the simple solution of turning the title paragraph into a div will work, but it wraps the inner paragraph, resulting in a CSS mess.
Recommended working solution:
CLASSNAME_TITLE = 'admonition-title'
- CLASSNAME_BODY = 'admonition-body' RE = re.compile(r'(?:^|\n)!!! ?([\w-]+(?: +[\w-]+))(?: +"(.?)")? *(?:\n|$)')
@@ -130,9 +134,11 @@ class AdmonitionProcessor(BlockProcessor): div = etree.SubElement(parent, 'div') div.set('class', '{} {}'.format(self.CLASSNAME, klass)) if title:
p = etree.SubElement(div, 'p')
p = etree.SubElement(div, 'div') p.text = title p.set('class', self.CLASSNAME_TITLE)
p = etree.SubElement(div, 'div')
p.set('class', self.CLASSNAME_BODY)
Note: the
parse_content()
method of your admonition extension is an unreadable code-mess ;-)