From d72917335f5166c61ca315495ffe1dce0a462d39 Mon Sep 17 00:00:00 2001 From: Johanna Riedel Date: Sun, 8 Dec 2024 00:54:59 +0100 Subject: [PATCH 1/3] feat: Renderer add interim references with default values --- renderer/fifty_ohm_html_renderer.py | 8 ++++++-- renderer/references.py | 15 +++++++++++++++ test/test_references.py | 16 ++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 renderer/references.py create mode 100644 test/test_references.py diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index fdcf7a9..a591496 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -4,11 +4,12 @@ from renderer.comment import Comment from renderer.quote import Quote from renderer.halfwidth_spaces import HalfwidthSpaces from renderer.nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots +from renderer.references import References class FiftyOhmHtmlRenderer(HtmlRenderer): def __init__(self): - super().__init__(Comment, Quote, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots) + super().__init__(Comment, Quote, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References) def render_comment(): return None @@ -26,4 +27,7 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): return f"{token.first} {token.second}" def render_nonbreaking_spaces_dots(self, token): - return f" {token.first} " \ No newline at end of file + return f" {token.first} " + + def render_references(self, token, dest_id=0, chap_url="DeineMama.html"): + return f"{dest_id}" \ No newline at end of file diff --git a/renderer/references.py b/renderer/references.py new file mode 100644 index 0000000..e8b5f18 --- /dev/null +++ b/renderer/references.py @@ -0,0 +1,15 @@ +import re + +from mistletoe.span_token import SpanToken + + +class References(SpanToken): + """ + Resolve references for html + Identifies "[ref:$]" + """ + pattern = re.compile(r"\[ref\:(\S+)\]") + + def __init__(self, match_object): + self.first = match_object.group(1) + diff --git a/test/test_references.py b/test/test_references.py new file mode 100644 index 0000000..acd35e6 --- /dev/null +++ b/test/test_references.py @@ -0,0 +1,16 @@ +import mistletoe + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from test.util import paragraph + +def test_references_html(): + # Right now this tests only the default values. + # The correct behavior can be tested when the information is added to the renderer class + assertions = { + "[ref:e_oszilloskop_bildschirmfoto_sinus]" : "0", + "[ref:n_rst_r]" : "0", + "[ref:Uuuuuh]" : "0" # Test the default parameters + } + + for key, value in assertions.items(): + assert mistletoe.markdown(key, FiftyOhmHtmlRenderer) == paragraph(value) From 608be5bd09d20f33118c513be9d8fac9e29f06e8 Mon Sep 17 00:00:00 2001 From: Johanna Riedel Date: Sun, 8 Dec 2024 13:20:14 +0100 Subject: [PATCH 2/3] fix: deleted render_references restored --- renderer/fifty_ohm_html_renderer.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 19b6049..804121b 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -16,6 +16,8 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): margin_anchor_id = 0 margin_id = 0 + section_url = "DeineMama.html" + ref_id = 0 def __init__(self): super().__init__(Dash, BlockComment, SpanComment, Quote, Underline, Tag, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References) @@ -101,4 +103,9 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): "" : "", " " : " " } - return f"{lookup[token.first]}{token.second}{lookup[token.third]}" \ No newline at end of file + return f"{lookup[token.first]}{token.second}{lookup[token.third]}" + + def render_references(self, token): + return f"{self.ref_id}" + + From 1334e9c9060f9c17e6cbe0e1fe5ff5d9bd7b84fa Mon Sep 17 00:00:00 2001 From: Tim Grelka Date: Sun, 8 Dec 2024 14:30:04 +0100 Subject: [PATCH 3/3] fix: use quotes for html attributes --- renderer/fifty_ohm_html_renderer.py | 56 +++++++++++++++-------------- test/test_references.py | 9 ++--- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 804121b..be23907 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -13,14 +13,27 @@ from renderer.underline import Underline class FiftyOhmHtmlRenderer(HtmlRenderer): - margin_anchor_id = 0 margin_id = 0 - section_url = "DeineMama.html" + section_url = "section.html" ref_id = 0 def __init__(self): - super().__init__(Dash, BlockComment, SpanComment, Quote, Underline, Tag, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References) + super().__init__( + Dash, + BlockComment, + SpanComment, + Quote, + Underline, + Tag, + HalfwidthSpaces, + NonbreakingSpaces, + NonbreakingSpacesDots, + HalfwidthSpaces, + NonbreakingSpaces, + NonbreakingSpacesDots, + References, + ) def render_dash(self, token): return " – " @@ -43,9 +56,9 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): @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'''\ + """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}
@@ -65,33 +78,29 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): moveFunc(); }})(); - ''') + """) def render_tag(self, token): - if(token.tagtype == "latexonly"): + if token.tagtype == "latexonly": return "" - elif(token.tagtype == "webonly"): + elif token.tagtype == "webonly": return self.render_inner(token) self.margin_id += 1 - if(token.tagtype == "webmargin"): + if token.tagtype == "webmargin": type = "margin" - elif(token.tagtype == "webtipp"): + elif token.tagtype == "webtipp": type = "tipp" - elif(token.tagtype == "webindepth"): + elif token.tagtype == "webindepth": type = "indepth" - else : + else: type = token.tagtype return self.render_tag_helper( - type, - self.render_inner(token), - self.margin_id, - self.margin_anchor_id + type, self.render_inner(token), self.margin_id, self.margin_anchor_id ) - - + def render_halfwidth_spaces(self, token): return f"{token.first}. {token.second}." @@ -99,13 +108,8 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): return f"{token.first} {token.second}" def render_nonbreaking_spaces_dots(self, token): - lookup = { - "" : "", - " " : " " - } + lookup = {"": "", " ": " "} return f"{lookup[token.first]}{token.second}{lookup[token.third]}" def render_references(self, token): - return f"{self.ref_id}" - - + return f'{self.ref_id}' diff --git a/test/test_references.py b/test/test_references.py index acd35e6..80dff9d 100644 --- a/test/test_references.py +++ b/test/test_references.py @@ -3,13 +3,14 @@ import mistletoe from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer from test.util import paragraph + def test_references_html(): - # Right now this tests only the default values. + # Right now this tests only the default values. # The correct behavior can be tested when the information is added to the renderer class assertions = { - "[ref:e_oszilloskop_bildschirmfoto_sinus]" : "0", - "[ref:n_rst_r]" : "0", - "[ref:Uuuuuh]" : "0" # Test the default parameters + "[ref:e_oszilloskop_bildschirmfoto_sinus]": '0', + "[ref:n_rst_r]": '0', + "[ref:Uuuuuh]": '0', # Test the default parameters } for key, value in assertions.items():