5 | 5 |
#
|
6 | 6 |
# SPDX-License-Identifier: LicenseRef-MIT-X-Cleandown
|
7 | 7 |
|
|
8 |
import logging
|
8 | 9 |
|
9 | 10 |
from marko.md_renderer import MarkdownRenderer
|
10 | 11 |
|
11 | 12 |
|
|
13 |
logger = logging.getLogger(__name__)
|
|
14 |
|
|
15 |
|
12 | 16 |
class CleanMarkdownRenderer(MarkdownRenderer):
|
|
17 |
|
|
18 |
def __init__(self) -> None:
|
|
19 |
super().__init__()
|
|
20 |
logger.debug(f"Created new {self.__class__.__name__}")
|
13 | 21 |
|
14 | 22 |
def render_heading(self, element) -> str:
|
15 | 23 |
if element.level in (1, 2):
|
|
53 | 61 |
def render_line_break(self, element) -> str:
|
54 | 62 |
result = "\n" + self._second_prefix if element.soft else "\\\n" + self._second_prefix
|
55 | 63 |
return result
|
|
64 |
|
|
65 |
# debug how it formats reference links
|
|
66 |
def render_link(self, element) -> str:
|
|
67 |
link_text = self.render_children(element)
|
|
68 |
link_title = (
|
|
69 |
'"{}"'.format(element.title.replace('"', '\\"')) if element.title else None
|
|
70 |
)
|
|
71 |
assert self.root_node
|
|
72 |
logger.debug(f"Link ref defs: {self.root_node.link_ref_defs.items()}")
|
|
73 |
label = next(
|
|
74 |
(
|
|
75 |
k
|
|
76 |
for k, v in self.root_node.link_ref_defs.items()
|
|
77 |
if v == (element.dest, link_title)
|
|
78 |
),
|
|
79 |
None,
|
|
80 |
)
|
|
81 |
logger.debug(f"rendering link, link_text '{link_text}', label '{label}'")
|
|
82 |
if label is not None:
|
|
83 |
if label == link_text:
|
|
84 |
return f"[{label}]"
|
|
85 |
return f"[{link_text}][{label}]"
|
|
86 |
title = f" {link_title}" if link_title is not None else ""
|
|
87 |
return f"[{link_text}]({element.dest}{title})"
|
|
88 |
|
|
89 |
def render_link_ref_def(self, element) -> str:
|
|
90 |
link_text = element.dest
|
|
91 |
if element.title:
|
|
92 |
link_text += f" {element.title}"
|
|
93 |
logger.debug(f"rendering link ref def, link_text '{link_text}', label '{element.label}'")
|
|
94 |
return f"[{element.label}]: {link_text}\n"
|