| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // 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:
- return r.renderGanttDiagram(d)
- case *ast.TimelineDiagram:
- return r.renderTimelineDiagram(d)
- case *ast.UserJourneyDiagram:
- return r.renderUserJourneyDiagram(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 other diagram types
- func (r *MermaidRenderer) renderERDiagram(diagram *ast.ERDiagram) (string, error) {
- return "erDiagram\n %% ER diagram rendering not yet implemented\n", nil
- }
- func (r *MermaidRenderer) renderGanttDiagram(diagram *ast.GanttDiagram) (string, error) {
- return "gantt\n %% Gantt diagram rendering not yet implemented\n", nil
- }
- func (r *MermaidRenderer) renderPieChart(diagram *ast.PieChart) (string, error) {
- return "pie\n %% Pie chart rendering not yet implemented\n", nil
- }
- func (r *MermaidRenderer) renderTimelineDiagram(diagram *ast.TimelineDiagram) (string, error) {
- return "timeline\n %% Timeline diagram rendering not yet implemented\n", nil
- }
- func (r *MermaidRenderer) renderUserJourneyDiagram(diagram *ast.UserJourneyDiagram) (string, error) {
- return "journey\n %% User journey diagram rendering not yet implemented\n", nil
- }
- 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
- }
|