ci(wiki): fix STYLE lists rendering as blockquotes

Some pandoc versions (incl. the pinned 3.5) render scdoc bullet lists as a
series of `> ·` blockquotes instead of a Markdown list, which made the STYLE
sections look broken. Post-process the generated Markdown to collapse that
artifact back into real `- item` bullets, independent of the pandoc version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alex
2026-07-04 12:53:20 +02:00
co-authored by Claude Opus 4.8
parent 0895465430
commit 5180dec43e
+30 -1
View File
@@ -153,6 +153,35 @@ def fix_tables(md):
return "\n".join(out)
BQ_BULLET = re.compile(r"^>\s*[·•‣∙⋅]\s*$")
def fix_blockquote_bullets(md):
"""Turn pandoc's blockquote-wrapped bullet artifact into a real list.
Some pandoc versions render a scdoc bullet list (`- *#clock*`) as a series
of blockquotes, each `> ·` / `>` / `> item`, instead of a Markdown list.
Collapse every such block back into a `- item` bullet. A no-op when pandoc
already produced a clean list.
"""
lines = md.split("\n")
out, i, n = [], 0, len(lines)
while i < n:
if BQ_BULLET.match(lines[i]):
j, content = i + 1, []
while j < n and lines[j].startswith(">"):
cell = lines[j][1:].strip()
if cell:
content.append(cell)
j += 1
out.append(f"- {' '.join(content)}" if content else "-")
i = j
else:
out.append(lines[i])
i += 1
return "\n".join(out)
def pretty(basename):
"""waybar-sway-mode -> sway/mode (submodule heading for aggregated pages)."""
return basename.removeprefix("waybar-").replace("-", "/", 1)
@@ -173,7 +202,7 @@ def build_page(man_dir, sources, page, extras_dir):
aggregated = len(sources) > 1
for src in sources:
scd = os.path.join(man_dir, src + ".5.scd")
body = fix_tables(strip_sections(man_to_gfm(scd)))
body = fix_blockquote_bullets(fix_tables(strip_sections(man_to_gfm(scd))))
if aggregated:
parts.append(f"\n# {pretty(src)}\n\n" + demote(body))
else: