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 +++++++++++++++++++++++++++++++ quote.py | 4 ++-- 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 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] +) diff --git a/quote.py b/quote.py index 56ae0bc..0ec02dc 100644 --- a/quote.py +++ b/quote.py @@ -16,7 +16,7 @@ class QuoteElement(inline.InlineElement): parse_children = True def __init__(self, match): - self.quote = match.group(1) + self.children = match.group(1) self.source = match.group(2) if match.group(2) is not None and not match.group(2).isspace() else None @@ -24,7 +24,7 @@ class QuoteElement(inline.InlineElement): class QuoteRenderer: def render_quote_element(self, element: QuoteElement): source = f'

-- {element.source}

' if element.source is not None else '' - return f'

"

{element.quote}

"

{source}
' + return f'

"

{self.render_children(element)}

"

{source}
' Quote = MarkoExtension( -- cgit v1.2.3-70-g09d2