| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Package renderer provides Sankey diagram rendering
- package renderer
- import (
- "fmt"
- "strings"
- "mermaid-go/pkg/ast"
- )
- // SankeyRenderer implements Sankey diagram rendering
- type SankeyRenderer struct{}
- // NewSankeyRenderer creates a new Sankey renderer
- func NewSankeyRenderer() *SankeyRenderer {
- return &SankeyRenderer{}
- }
- // Render renders a Sankey diagram to mermaid syntax
- func (r *SankeyRenderer) Render(diagram *ast.SankeyDiagram) (string, error) {
- var result strings.Builder
- // Start with sankey-beta keyword
- result.WriteString("sankey-beta\n")
- // Add title if present
- if diagram.Title != nil {
- result.WriteString(fmt.Sprintf(" title %s\n", *diagram.Title))
- }
- // Render nodes
- for _, node := range diagram.Nodes {
- result.WriteString(fmt.Sprintf(" %s\n", node.Label))
- }
- // Render links
- for _, link := range diagram.Links {
- result.WriteString(fmt.Sprintf(" %s --> %s : %d\n",
- link.Source, link.Target, link.Value))
- }
- return result.String(), nil
- }
|