Initial upload: TermDiagram v0.1.0
Some checks failed
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled

This commit is contained in:
2026-01-29 22:27:58 +00:00
parent 6ba6cd6390
commit 571c44dd71

View File

@@ -0,0 +1,49 @@
from typing import List
from ..models import Module
class AsciiDiagramGenerator:
def __init__(self):
self.box_width = 40
def generate(self, modules: List[Module]) -> str:
lines = []
lines.append("Architecture Overview")
lines.append("=" * 60)
lines.append("")
for module in modules:
self._render_module(lines, module, 0)
lines.append("")
return "\n".join(lines)
def _render_module(self, lines: List[str], module: Module, indent: int):
prefix = " " * indent
lines.append(f"{prefix}[ Module ] {module.name}")
for cls in module.classes:
self._render_class(lines, cls, indent + 1)
for func in module.functions:
self._render_function(lines, func, indent + 1)
def _render_class(self, lines: List[str], cls, indent: int):
prefix = " " * indent
lines.append(f"{prefix}+---[ Class ] {cls.name}")
if cls.bases:
lines.append(f"{prefix} inherits: {', '.join(cls.bases)}")
for method in cls.methods:
self._render_method(lines, method, indent + 1)
def _render_method(self, lines: List[str], method, indent: int):
prefix = " " * indent
sig = f"({', '.join(method.params)})")
lines.append(f"{prefix} |-- {method.name}{sig}")
def _render_function(self, lines: List[str], func, indent: int):
prefix = " " * indent
sig = f"({', '.join(func.params)})")
lines.append(f"{prefix}-- {func.name}{sig}")