Markdown Extra (including Parsedown Extra) allows for attributes to be applied to certain elements: headers, fenced code blocks, links, and images. I'd like to be able to apply them to any element. I'm going to use the syntax of Python Markdown attributes, but the attribute lists go before the elements. For block level elements, they go on their own line before the element.
My attribute lists start with {:
(not just {
) and end with }
. Anything that would be legal in HTML (as
is fine, since I didn't write my own parser. I just used DOMDocument
. There are three special cases:
.foo
is changed toclass="foo"
. Note that this is different from the Python code, which appends class names that start with.
. Repeated attribute names in actual HTML are ignored, so to use two classes, useclass="foo bar"
, not.foo .bar
.#foo
is changed toid="foo"
.- Two letters alone are changed to
lang=xx
, since I use that attribute so much.