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}")