| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Package renderer provides the main renderer router for all diagram types
- package renderer
- import (
- "fmt"
- "mermaid-go/pkg/ast"
- )
- // MermaidRenderer is the main renderer that routes to specific diagram renderers
- type MermaidRenderer struct{}
- // NewMermaidRenderer creates a new main mermaid renderer
- func NewMermaidRenderer() *MermaidRenderer {
- return &MermaidRenderer{}
- }
- // Render renders any diagram type to mermaid syntax
- func (r *MermaidRenderer) Render(diagram ast.Diagram) (string, error) {
- switch d := diagram.(type) {
- case *ast.Flowchart:
- renderer := NewFlowchartRenderer()
- return renderer.Render(d)
- case *ast.SequenceDiagram:
- renderer := NewSequenceRenderer()
- return renderer.Render(d)
- case *ast.ClassDiagram:
- renderer := NewClassRenderer()
- return renderer.Render(d)
- case *ast.StateDiagram:
- renderer := NewStateRenderer()
- return renderer.Render(d)
- case *ast.PieChart:
- renderer := NewPieRenderer()
- return renderer.Render(d)
- case *ast.ERDiagram:
- renderer := NewERRenderer()
- return renderer.Render(d)
- case *ast.GanttDiagram:
- renderer := NewGanttRenderer()
- return renderer.Render(d)
- case *ast.TimelineDiagram:
- renderer := NewTimelineRenderer()
- return renderer.Render(d)
- case *ast.UserJourneyDiagram:
- renderer := NewJourneyRenderer()
- return renderer.Render(d)
- case *ast.ArchitectureDiagram:
- renderer := NewArchitectureRenderer()
- return renderer.Render(d)
- case *ast.OrganizationDiagram:
- renderer := NewOrganizationRenderer()
- return renderer.Render(d)
- case *ast.BPMNDiagram:
- renderer := NewBPMNRenderer()
- return renderer.Render(d)
- case *ast.QuadrantChart:
- return r.renderQuadrantChart(d)
- case *ast.RequirementDiagram:
- return r.renderRequirementDiagram(d)
- default:
- return "", fmt.Errorf("unsupported diagram type: %T", diagram)
- }
- }
- // Placeholder implementations for remaining diagram types
- func (r *MermaidRenderer) renderQuadrantChart(diagram *ast.QuadrantChart) (string, error) {
- return "quadrantChart\n %% Quadrant chart rendering not yet implemented\n", nil
- }
- func (r *MermaidRenderer) renderRequirementDiagram(diagram *ast.RequirementDiagram) (string, error) {
- return "requirementDiagram\n %% Requirement diagram rendering not yet implemented\n", nil
- }
|