// 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 }