-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Context
I was using container_plugin, but I found it was not getting the attributes from custom containers like this
::: speaker speaker-name=Bob
Hello, how are you?
:::
When markdown-it parsed the above markdown it would correctly set the class to "speaker", but it would miss the attributes.
To fix this I made a custom plugin function that also parses the container attributes
def container_plugin_attrs(md: MarkdownIt, name: str):
"""
Markdown-it plugin for rendering containers with attributes.
"""
# Make render function
def _render(self, tokens, idx, options, env):
token = tokens[idx]
if token.nesting == 1:
parts = token.info.strip().split()
for part in parts[1:]:
if "=" in part:
k, v = part.split("=", 1)
token.attrSet(k, v)
attrs = token.attrs or {}
attrs_str = ' '.join(f'{k}="{v}"' for k, v in attrs.items())
return f'<div class="{name}" {attrs_str}>\n'
else:
return '</div>\n'
# Register container
md = container_plugin(md, name, render=_render)
# Return md for chaining
return md
Now the output will get the correct attributes. I would like to request that something like this to be integrated as an automatic feature of the container_plugin.
Also, I realize that it is possible that this already is a core feature, and I am just doing something wrong when writing my Markdown files. In that case, please tell me if I can make a quick switch to my conventions to make it compatible.
Proposal
No response
Tasks and updates
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request