Merge branch 'main' into feature/unit-html-renderer

This commit is contained in:
Tim Grelka
2024-12-08 11:35:37 +01:00
4 changed files with 137 additions and 5 deletions
+60 -3
View File
@@ -1,9 +1,12 @@
import textwrap
from mistletoe import HtmlRenderer
from .comment import Comment
from .unit import Unit
from .quote import Quote
from .tag import Tag
from .underline import Underline
from .unit import Unit
units = {
"A": "A",
@@ -38,8 +41,11 @@ no_space_units = ["°", "%"]
class FiftyOhmHtmlRenderer(HtmlRenderer):
margin_anchor_id = 0
margin_id = 0
def __init__(self):
super().__init__(Comment, Unit, Quote)
super().__init__(Comment, Unit, Quote, Underline, Tag)
def render_comment():
return None
@@ -57,3 +63,54 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
return f"{token.value}{unit}"
else:
return f"{token.value} {unit}"
def render_thematic_break(self, token):
self.margin_anchor_id += 1
return f'<a id="margin_{self.margin_anchor_id}"></a>'
@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"""\
<div class="margin {type}" id="margin_for_{margin_id}">
{content}
</div>
<a id="margin_orig_{margin_id}"></a>
<script>
(() => {{
function moveFunc() {{
const targetEl = document.getElementById(
window.innerWidth > 800 ? "margin_{margin_anchor_id}" : "margin_orig_{margin_id}"
);
targetEl.parentNode.insertBefore(
document.getElementById("margin_for_{margin_id}"),
targetEl
);
}}
addEventListener("resize", moveFunc);
moveFunc();
}})();
</script>
""")
def render_tag(self, token):
if token.tagtype == "latexonly":
return ""
elif token.tagtype == "webonly":
return self.render_inner(token)
self.margin_id += 1
if token.tagtype == "webmargin":
type = "margin"
elif token.tagtype == "webtip":
type = "tipp"
elif token.tagtype == "webindepth":
type = "indepth"
else:
type = token.tagtype
return self.render_tag_helper(
type, self.render_inner(token), self.margin_id, self.margin_anchor_id
)