From 57ad1a02f119e81d44141c7f4960574132f392c4 Mon Sep 17 00:00:00 2001 From: Botond Hende Date: Sun, 22 Sep 2024 14:29:14 +0200 Subject: fake html tag --- fakehtmltag.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 fakehtmltag.py (limited to 'fakehtmltag.py') diff --git a/fakehtmltag.py b/fakehtmltag.py new file mode 100644 index 0000000..4a7dfa4 --- /dev/null +++ b/fakehtmltag.py @@ -0,0 +1,31 @@ +""" +Encapsulates text in a fake html tag that is colored (class="cyan" and class="yellow") and has a "nobr" class for no wrapping. +These all can be styled in css. + +Usage: +{{my_fake_html_tag}}content{{}} +""" +from marko import inline +from marko.helpers import MarkoExtension + + +class FakeHtmlElement(inline.InlineElement): + pattern = '{{(.*)}}(.*){{}}' + parse_children = True + parse_group = 2 + + def __init__(self, match): + self.tag = match.group(1) + self.content = match.group(2) + + + +class FakeHtmlRenderer: + def render_fake_html_element(self, element: FakeHtmlElement): + return f'<{element.tag}>{self.render_children(element)}</{element.tag}>' + + +FakeHtml = MarkoExtension( + elements=[FakeHtmlElement], + renderer_mixins=[FakeHtmlRenderer] +) -- cgit v1.2.3-70-g09d2