From de782b53766ff58e613716848544f3bcb5ae888a Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sat, 7 Dec 2024 22:36:25 +0100 Subject: [PATCH] feature: added thematic break and all tags --- renderer/fifty_ohm_html_renderer.py | 59 ++++++++++++++++++++++++++++- test/test_tag.py | 35 ++++++++++++++--- 2 files changed, 88 insertions(+), 6 deletions(-) diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 0a73fed..0695e89 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -1,4 +1,5 @@ from mistletoe import HtmlRenderer +import textwrap from renderer.comment import Comment from renderer.tag import Tag @@ -7,6 +8,10 @@ from renderer.underline import Underline class FiftyOhmHtmlRenderer(HtmlRenderer): + + margin_anchor_id = 0 + margin_id = 0 + def __init__(self): super().__init__(Comment, Quote, Underline, Tag) @@ -19,5 +24,57 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): def render_underline(self, token): return f"{self.render_inner(token)}" + def render_thematic_break(self, token): + self.margin_anchor_id += 1 + return f'' + + @staticmethod + def render_tag_helper(type, content, margin_id, margin_anchor_id): + """ This function is used to render the different types of tags. It is + used in the HtmlRenderer class and also in the test class """ + return textwrap.dedent(f'''\ +
+ {content} +
+ + + ''') + def render_tag(self, token): - return f'
{self.render_inner(token)}
' \ No newline at end of file + if(token.tagtype == "latexonly"): + return "" + elif(token.tagtype == "webonly"): + return self.render_inner(token) + + self.margin_id += 1 + + if(token.tagtype == "webmargin"): + type = "margin" + elif(token.tagtype == "webtip"): + type = "tipp" + elif(token.tagtype == "webindepth"): + type = "indepth" + else : + type = token.tagtype + + return self.render_tag_helper( + type, + self.render_inner(token), + self.margin_id, + self.margin_anchor_id + ) + \ No newline at end of file diff --git a/test/test_tag.py b/test/test_tag.py index 57b4bfe..7843bff 100644 --- a/test/test_tag.py +++ b/test/test_tag.py @@ -2,13 +2,38 @@ import mistletoe from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer - -def test_tag_html() : - +def test_thematic_break_html() : assertions = { - "\nFoo\n" : '

Foo

\n', - "\nFoo\n" : '

Foo

\n', + "---" : '\n', + "---\n---" : '\n\n', } for assertion in assertions: assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == assertions[assertion] + +def test_tag_html() : + + assertions = { + "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",1,0)+'\n', + "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("indepth","

Foo

",1,0)+'\n', + "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",1,0)+'\n', + "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("tipp","

Foo

",1,1)+'\n', + "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("webtipp","

Foo

",1,0)+'\n', + "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("indepth","

Foo

",1,0)+'\n', + "\nFoo\n" : '

Foo

\n', + "\nFoo\n" : "", + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == assertions[assertion] + +def test_thematic_break_and_tag_html() : + + assertions = { + "---\n\nFoo\n" : '\n'+FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",1,1)+'\n', + "---\n\nFoo\n\n\nFoo\n" : '\n'+FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",1,1)+'\n'+FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",2,1)+'\n', + "---\n\nFoo\n\n---\n\nFoo\n" : '\n'+FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",1,1)+'\n\n'+FiftyOhmHtmlRenderer.render_tag_helper("margin","

Foo

",2,2)+'\n', + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == assertions[assertion] \ No newline at end of file