Path:
strictdoc/export/markdown/markdown_to_html_fragment_writer.py
Lines:
42
Non-empty lines:
35
Non-empty lines covered with requirements:
35 / 35 (100.0%)
Functions:
4
Functions covered by requirements:
4 / 4 (100.0%)
1
"""2
@relation(SDOC-SRS-24, scope=file)3
"""4
5
from html import escape
6
from typing import Optional, Tuple
7
8
from markdown_it import MarkdownIt
9
from markupsafe import Markup
10
11
12
class MarkdownToHtmlFragmentWriter:
13
# Use the default preset to support common Markdown extensions such as14
# pipe tables when rendering HTML fragments.15
markdown_parser = MarkdownIt("default")
16
17
@staticmethod18
def write(markdown_fragment: str) -> Markup:
19
assert isinstance(markdown_fragment, str), markdown_fragment
20
return Markup(
21
MarkdownToHtmlFragmentWriter.markdown_parser.render(
22
markdown_fragment23
)24
)25
26
@staticmethod27
def write_with_validation(
28
markdown_fragment: str,
29
) -> Tuple[Optional[str], Optional[str]]:
30
assert isinstance(markdown_fragment, str), markdown_fragment
31
return (
32
MarkdownToHtmlFragmentWriter.markdown_parser.render(
33
markdown_fragment34
),35
None,
36
)37
38
@staticmethod39
def write_anchor_link(title: str, href: str) -> str:
40
return (
41
f'<a href="{escape(href, quote=True)}">🔗 {escape(title)}</a>'
42
)