"""Lightweight Markdown formatter: normalizes first-line H1, adds code-fence language hints for common shebangs, trims trailing whitespace. This is intentionally small and non-destructive; it touches only files under docs/ and makes safe changes. """ import re from pathlib import Path DOCS = Path(__file__).resolve().parents[1] / "docs" CODE_LANG_HINTS = { 'powershell': ('powershell',), 'bash': ('bash', 'sh'), 'sql': ('sql',), 'python': ('python',), } def add_code_fence_language(match): fence = match.group(0) inner = match.group(1) # If language already present, return unchanged if fence.startswith('```') and len(fence.splitlines()[0].strip()) > 3: return fence # Try to infer language from the code content code = inner.strip().splitlines()[0] if inner.strip() else '' lang = '' if code.startswith('$') or code.startswith('PS') or code.lower().startswith('powershell'): lang = 'powershell' elif code.startswith('#') or code.startswith('import') or code.startswith('from'): lang = 'python' elif re.match(r'^(select|insert|update|create)\b', code.strip(), re.I): lang = 'sql' elif code.startswith('git') or code.startswith('./') or code.startswith('sudo'): lang = 'bash' if lang: return f'```{lang}\n{inner}\n```' return fence def normalize_file(path: Path): text = path.read_text(encoding='utf-8') orig = text # Trim trailing whitespace and ensure single trailing newline text = '\n'.join(line.rstrip() for line in text.splitlines()) + '\n' # Ensure first non-empty line is H1 lines = text.splitlines() for i, ln in enumerate(lines): if ln.strip(): if not ln.startswith('#'): lines[i] = '# ' + ln break text = '\n'.join(lines) + '\n' # Add basic code fence languages where missing (simple heuristic) text = re.sub(r'```\n([\s\S]*?)\n```', add_code_fence_language, text) if text != orig: path.write_text(text, encoding='utf-8') return True return False def main(): changed = [] for p in DOCS.rglob('*.md'): if p.is_file(): try: if normalize_file(p): changed.append(str(p.relative_to(Path.cwd()))) except Exception as e: print(f"Failed to format {p}: {e}") if changed: print('Formatted files:') for c in changed: print(' -', c) else: print('No formatting changes required.') if __name__ == '__main__': main()