import re, sys from pathlib import Path ROOT = Path(__file__).resolve().parents[2] DOCS = ['AGENTS.md', 'README.md', 'README.zh-CN.md', 'docs/design.md', 'docs/design.zh-CN.md', 'docs/deployment.md', 'docs/deployment.zh-CN.md', 'docs/reference.md', 'docs/reference.zh-CN.md', 'docs/retired.md', 'docs/retired.zh-CN.md', 'docs/opengaps.md', 'docs/opengaps.zh-CN.md', 'docs/charter.md', 'docs/charter.zh-CN.md', 'cloudflare-worker/README.md', 'cloudflare-worker/README.zh-CN.md'] errors = [] def slug(t): t = re.sub(r'[^\w\s\-]', '', t.strip().lower(), flags=re.UNICODE) return t.replace(' ', '-') def heading_set(text): return set(slug(m.group(2)) for m in re.finditer(r'^(#{1,6})\s+(.*)$', text, re.M)) HEADS = {d: heading_set((ROOT / d).read_text()) for d in DOCS} def markdown_links(text): for m in re.finditer(r'(?