-
Notifications
You must be signed in to change notification settings - Fork 893
Closed
Labels
bugBug report.Bug report.confirmedConfirmed bug report or approved feature request.Confirmed bug report or approved feature request.extensionRelated to one or more of the included extensions.Related to one or more of the included extensions.
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]: '<div class="admonition danger">\n<p class="admonition-title">Danger<p>don\'t try this at home.</p>\n</p>\n</div>'- 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 ;-)
Metadata
Metadata
Assignees
Labels
bugBug report.Bug report.confirmedConfirmed bug report or approved feature request.Confirmed bug report or approved feature request.extensionRelated to one or more of the included extensions.Related to one or more of the included extensions.