| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Package renderer provides Timeline rendering
- package renderer
- import (
- "fmt"
- "strings"
- "mermaid-go/pkg/ast"
- )
- // TimelineRenderer implements Timeline rendering
- type TimelineRenderer struct{}
- // NewTimelineRenderer creates a new Timeline renderer
- func NewTimelineRenderer() *TimelineRenderer {
- return &TimelineRenderer{}
- }
- // Render renders a Timeline to mermaid syntax
- func (r *TimelineRenderer) Render(diagram *ast.TimelineDiagram) (string, error) {
- var result strings.Builder
- // Start with timeline declaration
- result.WriteString("timeline\n")
- // Add title if present
- if diagram.Title != nil {
- result.WriteString(fmt.Sprintf(" title %s\n", *diagram.Title))
- }
- // Render sections and events
- for _, section := range diagram.Sections {
- // Add section if it has a meaningful name
- if section.Name != "" && section.Name != "Timeline" {
- result.WriteString(fmt.Sprintf(" section %s\n", section.Name))
- }
- // Render events
- for _, event := range section.Events {
- result.WriteString(fmt.Sprintf(" : %s\n", event.Name))
- }
- }
- return result.String(), nil
- }
|