| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package main
- import (
- "fmt"
- "log"
- "mermaid-go/pkg/parser"
- "mermaid-go/pkg/renderer"
- )
- func main() {
- fmt.Println("Testing Advanced Flowchart Features:")
- // Test 1: Click events
- testClickEvents()
- fmt.Println()
- // Test 2: Advanced subgraphs with styling
- testAdvancedSubgraphs()
- fmt.Println()
- // Test 3: Complex node shapes
- testComplexShapes()
- fmt.Println()
- }
- func testClickEvents() {
- fmt.Println("--- Testing Click Events ---")
- input := `flowchart TD
- A[Start] --> B[Process]
- B --> C[End]
- click A "https://example.com" "_blank"
- click B callback
- click C "https://mermaid.js.org"`
- mermaidParser := parser.NewMermaidParser()
- diagram, err := mermaidParser.Parse(input)
- if err != nil {
- log.Printf("Failed to parse flowchart: %v", err)
- return
- }
- mermaidRenderer := renderer.NewMermaidRenderer()
- output, err := mermaidRenderer.Render(diagram)
- if err != nil {
- log.Printf("Failed to render flowchart: %v", err)
- return
- }
- fmt.Printf("Input:\n%s\n", input)
- fmt.Printf("Parsed and rendered:\n%s", output)
- }
- func testAdvancedSubgraphs() {
- fmt.Println("--- Testing Advanced Subgraphs ---")
- input := `flowchart TB
- subgraph TOP["Top Level"]
- direction TB
- A[Input] --> B[Process]
- end
- subgraph BOTTOM[Bottom Level]
- direction LR
- C[Review] --> D[Output]
- end
- TOP --> BOTTOM
- classDef processClass fill:#f9f,stroke:#333,stroke-width:2px`
- mermaidParser := parser.NewMermaidParser()
- diagram, err := mermaidParser.Parse(input)
- if err != nil {
- log.Printf("Failed to parse flowchart: %v", err)
- return
- }
- mermaidRenderer := renderer.NewMermaidRenderer()
- output, err := mermaidRenderer.Render(diagram)
- if err != nil {
- log.Printf("Failed to render flowchart: %v", err)
- return
- }
- fmt.Printf("Input:\n%s\n", input)
- fmt.Printf("Parsed and rendered:\n%s", output)
- }
- func testComplexShapes() {
- fmt.Println("--- Testing Complex Shapes ---")
- input := `flowchart LR
- A([Start]) --> B{Decision}
- B --> C[/Process/]
- B --> D[\Alternative\]
- C --> E>Flag Shape]
- D --> E
- E --> F((End))`
- mermaidParser := parser.NewMermaidParser()
- diagram, err := mermaidParser.Parse(input)
- if err != nil {
- log.Printf("Failed to parse flowchart: %v", err)
- return
- }
- mermaidRenderer := renderer.NewMermaidRenderer()
- output, err := mermaidRenderer.Render(diagram)
- if err != nil {
- log.Printf("Failed to render flowchart: %v", err)
- return
- }
- fmt.Printf("Input:\n%s\n", input)
- fmt.Printf("Parsed and rendered:\n%s", output)
- }
|