diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 9dea785..9051e3c 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -2,13 +2,13 @@ import textwrap from mistletoe import Document, HtmlRenderer -from renderer.picture import Picture - from .comment import BlockComment from .dash import Dash from .halfwidth_spaces import HalfwidthSpaces from .morse import Morse from .nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots +from .photo import Photo +from .picture import Picture from .question import Question from .quote import Quote from .references import References @@ -37,7 +37,8 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): NonbreakingSpacesDots, References, Question, - Picture + Picture, + Photo ) self.question_renderer = question_renderer @@ -176,10 +177,22 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): def render_picture_helper(id, ref, text, number): return f"""
- +
Abbildung {number}: {text}
""" def render_picture(self, token) : - return self.render_picture_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file + return self.render_picture_helper(token.id, token.ref, token.text, token.number) + + @staticmethod + def render_photo_helper(id, ref, text, number): + return f""" +
+ +
Abbildung {number}: {text}
+
+ """ + + def render_photo(self, token) : + return self.render_photo_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file diff --git a/renderer/fifty_ohm_latex_renderer.py b/renderer/fifty_ohm_latex_renderer.py index 94f5725..fe242c4 100644 --- a/renderer/fifty_ohm_latex_renderer.py +++ b/renderer/fifty_ohm_latex_renderer.py @@ -1,11 +1,11 @@ from mistletoe.latex_renderer import LaTeXRenderer -from renderer.picture import Picture - from .comment import BlockComment from .dash import Dash from .halfwidth_spaces import HalfwidthSpaces from .nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots +from .photo import Photo +from .picture import Picture from .question import Question from .quote import Quote from .tag import Tag @@ -24,7 +24,8 @@ class FiftyOhmLaTeXRenderer(LaTeXRenderer): NonbreakingSpaces, NonbreakingSpacesDots, Question, - Picture + Picture, + Photo ) self.question_renderer = question_renderer @@ -103,4 +104,13 @@ class FiftyOhmLaTeXRenderer(LaTeXRenderer): \label{{{ref}}}""" def render_picture(self, token) : - return self.render_picture_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file + return self.render_picture_helper(token.id, token.ref, token.text, token.number) + + @staticmethod + def render_photo_helper(id, ref, text, number): + return rf"""\includegraphics[width=1.0\linewidth]{{photo/{id}}} +\captionof{{figure}}{{{text}}} +\label{{{ref}}}""" + + def render_photo(self, token) : + return self.render_photo_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file diff --git a/renderer/photo.py b/renderer/photo.py new file mode 100644 index 0000000..c167887 --- /dev/null +++ b/renderer/photo.py @@ -0,0 +1,19 @@ +import re + +from mistletoe.span_token import SpanToken + + +class Photo(SpanToken): + """ + Span token for photos. + Example: [photo:123:n_wasserfalldiagramm_trx_collage:Ansichten verschiedener Transceiver] + """ + + parse_inner = False + pattern = re.compile(r"\[photo:(\d+):([^:\]]+):([^:\]]+)\]") + + def __init__(self, match_object): + self.id = match_object.group(1) + self.ref = match_object.group(2) + self.text = match_object.group(3) + self.number = "TODO" \ No newline at end of file diff --git a/test/test_photo.py b/test/test_photo.py new file mode 100644 index 0000000..6e0c042 --- /dev/null +++ b/test/test_photo.py @@ -0,0 +1,26 @@ +import mistletoe +import pytest + +from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer +from renderer.fifty_ohm_latex_renderer import FiftyOhmLaTeXRenderer +from test.util import paragraph + + +@pytest.mark.html +def test_photo_html(): + assertions = { + "[photo:123:abc:Text]": FiftyOhmHtmlRenderer.render_photo_helper("123", "abc", "Text", "TODO"), + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmHtmlRenderer) == paragraph(assertions[assertion]) + + +@pytest.mark.latex +def test_photo_latex(): + assertions = { + "[photo:123:abc:Text]": FiftyOhmLaTeXRenderer.render_photo_helper("123", "abc", "Text", "TODO"), + } + + for assertion in assertions: + assert mistletoe.markdown(assertion, FiftyOhmLaTeXRenderer) == "\n" + assertions[assertion] + "\n"