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]