import textwrap from mistletoe import HtmlRenderer from renderer.comment import BlockComment, SpanComment from renderer.dash import Dash from renderer.halfwidth_spaces import HalfwidthSpaces 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__( Dash, BlockComment, SpanComment, Quote, Unit, Underline, Tag, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, HalfwidthSpaces, NonbreakingSpaces, NonbreakingSpacesDots, References, ) def render_dash(self, token): return " – " def render_block_comment(self, token): return "" def render_span_comment(self, token): return "" def render_quote(self, token): return f"„{self.render_inner(token)}“" def render_underline(self, token): return f"{self.render_inner(token)}" @classmethod def render_unit(cls, token): unit = token.prefix + cls.format_unit(token.unit) if token.unit in ["°", "%"]: return f"{token.value}{unit}" else: return f"{token.value} {unit}" units = { "Ohm": "Ω", } @classmethod def format_unit(cls, unit): 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'' @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"""\