From 5a4e6554c0c9f79477a430ae565805db9b273da0 Mon Sep 17 00:00:00 2001 From: Johanna Riedel Date: Sat, 7 Dec 2024 17:26:14 +0100 Subject: [PATCH 01/15] feat: Renderer add nonbreakable spaces and halfwidth spaces --- renderer/fifty_ohm_html_renderer.py | 15 ++++++++++++-- renderer/halfwidth_spaces.py | 18 +++++++++++++++++ renderer/nonbreaking_spaces.py | 25 +++++++++++++++++++++++ test/test_halfwidth_spaces.py | 10 ++++++++++ test/test_nonbreaking_spaces.py | 31 +++++++++++++++++++++++++++++ 5 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 renderer/halfwidth_spaces.py create mode 100644 renderer/nonbreaking_spaces.py create mode 100644 test/test_halfwidth_spaces.py create mode 100644 test/test_nonbreaking_spaces.py diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index fa6a6ab..fdcf7a9 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -2,11 +2,13 @@ from mistletoe import HtmlRenderer from renderer.comment import Comment from renderer.quote import Quote +from renderer.halfwidth_spaces import HalfwidthSpaces +from renderer.nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots class FiftyOhmHtmlRenderer(HtmlRenderer): def __init__(self): - super().__init__(Comment, Quote) + super().__init__(Comment, Quote, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots) def render_comment(): return None @@ -15,4 +17,13 @@ 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_halfwidth_spaces(self, token): + return f"{token.first}. {token.second}." + + def render_nonbreaking_spaces(self, token): + return f"{token.first} {token.second}" + + def render_nonbreaking_spaces_dots(self, token): + return f" {token.first} " \ No newline at end of file diff --git a/renderer/halfwidth_spaces.py b/renderer/halfwidth_spaces.py new file mode 100644 index 0000000..f9daf9b --- /dev/null +++ b/renderer/halfwidth_spaces.py @@ -0,0 +1,18 @@ +import re + +from mistletoe.span_token import SpanToken + + +class HalfwidthSpaces(SpanToken): + """ + Insert halfwidth space into span token (Z. B.) + Identifies "z.B.", "d.h." and "D.h." with and without space in between. + """ + pattern = re.compile(r"\b(z|d|D)\.(B|h)\.") + + def __init__(self, match_object): + self.first = match_object.group(1) + self.second = match_object.group(2) + + + diff --git a/renderer/nonbreaking_spaces.py b/renderer/nonbreaking_spaces.py new file mode 100644 index 0000000..d800b10 --- /dev/null +++ b/renderer/nonbreaking_spaces.py @@ -0,0 +1,25 @@ +import re + +from mistletoe.span_token import SpanToken + + +class NonbreakingSpaces(SpanToken): + """ + Insert unbreakable space into span token (§ 3) + Identifies "§$number", "Abs.$number", "Klasse [A,E,N]" w/ and w\ space between. + Identifies "..." with and without leading and trailing space + """ + pattern = re.compile(r"(§|Abs\.|Klasse)\s?(\d|[NEA])") + + def __init__(self, match_object): + self.first = match_object.group(1) + self.second = match_object.group(2) + +class NonbreakingSpacesDots(SpanToken): + pattern = re.compile(r"\s?(\.\.\.)\s?") + + def __init__(self, match_object): + self.first = match_object.group(1) + + + diff --git a/test/test_halfwidth_spaces.py b/test/test_halfwidth_spaces.py new file mode 100644 index 0000000..0438674 --- /dev/null +++ b/test/test_halfwidth_spaces.py @@ -0,0 +1,10 @@ +import mistletoe + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from test.util import paragraph + +def test_halfwidth_space_html(): + input = "Dies ist z.B. ein Test. D.h. hier sollten d.h. Spaces ersetzt worden sein." + target = "Dies ist z. B. ein Test. D. h. hier sollten d. h. Spaces ersetzt worden sein." + + assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) diff --git a/test/test_nonbreaking_spaces.py b/test/test_nonbreaking_spaces.py new file mode 100644 index 0000000..0d6c3cc --- /dev/null +++ b/test/test_nonbreaking_spaces.py @@ -0,0 +1,31 @@ +import mistletoe + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from test.util import paragraph + +def test_paragraph_html(): + input = "Der Test befindet sich unter §2 vielleicht aber auch § 3." + target = "Der Test befindet sich unter § 2 vielleicht aber auch § 3." + + assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) + +def test_three_points_html(): + input = "Heute hatte ich ... zum Mittagessen." + target = "Heute hatte ich ... zum Mittagessen." + + assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) + + +def test_absatz_html(): + input = "Der Test befindet sich unter Abs.2 vielleicht aber auch Abs. 3." + target = "Der Test befindet sich unter Abs. 2 vielleicht aber auch Abs. 3." + + assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) + +def test_class_html(): + input = "Ich lerne für Klasse A, Klasse E und Klasse N." + target = "Ich lerne für Klasse A, Klasse E und Klasse N." + + assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) + + From f908a75c2e7f4de2ccfe8530e8bb7cc33820e7cc Mon Sep 17 00:00:00 2001 From: Johanna Riedel Date: Sun, 8 Dec 2024 00:13:02 +0100 Subject: [PATCH 02/15] refactor: Fixed desired ... handling and more tests --- renderer/fifty_ohm_html_renderer.py | 6 +++++- renderer/nonbreaking_spaces.py | 9 +++++++-- test/test_nonbreaking_spaces.py | 11 ++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index fdcf7a9..9a3136d 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -26,4 +26,8 @@ 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 + lookup = { + "" : "", + " " : " " + } + return f"{lookup[token.first]}{token.second}{lookup[token.third]}" \ No newline at end of file diff --git a/renderer/nonbreaking_spaces.py b/renderer/nonbreaking_spaces.py index d800b10..932653f 100644 --- a/renderer/nonbreaking_spaces.py +++ b/renderer/nonbreaking_spaces.py @@ -7,7 +7,6 @@ class NonbreakingSpaces(SpanToken): """ Insert unbreakable space into span token (§ 3) Identifies "§$number", "Abs.$number", "Klasse [A,E,N]" w/ and w\ space between. - Identifies "..." with and without leading and trailing space """ pattern = re.compile(r"(§|Abs\.|Klasse)\s?(\d|[NEA])") @@ -16,10 +15,16 @@ class NonbreakingSpaces(SpanToken): self.second = match_object.group(2) class NonbreakingSpacesDots(SpanToken): - pattern = re.compile(r"\s?(\.\.\.)\s?") + """ + Insert unbreakable space before and after "..." if there is a space + Identifies "..." with leading and/or trailing space + """ + pattern = re.compile(r"(\s?)(\.\.\.)(\s?)") def __init__(self, match_object): self.first = match_object.group(1) + self.second = match_object.group(2) + self.third = match_object.group(3) diff --git a/test/test_nonbreaking_spaces.py b/test/test_nonbreaking_spaces.py index 0d6c3cc..88fb8cb 100644 --- a/test/test_nonbreaking_spaces.py +++ b/test/test_nonbreaking_spaces.py @@ -10,10 +10,15 @@ def test_paragraph_html(): assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) def test_three_points_html(): - input = "Heute hatte ich ... zum Mittagessen." - target = "Heute hatte ich ... zum Mittagessen." + assertions = { + "Heute hatte ich ... zum Mittagessen." : "Heute hatte ich ... zum Mittagessen.", + "Niemals hätte ich gedacht, dass...ich ...nicht kann." : "Niemals hätte ich gedacht, dass...ich ...nicht kann.", + "Oh nein ...ein Pinguin." : "Oh nein ...ein Pinguin.", + "Haha .. . Hahaha" : "Haha .. . Hahaha" + } - assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target) + for key, value in assertions.items(): + assert mistletoe.markdown(key, FiftyOhmHtmlRenderer) == paragraph(value) def test_absatz_html(): From d72917335f5166c61ca315495ffe1dce0a462d39 Mon Sep 17 00:00:00 2001 From: Johanna Riedel Date: Sun, 8 Dec 2024 00:54:59 +0100 Subject: [PATCH 03/15] 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 746f18e735d9dd105de080092c565c9fe4a8f43f Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:13:26 +0100 Subject: [PATCH 04/15] fix: Fixed bug that tag detects --- renderer/tag.py | 14 +++++++++++++- test/test_tag.py | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/renderer/tag.py b/renderer/tag.py index 05d089b..6bdc187 100644 --- a/renderer/tag.py +++ b/renderer/tag.py @@ -2,12 +2,24 @@ import re from mistletoe.block_token import BlockToken, tokenize +captures = [ + "margin", + "indepth", + "webmargin", + "tipp", + "webtipp", + "webindepth", + "unit", + "danger", + "webonly", + "latexonly", +] class Tag(BlockToken): @staticmethod def start(line): - return re.match(r"^\s*<[^>]+>", line) + return re.match(r"^\s*<("+"|".join(captures)+r")+>", line) @classmethod def read(cls, lines): diff --git a/test/test_tag.py b/test/test_tag.py index ba6ab95..967e8f3 100644 --- a/test/test_tag.py +++ b/test/test_tag.py @@ -18,7 +18,7 @@ def test_tag_html() : "\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,0)+'\n', - "\nFoo\n" : FiftyOhmHtmlRenderer.render_tag_helper("webtipp","

Foo

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

Foo

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

Foo

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

Foo

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

Foo

",1,0)+'\n', From bedab8faa8d855b0fa4a15228db535c2fe508ceb Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:14:10 +0100 Subject: [PATCH 05/15] feature: add dash renderer --- renderer/dash.py | 11 +++++++++++ test/test_dash.py | 14 ++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 renderer/dash.py create mode 100644 test/test_dash.py diff --git a/renderer/dash.py b/renderer/dash.py new file mode 100644 index 0000000..10f80a2 --- /dev/null +++ b/renderer/dash.py @@ -0,0 +1,11 @@ +import re + +from mistletoe.span_token import SpanToken + + +class Dash(SpanToken): + """ + Dash span token ( - ). + Identifies a dash in a text. + """ + pattern = re.compile(r'(\s-\s)') diff --git a/test/test_dash.py b/test/test_dash.py new file mode 100644 index 0000000..2289b0c --- /dev/null +++ b/test/test_dash.py @@ -0,0 +1,14 @@ +import mistletoe + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from test.util import paragraph + + +def test_dash_html() : + + assertions = { + "Foo - Bar" : "Foo – Bar", + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == paragraph(assertions[assertion]) From bc53eb0f9e9a11fe0b3d9057649596125b5053a7 Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:14:35 +0100 Subject: [PATCH 06/15] feature: add comment test --- renderer/comment.py | 12 +++++++++++- renderer/fifty_ohm_html_renderer.py | 22 +++++++++++++++------- test/test_comment.py | 20 ++++++++++++++++++++ 3 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 test/test_comment.py diff --git a/renderer/comment.py b/renderer/comment.py index cd4ff6f..52fff45 100644 --- a/renderer/comment.py +++ b/renderer/comment.py @@ -1,7 +1,17 @@ +import re + from mistletoe.block_token import BlockToken +from mistletoe.span_token import SpanToken -class Comment(BlockToken): +class SpanComment(SpanToken): + """ + Coment span token (% Eiersalat). + Identifies a comment in text. + """ + pattern = re.compile(r'(%.*\n?)') + +class BlockComment(BlockToken): @staticmethod def start(line): return line.startswith("%") diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 0695e89..e48d73c 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -1,9 +1,11 @@ -from mistletoe import HtmlRenderer import textwrap -from renderer.comment import Comment -from renderer.tag import Tag +from mistletoe import HtmlRenderer + +from renderer.comment import BlockComment, SpanComment +from renderer.dash import Dash from renderer.quote import Quote +from renderer.tag import Tag from renderer.underline import Underline @@ -13,10 +15,16 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): margin_id = 0 def __init__(self): - super().__init__(Comment, Quote, Underline, Tag) + super().__init__(Dash, BlockComment, SpanComment, Quote, Underline, Tag) - def render_comment(): - return None + def render_dash(self, token): + return " – " + + def render_block_comment(self, token): + return "a" + + def render_span_comment(self, token): + return "" def render_quote(self, token): return f"„{self.render_inner(token)}“" @@ -64,7 +72,7 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): if(token.tagtype == "webmargin"): type = "margin" - elif(token.tagtype == "webtip"): + elif(token.tagtype == "webtipp"): type = "tipp" elif(token.tagtype == "webindepth"): type = "indepth" diff --git a/test/test_comment.py b/test/test_comment.py new file mode 100644 index 0000000..9abf3ce --- /dev/null +++ b/test/test_comment.py @@ -0,0 +1,20 @@ +import mistletoe +import pytest +from mistletoe.ast_renderer import AstRenderer + +from renderer.comment import BlockComment, SpanComment +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from test.util import paragraph + + +def test_comment_html(capsys) : + + assertions = { + "%Comment\nBar" : "

Bar

\n", + # TODO: This test is not working as expected. The comment should be removed + #"%Comment\n" : "a", + "Foo\n%Comment\nBar" : "

Foo\nBar

\n", + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == assertions[assertion] From ca0c223cdcaab044cff60b2201e3cf9499ee5f73 Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:35:57 +0100 Subject: [PATCH 07/15] feature: add requirements.txt --- requirements.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..fa39cef --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +coverage==7.6.9 +iniconfig==2.0.0 +mistletoe==1.4.0 +packaging==24.2 +pluggy==1.5.0 +pytest==8.3.4 +pytest-cov==6.0.0 From d4db6a3353a1ae1c51235946a2d4bbbee1e59d45 Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:36:13 +0100 Subject: [PATCH 08/15] feature: add drone-ci config --- .drone.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..01ba815 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,13 @@ +kind: pipeline +type: docker +name: default + +steps: +- name: 50ohm.de + image: debian:latest + environment: + commands: + - apt-get update && apt-get install -qyf --no-install-recommends python3 + - curl -LsSf https://astral.sh/uv/install.sh | sh + - pip install --break-system-packages `cat requirements.txt` + - cd test && pytest \ No newline at end of file From c92fc10167a7cc4e43698daf82b8ac73ba5d88c2 Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:44:51 +0100 Subject: [PATCH 09/15] bugfix: fix pipeline --- .drone.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.drone.yml b/.drone.yml index 01ba815..b91381f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,10 +4,8 @@ name: default steps: - name: 50ohm.de - image: debian:latest + image: ghcr.io/astral-sh/uv:python3.12-bookworm environment: commands: - - apt-get update && apt-get install -qyf --no-install-recommends python3 - - curl -LsSf https://astral.sh/uv/install.sh | sh - - pip install --break-system-packages `cat requirements.txt` + - uv pip install --break-system-packages `cat requirements.txt` - cd test && pytest \ No newline at end of file From e7f9ee9e15c0605ad25678bc52c1ba21ace0db2a Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:46:33 +0100 Subject: [PATCH 10/15] bugfix: fix --system flag --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index b91381f..cb2c401 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,5 +7,5 @@ steps: image: ghcr.io/astral-sh/uv:python3.12-bookworm environment: commands: - - uv pip install --break-system-packages `cat requirements.txt` + - uv pip install --system --break-system-packages `cat requirements.txt` - cd test && pytest \ No newline at end of file From a5102f64af864fef282b2b8904d389a85c6fbe6f Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Sun, 8 Dec 2024 10:53:42 +0100 Subject: [PATCH 11/15] feature: add test reporting --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index cb2c401..628225d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,4 +8,4 @@ steps: environment: commands: - uv pip install --system --break-system-packages `cat requirements.txt` - - cd test && pytest \ No newline at end of file + - cd test && pytest --junitxml=./test-reports/junit.xml From 4238b70cf8d1fda8b85630fbcc2f1fb3f31f7cb4 Mon Sep 17 00:00:00 2001 From: Tim Grelka DA2TG Date: Sun, 8 Dec 2024 10:46:43 +0000 Subject: [PATCH 12/15] Angewendeter Vorschlag --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 628225d..2dc868f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,5 +7,5 @@ steps: image: ghcr.io/astral-sh/uv:python3.12-bookworm environment: commands: - - uv pip install --system --break-system-packages `cat requirements.txt` + - uv pip install --system --break-system-packages --requirements requirements.txt - cd test && pytest --junitxml=./test-reports/junit.xml From 060e2de215d70a5eba53371c8fed99daf3fc2166 Mon Sep 17 00:00:00 2001 From: Tim Grelka DA2TG Date: Sun, 8 Dec 2024 10:47:56 +0000 Subject: [PATCH 13/15] Angewendeter Vorschlag --- renderer/fifty_ohm_html_renderer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index e48d73c..5fe08fe 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -21,7 +21,7 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): return " – " def render_block_comment(self, token): - return "a" + return "" def render_span_comment(self, token): return "" From 608be5bd09d20f33118c513be9d8fac9e29f06e8 Mon Sep 17 00:00:00 2001 From: Johanna Riedel Date: Sun, 8 Dec 2024 13:20:14 +0100 Subject: [PATCH 14/15] 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 15/15] 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():