"""Convert MediaWiki `action=parse` HTML into clean markdown with frontmatter."""
from __future__ import annotations
import re
from bs4 import BeautifulSoup
from markdownify import markdownify as _markdownify
# Chrome / navigation / reference elements we don't want in the corpus.
_REMOVE_SELECTORS = (
"style",
"script",
"link",
".mw-editsection",
".mw-jump-link",
".noprint",
".navbox",
".toc",
"#toc",
".mw-empty-elt",
".reference",
".mw-references-wrap",
".reflist",
".ambox",
".metadata",
".pagetabber-absolute",
".pi-image",
)
_BLANK_LINES = re.compile(r"\n{3,}")
def _infobox_rows(element, group: str, tab: str, rows: list[tuple[str, str, str, str]]) -> None:
"""Collect (group, tab, label, value) from a portable-infobox subtree, in order.
Fandom stat blocks are an