from html5tagger import HTML, E
from mistune.directives import Admonition
class Notification(Admonition):
SUPPORTED_NAMES = {
"success",
"info",
"warning",
"danger",
"tip",
"new",
"note",
}
def __call__(self, directive, md):
for name in self.SUPPORTED_NAMES:
directive.register(name, self.parse)
if md.renderer.NAME == "html":
md.renderer.register("admonition", self._render_admonition)
md.renderer.register("admonition_title", self._render_admonition_title)
md.renderer.register("admonition_content", self._render_admonition_content)
def _render_admonition(self, _, text, name, **attrs) -> str:
return str(
E.div(
HTML(text),
class_=f"notification is-{name}",
)
)
def _render_admonition_title(self, _, text) -> str:
return str(
E.p(
text,
class_="notification-title",
)
)
def _render_admonition_content(self, _, text) -> str:
return text