basic_usage.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. // Package examples demonstrates basic usage of mermaid-go
  2. package main
  3. import (
  4. "fmt"
  5. "log"
  6. "mermaid-go/pkg/parser"
  7. "mermaid-go/pkg/renderer"
  8. )
  9. func main() {
  10. // Example 1: Flowchart
  11. fmt.Println("=== Flowchart Example ===")
  12. flowchartExample()
  13. // Example 2: Gantt Chart
  14. fmt.Println("\n=== Gantt Chart Example ===")
  15. ganttExample()
  16. // Example 3: User Journey
  17. fmt.Println("\n=== User Journey Example ===")
  18. journeyExample()
  19. // Example 4: Architecture
  20. fmt.Println("\n=== Architecture Example ===")
  21. architectureExample()
  22. }
  23. func flowchartExample() {
  24. input := `flowchart TD
  25. A[Start] --> B{Decision}
  26. B -->|Yes| C[Process]
  27. B -->|No| D[End]
  28. C --> D`
  29. // Parse
  30. parser := parser.NewMermaidParser()
  31. diagram, err := parser.Parse(input)
  32. if err != nil {
  33. log.Fatal(err)
  34. }
  35. // Render
  36. renderer := renderer.NewMermaidRenderer()
  37. output, err := renderer.Render(diagram)
  38. if err != nil {
  39. log.Fatal(err)
  40. }
  41. fmt.Printf("Original:\n%s\n\nParsed and rendered:\n%s\n", input, output)
  42. }
  43. func ganttExample() {
  44. input := `gantt
  45. title Software Development Project
  46. dateFormat YYYY-MM-DD
  47. section Analysis
  48. Requirements : 2024-01-01, 5d
  49. Design : 2024-01-06, 3d
  50. section Implementation
  51. Backend : 2024-01-09, 10d
  52. Frontend : 2024-01-15, 8d
  53. Testing : 2024-01-20, 5d`
  54. parser := parser.NewMermaidParser()
  55. diagram, err := parser.Parse(input)
  56. if err != nil {
  57. log.Fatal(err)
  58. }
  59. renderer := renderer.NewMermaidRenderer()
  60. output, err := renderer.Render(diagram)
  61. if err != nil {
  62. log.Fatal(err)
  63. }
  64. fmt.Printf("Original:\n%s\n\nParsed and rendered:\n%s\n", input, output)
  65. }
  66. func journeyExample() {
  67. input := `journey
  68. title Customer Purchase Journey
  69. section Discovery
  70. Search product : 5 : Customer
  71. Compare options : 3 : Customer
  72. section Purchase
  73. Add to cart : 5 : Customer
  74. Payment : 2 : Customer, System
  75. section Post-purchase
  76. Delivery : 4 : Customer, Courier
  77. Review : 3 : Customer`
  78. parser := parser.NewMermaidParser()
  79. diagram, err := parser.Parse(input)
  80. if err != nil {
  81. log.Fatal(err)
  82. }
  83. renderer := renderer.NewMermaidRenderer()
  84. output, err := renderer.Render(diagram)
  85. if err != nil {
  86. log.Fatal(err)
  87. }
  88. fmt.Printf("Original:\n%s\n\nParsed and rendered:\n%s\n", input, output)
  89. }
  90. func architectureExample() {
  91. input := `architecture
  92. title Microservices Architecture
  93. group frontend[Frontend]
  94. group backend[Backend Services]
  95. group data[Data Layer]
  96. service web[Web App] in frontend
  97. service api[API Gateway] in backend
  98. service auth[Auth Service] in backend
  99. service db[Database] in data
  100. service cache[Redis Cache] in data
  101. web L--R api : HTTP requests
  102. api L--R auth : authentication
  103. api L--R db : queries
  104. api L--R cache : caching`
  105. parser := parser.NewMermaidParser()
  106. diagram, err := parser.Parse(input)
  107. if err != nil {
  108. log.Fatal(err)
  109. }
  110. renderer := renderer.NewMermaidRenderer()
  111. output, err := renderer.Render(diagram)
  112. if err != nil {
  113. log.Fatal(err)
  114. }
  115. fmt.Printf("Original:\n%s\n\nParsed and rendered:\n%s\n", input, output)
  116. }