|
4 | 4 | import marko
|
5 | 5 | import minify_html
|
6 | 6 | from marko.block import Heading
|
| 7 | +from marko.block import ListItem |
7 | 8 | from marko.block import Paragraph
|
| 9 | +from marko.helpers import MarkoExtension |
8 | 10 | from marko.inline import Link as MarkdownLink
|
9 | 11 | from marko.md_renderer import MarkdownRenderer
|
10 | 12 | from mkdocs import plugins
|
|
19 | 21 | LINKS_MAP = {}
|
20 | 22 |
|
21 | 23 |
|
| 24 | +class HackedListItem(ListItem): |
| 25 | + |
| 26 | + override = True |
| 27 | + |
| 28 | + @classmethod |
| 29 | + def parse(cls, source) -> ListItem: |
| 30 | + state = cls(source.context.list_item_info) |
| 31 | + state.children = [] |
| 32 | + with source.under_state(state): |
| 33 | + if not source.next_line().strip(): |
| 34 | + source.consume() |
| 35 | + if not source.next_line() or not source.next_line().strip(): |
| 36 | + return state |
| 37 | + state.children = source.parser.parse_source(source) |
| 38 | + return state |
| 39 | + |
| 40 | + |
| 41 | +HackExtension = MarkoExtension(elements=[HackedListItem]) |
| 42 | + |
| 43 | + |
22 | 44 | def get_names_paragraph(content: str) -> str:
|
23 | 45 | paragraph_lines = []
|
24 | 46 | append = False
|
@@ -102,7 +124,7 @@ def fix_heading(heading: Heading, parser: marko.Markdown) -> Heading:
|
102 | 124 | def fix_markdown(source_md: str, page: Page, config: MkDocsConfig, files: Files) -> str:
|
103 | 125 | if page.file.src_uri in SKIP_FILES + MAN_INDEXES:
|
104 | 126 | return source_md
|
105 |
| - parser = marko.Markdown(renderer=MarkdownRenderer) |
| 127 | + parser = marko.Markdown(renderer=MarkdownRenderer, extensions=[HackExtension]) |
106 | 128 | new_children = []
|
107 | 129 | h1_parsed = parser.parse(f"# {page.file.name}")
|
108 | 130 | h1 = h1_parsed.children[0]
|
|
0 commit comments