diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index fa6a6ab..0a73fed 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -1,12 +1,14 @@ from mistletoe import HtmlRenderer from renderer.comment import Comment +from renderer.tag import Tag from renderer.quote import Quote +from renderer.underline import Underline class FiftyOhmHtmlRenderer(HtmlRenderer): def __init__(self): - super().__init__(Comment, Quote) + super().__init__(Comment, Quote, Underline, Tag) def render_comment(): return None @@ -15,4 +17,7 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): return f"„{self.render_inner(token)}“" def render_underline(self, token): - return f"{self.render_inner(token)}" \ No newline at end of file + return f"{self.render_inner(token)}" + + def render_tag(self, token): + return f'
{self.render_inner(token)}
' \ No newline at end of file diff --git a/renderer/tag.py b/renderer/tag.py new file mode 100644 index 0000000..05d089b --- /dev/null +++ b/renderer/tag.py @@ -0,0 +1,27 @@ +import re + +from mistletoe.block_token import BlockToken, tokenize + + +class Tag(BlockToken): + + @staticmethod + def start(line): + return re.match(r"^\s*<[^>]+>", line) + + @classmethod + def read(cls, lines): + child_lines = [] + first_line = next(lines) + + tagtype = re.match(r"^\s*<([^>]+)>", first_line).group(1) + + for line in lines: + if line.startswith(f""): + break + else : + child_lines.append(line) + return tagtype, tokenize(child_lines) + + def __init__(self, match): + self.tagtype, self.children = match \ No newline at end of file diff --git a/test/test_tag.py b/test/test_tag.py new file mode 100644 index 0000000..57b4bfe --- /dev/null +++ b/test/test_tag.py @@ -0,0 +1,14 @@ +import mistletoe + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer + + +def test_tag_html() : + + assertions = { + "\nFoo\n" : '

Foo

\n', + "\nFoo\n" : '

Foo

\n', + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == assertions[assertion]