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 diff --git a/.vscode/settings.json b/.vscode/settings.json index 3e99ede..1bb72f5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,14 @@ { "python.testing.pytestArgs": [ - "." + ".", + "-vv" ], "python.testing.unittestEnabled": false, - "python.testing.pytestEnabled": true + "python.testing.pytestEnabled": true, + "[python]": { + "editor.codeActionsOnSave": { + "source.fixAll.ruff": "explicit", + "source.organizeImports.ruff": "explicit" + } + } } \ No newline at end of file diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index a591496..94bf448 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -1,15 +1,23 @@ +import textwrap + 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 +from renderer.quote import Quote from renderer.references import References +from renderer.tag import Tag +from renderer.underline import Underline class FiftyOhmHtmlRenderer(HtmlRenderer): + + margin_anchor_id = 0 + margin_id = 0 + def __init__(self): - super().__init__(Comment, Quote, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References) + super().__init__(Comment, Quote, Underline, Tag, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References) def render_comment(): return None @@ -19,6 +27,61 @@ 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'''\ +
Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
",1,0)+'\n', + "Foo
\n', + "Foo
",1,1)+'\n', + "---\nFoo
",1,1)+'\n'+FiftyOhmHtmlRenderer.render_tag_helper("margin","Foo
",2,1)+'\n', + "---\nFoo
",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