Files
sideline/scripts/render-diagrams.py
David Gwilliam b926b346ad fix: resolve terminal display wobble and effect dimension stability
- Fix TerminalDisplay: add screen clear each frame (cursor home + erase down)
- Fix CameraStage: use set_canvas_size instead of read-only viewport properties
- Fix Glitch effect: preserve visible line lengths, remove cursor positioning
- Fix Fade effect: return original line when fade=0 instead of empty string
- Fix Noise effect: use input line length instead of terminal_width
- Remove HUD effect from all presets (redundant with border FPS display)
- Add regression tests for effect dimension stability
- Add docs/ARCHITECTURE.md with Mermaid diagrams
- Add mise tasks: diagram-ascii, diagram-validate, diagram-check
- Move markdown docs to docs/ (ARCHITECTURE, Refactor, hardware specs)
- Remove redundant requirements files (use pyproject.toml)
- Add *.dot and *.png to .gitignore

Closes #25
2026-03-18 03:37:53 -07:00

50 lines
1.1 KiB
Python

#!/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 <markdown-file>")
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()