feat: Renderer add interim references with default values

This commit is contained in:
Johanna Riedel
2024-12-08 00:54:59 +01:00
parent 5a4e6554c0
commit d72917335f
3 changed files with 37 additions and 2 deletions
+6 -2
View File
@@ -4,11 +4,12 @@ from renderer.comment import Comment
from renderer.quote import Quote from renderer.quote import Quote
from renderer.halfwidth_spaces import HalfwidthSpaces from renderer.halfwidth_spaces import HalfwidthSpaces
from renderer.nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots from renderer.nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots
from renderer.references import References
class FiftyOhmHtmlRenderer(HtmlRenderer): class FiftyOhmHtmlRenderer(HtmlRenderer):
def __init__(self): def __init__(self):
super().__init__(Comment, Quote, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots) super().__init__(Comment, Quote, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References)
def render_comment(): def render_comment():
return None return None
@@ -26,4 +27,7 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
return f"{token.first} {token.second}" return f"{token.first} {token.second}"
def render_nonbreaking_spaces_dots(self, token): def render_nonbreaking_spaces_dots(self, token):
return f" {token.first} " return f" {token.first} "
def render_references(self, token, dest_id=0, chap_url="DeineMama.html"):
return f"<a href=&#34;{chap_url}#ref_{token.first}&#34; onclick=&#34;highlightRef(&#39;{token.first}&#39;);&#34;>{dest_id}</a>"
+15
View File
@@ -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)
+16
View File
@@ -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]" : "<a href=&#34;DeineMama.html#ref_e_oszilloskop_bildschirmfoto_sinus&#34; onclick=&#34;highlightRef(&#39;e_oszilloskop_bildschirmfoto_sinus&#39;);&#34;>0</a>",
"[ref:n_rst_r]" : "<a href=&#34;DeineMama.html#ref_n_rst_r&#34; onclick=&#34;highlightRef(&#39;n_rst_r&#39;);&#34;>0</a>",
"[ref:Uuuuuh]" : "<a href=&#34;DeineMama.html#ref_Uuuuuh&#34; onclick=&#34;highlightRef(&#39;Uuuuuh&#39;);&#34;>0</a>" # Test the default parameters
}
for key, value in assertions.items():
assert mistletoe.markdown(key, FiftyOhmHtmlRenderer) == paragraph(value)