from mistletoe import Document from renderer.fifty_ohm_html_renderer import FiftyOhmHtmlRenderer from .slide_break import SlideBreak class FiftyOhmHtmlSlideRenderer(FiftyOhmHtmlRenderer): def __init__( self, question_renderer=None, picture_handler=None, photo_handler=None, include_handler=None ): super().__init__( SlideBreak, question_renderer=question_renderer, picture_handler=picture_handler, photo_handler=photo_handler, include_handler=include_handler, ) def render_wrapper(self, content): content = "---\n" + content return super().render(Document(content)) def render_slide_break(self, token): inner = self.render_inner(token) if token.attribute is None: return f'
\n{inner}\n
\n' if token.attribute == "attention": return f'
\n{inner}\n
\n' elif token.attribute == "danger": return f'
\n{inner}\n
\n' elif token.attribute == "unit": return f'
\n{inner}\n
\n' else: return f'
\n{inner}\n
\n' def render_qso(self, token): qso = '
\n' for child in token.children: direction = "other" if child.received else "own" fade = "fragment fade-left" if child.received else "fragment fade-right" qso += f'
{self.render_inner(child)}
\n' qso += '
\n' return qso def render_tag(self, token): if token.tagtype == "fragment": return f'
\n{self.render_inner(token)}\n
\n' if token.tagtype == "left": return f'
\n{self.render_inner(token)}\n
\n' if token.tagtype == "right": return f'\n' elif token.tagtype == "note": return f'\n' return "" # Ignore other tags in slide context anyway in tokenizer