diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 3632908..9400552 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -1,12 +1,15 @@ from mistletoe import HtmlRenderer from renderer.comment import Comment +from renderer.quote import Quote class FiftyOhmHtmlRenderer(HtmlRenderer): def __init__(self): - super().__init__(Comment) + super().__init__(Comment, Quote) def render_comment(): return None + def render_quote(self, token): + return f"„{self.render_inner(token)}“" \ No newline at end of file diff --git a/renderer/quote.py b/renderer/quote.py new file mode 100644 index 0000000..01a381b --- /dev/null +++ b/renderer/quote.py @@ -0,0 +1,11 @@ +import re + +from mistletoe.span_token import SpanToken + + +class Quote(SpanToken): + """ + Quote span token ("Eiersalat"). + Identifies quoted text. + """ + pattern = re.compile(r'"([^"]+)"') diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_quote.py b/test/test_quote.py new file mode 100644 index 0000000..e660c7b --- /dev/null +++ b/test/test_quote.py @@ -0,0 +1,19 @@ +import mistletoe + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from test.util import paragraph + + +def test_quote_html() : + + assertions = { + '"quote"' : '„quote“', + '" quote "' : '„ quote “', + '"quote" "' : '„quote“ "', + '"quo te1" filltext "qu ot e2"' : '„quo te1“ filltext „qu ot e2“', + '"quo *te1*" filltext "qu ot e2"' : '„quo te1“ filltext „qu ot e2“', + '""' : '""', + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == paragraph(assertions[assertion]) diff --git a/test/util.py b/test/util.py new file mode 100644 index 0000000..f30aa79 --- /dev/null +++ b/test/util.py @@ -0,0 +1,2 @@ +def paragraph(text) : + return f'

{text}

\n' \ No newline at end of file