xref: /plugin/mizarverifiabledocs/script/miz2svg.py (revision 3f7dd076be52992d1f40215ecd797f9d17132992)
1#!/usr/bin/env python3
2import sys, subprocess, tempfile, os, networkx as nx
3from pathlib import Path
4from miz_parser import parse_mizar           # 解析だけ借用
5
6def main():
7    if len(sys.argv) != 2:
8        sys.exit("usage: miz2svg.py <file.miz>")
9    miz = Path(sys.argv[1]).resolve()
10    G = parse_mizar(miz)
11    dot = nx.nx_pydot.to_pydot(G).to_string()
12
13    with tempfile.NamedTemporaryFile('w+', delete=False, suffix='.dot') as f:
14        f.write(dot); dot_path = f.name
15    try:
16        svg = subprocess.check_output(['dot', '-Tsvg', dot_path])
17        sys.stdout.buffer.write(svg)          # ← stdout に SVG
18    finally:
19        os.remove(dot_path)
20
21if __name__ == '__main__': main()
22