Files
term-flow/.termflow/exporters/mermaid_generator.py
7000pctAUTO bbfcf43604
Some checks failed
CI / test (push) Has been cancelled
CI / lint (push) Has been cancelled
Add exporters, utils, and tests
2026-01-30 05:30:56 +00:00

47 lines
1.4 KiB
Python

"""Mermaid diagram generation."""
from typing import List, Optional
class MermaidGenerator:
"""Generates Mermaid diagrams."""
def generate_flowchart(
self,
commands: List[str],
title: str = "Command Flow",
metadata: Optional[dict] = None,
) -> str:
"""Generate Mermaid flowchart from commands."""
lines = [f"flowchart TD"]
lines.append(f" title({title})")
lines.append("")
for i, cmd in enumerate(commands):
safe_label = cmd.replace('"', "'").replace("(", "").replace(")", "")
lines.append(f' n{i}[\"{safe_label}\"]')
if i > 0:
lines.append(f" n{i-1} --> n{i}")
if metadata:
lines.append("")
lines.append(f" subgraph Stats")
lines.append(f' command_count(\`Commands: {metadata.get("command_count", len(commands))}\`)')
lines.append(" end")
return "\n".join(lines)
def generate_git_graph_from_parser(self, parser) -> str:
"""Generate Mermaid git graph from parser."""
lines = ["gitGraph"]
lines.append(" commit")
for commit in parser.commits[1:]:
if len(commit.parents) > 1:
lines.append(" merge")
else:
lines.append(" commit")
return "\n".join(lines)