From 4a0f030d13734a7545ea301b4c6724fa7918c903 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 22:28:00 +0000 Subject: [PATCH] Initial upload: TermDiagram v0.1.0 --- .../generators/mermaid_generator.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/termdiagram/generators/mermaid_generator.py diff --git a/src/termdiagram/generators/mermaid_generator.py b/src/termdiagram/generators/mermaid_generator.py new file mode 100644 index 0000000..7936a72 --- /dev/null +++ b/src/termdiagram/generators/mermaid_generator.py @@ -0,0 +1,34 @@ +from typing import List +from ..models import Module, ClassSymbol + + +class MermaidDiagramGenerator: + def generate_class_diagram(self, modules: List[Module]) -> str: + lines = ["classDiagram"] + lines.append(" direction TB") + lines.append("") + + for module in modules: + for cls in module.classes: + self._render_class(lines, cls) + lines.append("") + + for module in modules: + for cls in module.classes: + self._render_relationships(lines, cls) + + return "\n".join(lines) + + def _render_class(self, lines: List[str], cls: ClassSymbol): + class_def = f" class {cls.name} {{" + lines.append(class_def) + + for method in cls.methods: + sig = f"({', '.join(method.params)})":"" + lines.append(f" +{method.name}{sig}") + + lines.append(" }") + + def _render_relationships(self, lines: List[str], cls: ClassSymbol): + for base in cls.bases: + lines.append(f" {base} <|-- {cls.name}")