#!/usr/bin/env python3 """Render Mermaid diagrams in markdown files to ASCII art.""" import re import subprocess import sys def extract_mermaid_blocks(content: str) -> list[str]: """Extract mermaid blocks from markdown.""" return re.findall(r"```mermaid\n(.*?)\n```", content, re.DOTALL) def render_diagram(block: str) -> str: """Render a single mermaid block to ASCII.""" result = subprocess.run( ["mermaid-ascii", "-f", "-"], input=block, capture_output=True, text=True, ) if result.returncode != 0: return f"ERROR: {result.stderr}" return result.stdout def main(): if len(sys.argv) < 2: print("Usage: render-diagrams.py ") sys.exit(1) filename = sys.argv[1] content = open(filename).read() blocks = extract_mermaid_blocks(content) print(f"Found {len(blocks)} mermaid diagram(s) in {filename}") print() for i, block in enumerate(blocks): # Skip if empty if not block.strip(): continue print(f"=== Diagram {i + 1} ===") print(render_diagram(block)) if __name__ == "__main__": main()