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"{tagtype}>"):
+ 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" : '\n',
+ "\nFoo\n" : '\n',
+ }
+
+ for assertion in assertions:
+ assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == assertions[assertion]