Merge branch 'main' into feature/morse-new
This commit is contained in:
@@ -8,14 +8,17 @@ from renderer.halfwidth_spaces import HalfwidthSpaces
|
||||
from renderer.morse import Morse
|
||||
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
|
||||
from renderer.unit import Unit
|
||||
|
||||
|
||||
class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
|
||||
margin_anchor_id = 0
|
||||
margin_id = 0
|
||||
section_url = "section.html"
|
||||
ref_id = 0
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
@@ -23,12 +26,14 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
BlockComment,
|
||||
SpanComment,
|
||||
Quote,
|
||||
Unit,
|
||||
Underline,
|
||||
Morse,
|
||||
Tag,
|
||||
HalfwidthSpaces,
|
||||
NonbreakingSpaces,
|
||||
NonbreakingSpacesDots,
|
||||
References,
|
||||
)
|
||||
|
||||
def render_dash(self, token):
|
||||
@@ -46,6 +51,31 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
def render_underline(self, token):
|
||||
return f"<u>{self.render_inner(token)}</u>"
|
||||
|
||||
@classmethod
|
||||
def render_unit(cls, token: Unit):
|
||||
unit = token.prefix + cls.convert_unit_helper(token.unit)
|
||||
if token.unit in ["°", "%"]:
|
||||
# Special cases with no space between value and unit.
|
||||
return f"{token.value}{unit}"
|
||||
else:
|
||||
# Default case is rendered with a narrow no-break space.
|
||||
return f"{token.value} {unit}"
|
||||
|
||||
units = {
|
||||
"Ohm": "Ω",
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def convert_unit_helper(cls, unit: str) -> str:
|
||||
"""Converts human-typable units to their preferred representation.
|
||||
|
||||
:param str unit: The unit to convert
|
||||
"""
|
||||
if unit in cls.units.keys():
|
||||
return cls.units[unit]
|
||||
else:
|
||||
return unit
|
||||
|
||||
def render_thematic_break(self, token):
|
||||
self.margin_anchor_id += 1
|
||||
return f'<a id="margin_{self.margin_anchor_id}"></a>'
|
||||
@@ -58,15 +88,15 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
for symbol in char:
|
||||
result += '<span class="morse_char">\n'
|
||||
if symbol == 1:
|
||||
result += '▄'
|
||||
result += "▄"
|
||||
elif symbol == 2:
|
||||
result += '▄▄▄'
|
||||
result += "▄▄▄"
|
||||
elif symbol == 3:
|
||||
result += ' '
|
||||
result += '</span>\n'
|
||||
result += '</span>\n'
|
||||
result += '</span>'
|
||||
|
||||
result += " "
|
||||
result += "</span>\n"
|
||||
result += "</span>\n"
|
||||
result += "</span>"
|
||||
|
||||
return result
|
||||
|
||||
def render_morse(self, token):
|
||||
@@ -75,9 +105,9 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
|
||||
@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'''\
|
||||
"""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>
|
||||
@@ -97,33 +127,29 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
moveFunc();
|
||||
}})();
|
||||
</script>
|
||||
''')
|
||||
""")
|
||||
|
||||
def render_tag(self, token):
|
||||
if(token.tagtype == "latexonly"):
|
||||
if token.tagtype == "latexonly":
|
||||
return ""
|
||||
elif(token.tagtype == "webonly"):
|
||||
elif token.tagtype == "webonly":
|
||||
return self.render_inner(token)
|
||||
|
||||
self.margin_id += 1
|
||||
|
||||
if(token.tagtype == "webmargin"):
|
||||
if token.tagtype == "webmargin":
|
||||
type = "margin"
|
||||
elif(token.tagtype == "webtipp"):
|
||||
type = "tipp"
|
||||
elif(token.tagtype == "webindepth"):
|
||||
elif token.tagtype == "webtip":
|
||||
type = "tip"
|
||||
elif token.tagtype == "webindepth":
|
||||
type = "indepth"
|
||||
else :
|
||||
else:
|
||||
type = token.tagtype
|
||||
|
||||
return self.render_tag_helper(
|
||||
type,
|
||||
self.render_inner(token),
|
||||
self.margin_id,
|
||||
self.margin_anchor_id
|
||||
type, self.render_inner(token), self.margin_id, self.margin_anchor_id
|
||||
)
|
||||
|
||||
|
||||
|
||||
def render_halfwidth_spaces(self, token):
|
||||
return f"{token.first}. {token.second}."
|
||||
|
||||
@@ -131,8 +157,8 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
|
||||
return f"{token.first} {token.second}"
|
||||
|
||||
def render_nonbreaking_spaces_dots(self, token):
|
||||
lookup = {
|
||||
"" : "",
|
||||
" " : " "
|
||||
}
|
||||
return f"{lookup[token.first]}{token.second}{lookup[token.third]}"
|
||||
lookup = {"": "", " ": " "}
|
||||
return f"{lookup[token.first]}{token.second}{lookup[token.third]}"
|
||||
|
||||
def render_references(self, token):
|
||||
return f'<a href="{self.section_url}#ref_{token.first}" onclick="highlightRef(\'{token.first}\');">{self.ref_id}</a>'
|
||||
|
||||
Reference in New Issue
Block a user