sirena 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/build_deploy.yml +59 -0
  3. data/.github/workflows/links.yml +85 -0
  4. data/.github/workflows/rake.yml +15 -0
  5. data/.github/workflows/release.yml +27 -0
  6. data/.gitignore +68 -0
  7. data/.rspec +3 -0
  8. data/.rubocop.yml +14 -0
  9. data/.rubocop_todo.yml +70 -0
  10. data/ARCHITECTURE.md +744 -0
  11. data/Gemfile +12 -0
  12. data/LICENSE +25 -0
  13. data/README.adoc +357 -0
  14. data/Rakefile +11 -0
  15. data/docs/.gitignore +1 -0
  16. data/docs/Gemfile +13 -0
  17. data/docs/_config.yml +182 -0
  18. data/docs/_diagram_types/architecture-diagram.adoc +314 -0
  19. data/docs/_diagram_types/block-diagram.adoc +345 -0
  20. data/docs/_diagram_types/c4-diagram.adoc +559 -0
  21. data/docs/_diagram_types/class-diagram.adoc +816 -0
  22. data/docs/_diagram_types/er-diagram.adoc +719 -0
  23. data/docs/_diagram_types/error-diagram.adoc +114 -0
  24. data/docs/_diagram_types/examples/flowchart-examples.adoc +29 -0
  25. data/docs/_diagram_types/flowchart.adoc +488 -0
  26. data/docs/_diagram_types/gantt-chart.adoc +502 -0
  27. data/docs/_diagram_types/git-graph.adoc +600 -0
  28. data/docs/_diagram_types/index.adoc +192 -0
  29. data/docs/_diagram_types/info-diagram.adoc +103 -0
  30. data/docs/_diagram_types/kanban-diagram.adoc +262 -0
  31. data/docs/_diagram_types/mindmap.adoc +603 -0
  32. data/docs/_diagram_types/packet-diagram.adoc +378 -0
  33. data/docs/_diagram_types/pie-chart.adoc +335 -0
  34. data/docs/_diagram_types/quadrant-chart.adoc +406 -0
  35. data/docs/_diagram_types/radar-chart.adoc +528 -0
  36. data/docs/_diagram_types/requirement-diagram.adoc +416 -0
  37. data/docs/_diagram_types/sankey-diagram.adoc +357 -0
  38. data/docs/_diagram_types/sequence-diagram.adoc +664 -0
  39. data/docs/_diagram_types/state-diagram.adoc +658 -0
  40. data/docs/_diagram_types/timeline.adoc +352 -0
  41. data/docs/_diagram_types/treemap-diagram.adoc +462 -0
  42. data/docs/_diagram_types/user-journey.adoc +602 -0
  43. data/docs/_features/index.adoc +129 -0
  44. data/docs/_guides/cli-reference.adoc +203 -0
  45. data/docs/_guides/index.adoc +56 -0
  46. data/docs/_guides/installation.adoc +100 -0
  47. data/docs/_guides/quick-start.adoc +132 -0
  48. data/docs/_pages/comparison.adoc +441 -0
  49. data/docs/_pages/compatibility.adoc +300 -0
  50. data/docs/_pages/index.adoc +39 -0
  51. data/docs/_references/index.adoc +103 -0
  52. data/docs/_tutorials/index.adoc +57 -0
  53. data/docs/index.adoc +166 -0
  54. data/docs/lychee.toml +54 -0
  55. data/examples/.gitignore +10 -0
  56. data/examples/README.adoc +196 -0
  57. data/examples/README.md +64 -0
  58. data/examples/architecture/01-basic-services.mmd +9 -0
  59. data/examples/architecture/01-basic-services.svg +37 -0
  60. data/examples/architecture/02-service-groups.mmd +16 -0
  61. data/examples/architecture/02-service-groups.svg +55 -0
  62. data/examples/architecture/README.adoc +79 -0
  63. data/examples/block/01-basic-blocks.mmd +13 -0
  64. data/examples/block/01-basic-blocks.svg +44 -0
  65. data/examples/block/02-block-shapes.mmd +13 -0
  66. data/examples/block/02-block-shapes.svg +47 -0
  67. data/examples/block/README.adoc +85 -0
  68. data/examples/c4/01-context-diagram.mmd +10 -0
  69. data/examples/c4/01-context-diagram.svg +45 -0
  70. data/examples/c4/02-container-diagram.mmd +24 -0
  71. data/examples/c4/02-container-diagram.svg +105 -0
  72. data/examples/c4/README.adoc +92 -0
  73. data/examples/class_diagram/01-basic-classes.mmd +61 -0
  74. data/examples/class_diagram/01-basic-classes.svg +117 -0
  75. data/examples/class_diagram/02-relationships.mmd +61 -0
  76. data/examples/class_diagram/02-relationships.svg +129 -0
  77. data/examples/class_diagram/README.adoc +93 -0
  78. data/examples/er_diagram/01-basic-entities.mmd +64 -0
  79. data/examples/er_diagram/01-basic-entities.svg +5 -0
  80. data/examples/er_diagram/02-cardinality.mmd +57 -0
  81. data/examples/er_diagram/02-cardinality.svg +125 -0
  82. data/examples/er_diagram/README.adoc +88 -0
  83. data/examples/error/01-basic-error.mmd +1 -0
  84. data/examples/error/01-basic-error.svg +13 -0
  85. data/examples/error/02-error-display.mmd +1 -0
  86. data/examples/error/02-error-display.svg +13 -0
  87. data/examples/error/README.adoc +71 -0
  88. data/examples/error_message_example.svg +13 -0
  89. data/examples/flowchart/00-original.mmd +13 -0
  90. data/examples/flowchart/00-original.svg +5 -0
  91. data/examples/flowchart/01-basic-flow.mmd +7 -0
  92. data/examples/flowchart/01-basic-flow.svg +52 -0
  93. data/examples/flowchart/01-basic-flow.yml +13 -0
  94. data/examples/flowchart/02*.svg +87 -0
  95. data/examples/flowchart/02-node-shapes.mmd +9 -0
  96. data/examples/flowchart/02-node-shapes.svg +33 -0
  97. data/examples/flowchart/03-edge-types.mmd +7 -0
  98. data/examples/flowchart/03-edge-types.svg +53 -0
  99. data/examples/flowchart/04-subgraphs.mmd +9 -0
  100. data/examples/flowchart/04-subgraphs.svg +33 -0
  101. data/examples/flowchart/05-styling.mmd +9 -0
  102. data/examples/flowchart/05-styling.svg +33 -0
  103. data/examples/flowchart/06-complex-flow.mmd +8 -0
  104. data/examples/flowchart/06-complex-flow.svg +59 -0
  105. data/examples/flowchart/README.adoc +167 -0
  106. data/examples/gantt/01-simple-timeline.* +14 -0
  107. data/examples/gantt/01-simple-timeline.mmd +6 -0
  108. data/examples/gantt/01-simple-timeline.svg +26 -0
  109. data/examples/gantt/02-task-dependencies.mmd +6 -0
  110. data/examples/gantt/02-task-dependencies.svg +26 -0
  111. data/examples/gantt/README.adoc +86 -0
  112. data/examples/git_graph/01-linear-history.mmd +12 -0
  113. data/examples/git_graph/01-linear-history.svg +26 -0
  114. data/examples/git_graph/02-branching.mmd +12 -0
  115. data/examples/git_graph/02-branching.svg +26 -0
  116. data/examples/git_graph/README.adoc +73 -0
  117. data/examples/info/02-showinfo.mmd +1 -0
  118. data/examples/info/02-showinfo.svg +10 -0
  119. data/examples/info/README.adoc +58 -0
  120. data/examples/info_showinfo_example.svg +10 -0
  121. data/examples/kanban/01-simple-board.mmd +8 -0
  122. data/examples/kanban/01-simple-board.svg +43 -0
  123. data/examples/kanban/02-workflow.mmd +8 -0
  124. data/examples/kanban/02-workflow.svg +43 -0
  125. data/examples/kanban/README.adoc +79 -0
  126. data/examples/mindmap/01-simple-tree.mmd +19 -0
  127. data/examples/mindmap/01-simple-tree.svg +61 -0
  128. data/examples/mindmap/02-knowledge-map.mmd +19 -0
  129. data/examples/mindmap/02-knowledge-map.svg +61 -0
  130. data/examples/mindmap/README.adoc +77 -0
  131. data/examples/packet/01-basic-packet.* +17 -0
  132. data/examples/packet/01-basic-packet.mmd +4 -0
  133. data/examples/packet/01-basic-packet.svg +82 -0
  134. data/examples/packet/README.adoc +58 -0
  135. data/examples/pie/01-simple-chart.mmd +5 -0
  136. data/examples/pie/01-simple-chart.svg +17 -0
  137. data/examples/pie/02-labeled-slices.mmd +6 -0
  138. data/examples/pie/02-labeled-slices.svg +19 -0
  139. data/examples/pie/README.adoc +75 -0
  140. data/examples/quadrant/01-basic-quadrant.mmd +13 -0
  141. data/examples/quadrant/01-basic-quadrant.svg +33 -0
  142. data/examples/quadrant/02-positioned-items.mmd +14 -0
  143. data/examples/quadrant/02-positioned-items.svg +35 -0
  144. data/examples/quadrant/README.adoc +84 -0
  145. data/examples/radar/01-simple-radar.* +5 -0
  146. data/examples/radar/01-simple-radar.mmd +3 -0
  147. data/examples/radar/01-simple-radar.svg +25 -0
  148. data/examples/radar/02-multiple-curves.mmd +4 -0
  149. data/examples/radar/02-multiple-curves.svg +43 -0
  150. data/examples/radar/README.adoc +75 -0
  151. data/examples/requirement/01-basic-requirements.mmd +23 -0
  152. data/examples/requirement/01-basic-requirements.svg +49 -0
  153. data/examples/requirement/02-risk-levels.mmd +23 -0
  154. data/examples/requirement/02-risk-levels.svg +49 -0
  155. data/examples/requirement/README.adoc +85 -0
  156. data/examples/sankey/01-simple-flow.mmd +7 -0
  157. data/examples/sankey/01-simple-flow.svg +34 -0
  158. data/examples/sankey/02-multi-stage.mmd +11 -0
  159. data/examples/sankey/02-multi-stage.svg +44 -0
  160. data/examples/sankey/README.adoc +74 -0
  161. data/examples/sequence/01-basic-sequence.mmd +27 -0
  162. data/examples/sequence/01-basic-sequence.svg +5 -0
  163. data/examples/sequence/02-activations.mmd +17 -0
  164. data/examples/sequence/02-activations.svg +78 -0
  165. data/examples/sequence/README.adoc +86 -0
  166. data/examples/state_diagram/01-simple-states.mmd +29 -0
  167. data/examples/state_diagram/01-simple-states.svg +5 -0
  168. data/examples/state_diagram/02-composite.mmd +19 -0
  169. data/examples/state_diagram/02-composite.svg +81 -0
  170. data/examples/state_diagram/README.adoc +90 -0
  171. data/examples/timeline/01-simple-timeline.mmd +11 -0
  172. data/examples/timeline/01-simple-timeline.svg +36 -0
  173. data/examples/timeline/02-periods.mmd +15 -0
  174. data/examples/timeline/02-periods.svg +47 -0
  175. data/examples/timeline/README.adoc +78 -0
  176. data/examples/treemap/01-basic-treemap.mmd +12 -0
  177. data/examples/treemap/01-basic-treemap.svg +59 -0
  178. data/examples/treemap/README.adoc +59 -0
  179. data/examples/user_journey/01-simple-journey.mmd +23 -0
  180. data/examples/user_journey/01-simple-journey.svg +5 -0
  181. data/examples/user_journey/02-multi-actor.mmd +18 -0
  182. data/examples/user_journey/02-multi-actor.svg +129 -0
  183. data/examples/user_journey/README.adoc +81 -0
  184. data/examples/xychart/01-line-chart.mmd +5 -0
  185. data/examples/xychart/01-line-chart.svg +43 -0
  186. data/examples/xychart/02-bar-chart.mmd +7 -0
  187. data/examples/xychart/02-bar-chart.svg +48 -0
  188. data/examples/xychart/README.adoc +80 -0
  189. data/exe/sirena +7 -0
  190. data/lib/sirena/cli.rb +138 -0
  191. data/lib/sirena/commands/batch.rb +117 -0
  192. data/lib/sirena/commands/render.rb +80 -0
  193. data/lib/sirena/commands/types.rb +29 -0
  194. data/lib/sirena/commands/version.rb +24 -0
  195. data/lib/sirena/diagram/architecture.rb +46 -0
  196. data/lib/sirena/diagram/base.rb +61 -0
  197. data/lib/sirena/diagram/block.rb +81 -0
  198. data/lib/sirena/diagram/c4.rb +328 -0
  199. data/lib/sirena/diagram/class_diagram.rb +385 -0
  200. data/lib/sirena/diagram/er_diagram.rb +238 -0
  201. data/lib/sirena/diagram/error.rb +38 -0
  202. data/lib/sirena/diagram/flowchart.rb +160 -0
  203. data/lib/sirena/diagram/gantt.rb +71 -0
  204. data/lib/sirena/diagram/git_graph.rb +36 -0
  205. data/lib/sirena/diagram/info.rb +38 -0
  206. data/lib/sirena/diagram/kanban.rb +178 -0
  207. data/lib/sirena/diagram/mindmap.rb +54 -0
  208. data/lib/sirena/diagram/packet.rb +79 -0
  209. data/lib/sirena/diagram/pie.rb +115 -0
  210. data/lib/sirena/diagram/quadrant.rb +138 -0
  211. data/lib/sirena/diagram/radar.rb +52 -0
  212. data/lib/sirena/diagram/requirement.rb +133 -0
  213. data/lib/sirena/diagram/sankey.rb +217 -0
  214. data/lib/sirena/diagram/sequence.rb +242 -0
  215. data/lib/sirena/diagram/state_diagram.rb +237 -0
  216. data/lib/sirena/diagram/timeline.rb +171 -0
  217. data/lib/sirena/diagram/treemap.rb +84 -0
  218. data/lib/sirena/diagram/user_journey.rb +149 -0
  219. data/lib/sirena/diagram/xy_chart.rb +76 -0
  220. data/lib/sirena/diagram.rb +8 -0
  221. data/lib/sirena/diagram_registry.rb +101 -0
  222. data/lib/sirena/engine.rb +292 -0
  223. data/lib/sirena/parser/architecture.rb +41 -0
  224. data/lib/sirena/parser/base.rb +41 -0
  225. data/lib/sirena/parser/block.rb +72 -0
  226. data/lib/sirena/parser/c4.rb +53 -0
  227. data/lib/sirena/parser/class_diagram.rb +63 -0
  228. data/lib/sirena/parser/er_diagram.rb +40 -0
  229. data/lib/sirena/parser/error.rb +49 -0
  230. data/lib/sirena/parser/flowchart.rb +71 -0
  231. data/lib/sirena/parser/gantt.rb +60 -0
  232. data/lib/sirena/parser/git_graph.rb +95 -0
  233. data/lib/sirena/parser/grammars/architecture.rb +145 -0
  234. data/lib/sirena/parser/grammars/block.rb +190 -0
  235. data/lib/sirena/parser/grammars/c4.rb +226 -0
  236. data/lib/sirena/parser/grammars/class_diagram.rb +284 -0
  237. data/lib/sirena/parser/grammars/common.rb +84 -0
  238. data/lib/sirena/parser/grammars/er_diagram.rb +114 -0
  239. data/lib/sirena/parser/grammars/error.rb +40 -0
  240. data/lib/sirena/parser/grammars/flowchart.rb +298 -0
  241. data/lib/sirena/parser/grammars/gantt.rb +252 -0
  242. data/lib/sirena/parser/grammars/git_graph.rb +167 -0
  243. data/lib/sirena/parser/grammars/info.rb +58 -0
  244. data/lib/sirena/parser/grammars/kanban.rb +83 -0
  245. data/lib/sirena/parser/grammars/mindmap.rb +115 -0
  246. data/lib/sirena/parser/grammars/packet.rb +73 -0
  247. data/lib/sirena/parser/grammars/pie.rb +128 -0
  248. data/lib/sirena/parser/grammars/quadrant.rb +199 -0
  249. data/lib/sirena/parser/grammars/radar.rb +150 -0
  250. data/lib/sirena/parser/grammars/requirement.rb +188 -0
  251. data/lib/sirena/parser/grammars/sankey.rb +104 -0
  252. data/lib/sirena/parser/grammars/sequence.rb +247 -0
  253. data/lib/sirena/parser/grammars/state_diagram.rb +172 -0
  254. data/lib/sirena/parser/grammars/timeline.rb +142 -0
  255. data/lib/sirena/parser/grammars/treemap.rb +120 -0
  256. data/lib/sirena/parser/grammars/xy_chart.rb +120 -0
  257. data/lib/sirena/parser/info.rb +49 -0
  258. data/lib/sirena/parser/kanban.rb +97 -0
  259. data/lib/sirena/parser/mindmap.rb +106 -0
  260. data/lib/sirena/parser/packet.rb +76 -0
  261. data/lib/sirena/parser/pie.rb +49 -0
  262. data/lib/sirena/parser/quadrant.rb +57 -0
  263. data/lib/sirena/parser/radar.rb +104 -0
  264. data/lib/sirena/parser/requirement.rb +70 -0
  265. data/lib/sirena/parser/sankey.rb +64 -0
  266. data/lib/sirena/parser/sequence.rb +51 -0
  267. data/lib/sirena/parser/state_diagram.rb +69 -0
  268. data/lib/sirena/parser/timeline.rb +57 -0
  269. data/lib/sirena/parser/transforms/architecture.rb +97 -0
  270. data/lib/sirena/parser/transforms/block.rb +254 -0
  271. data/lib/sirena/parser/transforms/c4.rb +347 -0
  272. data/lib/sirena/parser/transforms/class_diagram.rb +352 -0
  273. data/lib/sirena/parser/transforms/er_diagram.rb +169 -0
  274. data/lib/sirena/parser/transforms/error.rb +58 -0
  275. data/lib/sirena/parser/transforms/flowchart.rb +293 -0
  276. data/lib/sirena/parser/transforms/gantt.rb +215 -0
  277. data/lib/sirena/parser/transforms/git_graph.rb +160 -0
  278. data/lib/sirena/parser/transforms/info.rb +58 -0
  279. data/lib/sirena/parser/transforms/kanban.rb +176 -0
  280. data/lib/sirena/parser/transforms/mindmap.rb +227 -0
  281. data/lib/sirena/parser/transforms/packet.rb +63 -0
  282. data/lib/sirena/parser/transforms/pie.rb +143 -0
  283. data/lib/sirena/parser/transforms/quadrant.rb +177 -0
  284. data/lib/sirena/parser/transforms/radar.rb +126 -0
  285. data/lib/sirena/parser/transforms/requirement.rb +272 -0
  286. data/lib/sirena/parser/transforms/sankey.rb +122 -0
  287. data/lib/sirena/parser/transforms/sequence.rb +342 -0
  288. data/lib/sirena/parser/transforms/state_diagram.rb +292 -0
  289. data/lib/sirena/parser/transforms/timeline.rb +177 -0
  290. data/lib/sirena/parser/transforms/treemap.rb +81 -0
  291. data/lib/sirena/parser/transforms/xy_chart.rb +132 -0
  292. data/lib/sirena/parser/treemap.rb +98 -0
  293. data/lib/sirena/parser/user_journey.rb +120 -0
  294. data/lib/sirena/parser/xy_chart.rb +114 -0
  295. data/lib/sirena/parser.rb +8 -0
  296. data/lib/sirena/renderer/architecture.rb +251 -0
  297. data/lib/sirena/renderer/base.rb +251 -0
  298. data/lib/sirena/renderer/block.rb +286 -0
  299. data/lib/sirena/renderer/c4.rb +490 -0
  300. data/lib/sirena/renderer/class_diagram.rb +499 -0
  301. data/lib/sirena/renderer/er_diagram.rb +417 -0
  302. data/lib/sirena/renderer/error.rb +131 -0
  303. data/lib/sirena/renderer/flowchart.rb +301 -0
  304. data/lib/sirena/renderer/gantt.rb +331 -0
  305. data/lib/sirena/renderer/git_graph.rb +368 -0
  306. data/lib/sirena/renderer/info.rb +93 -0
  307. data/lib/sirena/renderer/kanban.rb +295 -0
  308. data/lib/sirena/renderer/mindmap.rb +396 -0
  309. data/lib/sirena/renderer/packet.rb +239 -0
  310. data/lib/sirena/renderer/pie.rb +235 -0
  311. data/lib/sirena/renderer/quadrant.rb +292 -0
  312. data/lib/sirena/renderer/radar.rb +323 -0
  313. data/lib/sirena/renderer/requirement.rb +371 -0
  314. data/lib/sirena/renderer/sankey.rb +255 -0
  315. data/lib/sirena/renderer/sequence.rb +424 -0
  316. data/lib/sirena/renderer/state_diagram.rb +328 -0
  317. data/lib/sirena/renderer/timeline.rb +304 -0
  318. data/lib/sirena/renderer/treemap.rb +152 -0
  319. data/lib/sirena/renderer/user_journey.rb +331 -0
  320. data/lib/sirena/renderer/xy_chart.rb +452 -0
  321. data/lib/sirena/renderer.rb +8 -0
  322. data/lib/sirena/svg/circle.rb +41 -0
  323. data/lib/sirena/svg/document.rb +103 -0
  324. data/lib/sirena/svg/element.rb +65 -0
  325. data/lib/sirena/svg/ellipse.rb +33 -0
  326. data/lib/sirena/svg/group.rb +71 -0
  327. data/lib/sirena/svg/line.rb +49 -0
  328. data/lib/sirena/svg/path.rb +76 -0
  329. data/lib/sirena/svg/polygon.rb +43 -0
  330. data/lib/sirena/svg/polyline.rb +35 -0
  331. data/lib/sirena/svg/rect.rb +57 -0
  332. data/lib/sirena/svg/style.rb +44 -0
  333. data/lib/sirena/svg/text.rb +72 -0
  334. data/lib/sirena/svg.rb +19 -0
  335. data/lib/sirena/text_measurement.rb +71 -0
  336. data/lib/sirena/theme/builtin/dark.yml +70 -0
  337. data/lib/sirena/theme/builtin/default.yml +80 -0
  338. data/lib/sirena/theme/builtin/high_contrast.yml +70 -0
  339. data/lib/sirena/theme/builtin/light.yml +70 -0
  340. data/lib/sirena/theme/color_palette.rb +48 -0
  341. data/lib/sirena/theme/effect_styles.rb +28 -0
  342. data/lib/sirena/theme/registry.rb +41 -0
  343. data/lib/sirena/theme/shape_styles.rb +28 -0
  344. data/lib/sirena/theme/spacing_config.rb +24 -0
  345. data/lib/sirena/theme/typography.rb +30 -0
  346. data/lib/sirena/theme.rb +69 -0
  347. data/lib/sirena/transform/architecture.rb +273 -0
  348. data/lib/sirena/transform/base.rb +199 -0
  349. data/lib/sirena/transform/block.rb +215 -0
  350. data/lib/sirena/transform/c4.rb +288 -0
  351. data/lib/sirena/transform/class_diagram.rb +296 -0
  352. data/lib/sirena/transform/er_diagram.rb +204 -0
  353. data/lib/sirena/transform/error.rb +39 -0
  354. data/lib/sirena/transform/flowchart.rb +161 -0
  355. data/lib/sirena/transform/gantt.rb +253 -0
  356. data/lib/sirena/transform/git_graph.rb +283 -0
  357. data/lib/sirena/transform/info.rb +39 -0
  358. data/lib/sirena/transform/kanban.rb +180 -0
  359. data/lib/sirena/transform/mindmap.rb +251 -0
  360. data/lib/sirena/transform/packet.rb +185 -0
  361. data/lib/sirena/transform/pie.rb +62 -0
  362. data/lib/sirena/transform/quadrant.rb +167 -0
  363. data/lib/sirena/transform/radar.rb +227 -0
  364. data/lib/sirena/transform/requirement.rb +233 -0
  365. data/lib/sirena/transform/sankey.rb +212 -0
  366. data/lib/sirena/transform/sequence.rb +143 -0
  367. data/lib/sirena/transform/state_diagram.rb +228 -0
  368. data/lib/sirena/transform/timeline.rb +139 -0
  369. data/lib/sirena/transform/treemap.rb +120 -0
  370. data/lib/sirena/transform/user_journey.rb +207 -0
  371. data/lib/sirena/transform/xy_chart.rb +273 -0
  372. data/lib/sirena/transform.rb +8 -0
  373. data/lib/sirena/version.rb +5 -0
  374. data/lib/sirena.rb +328 -0
  375. data/lib/tasks/benchmark.rake +532 -0
  376. data/lib/tasks/examples.rake +468 -0
  377. data/lib/tasks/generate_mermaid_fixtures.rake +363 -0
  378. data/lib/tasks/mermaid_fixtures.rake +46 -0
  379. data/scripts/extract_mermaid_tests.rb +493 -0
  380. data/scripts/rename_to_sirena.rb +73 -0
  381. data/sirena.gemspec +47 -0
  382. metadata +529 -0
@@ -0,0 +1,90 @@
1
+ = State Diagram Examples
2
+
3
+ == Purpose
4
+
5
+ State diagrams visualize the behavior of a system by showing its states and the transitions between them. They are essential for modeling state machines, workflows, and system lifecycle management.
6
+
7
+ == When to Use
8
+
9
+ * System state machines and lifecycle management
10
+ * Connection and session state tracking
11
+ * User interface state flows
12
+ * Protocol state visualization
13
+ * Workflow and business process states
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ stateDiagram-v2
20
+ [*] --> Idle
21
+
22
+ Idle --> Active : start
23
+ Active --> Idle : stop
24
+
25
+ state Active {
26
+ [*] --> Processing
27
+ Processing --> Complete
28
+ }
29
+
30
+ Active --> [*]
31
+ ----
32
+
33
+ **States**: Simple text labels or composite states with nested structure
34
+
35
+ **Transitions**: Arrows with optional labels showing triggers/conditions
36
+
37
+ **Special States**:
38
+ - `[*]` - Start/end state
39
+ - `state Name {...}` - Composite state with sub-states
40
+ - `state "Description" as Name` - State with description
41
+
42
+ **State Features**:
43
+ - Entry/exit actions
44
+ - Choice nodes
45
+ - Fork/join for parallel states
46
+
47
+ == Examples
48
+
49
+ === 01: Simple States
50
+
51
+ Demonstrates a connection state machine with nested composite states, showing transitions, error handling, and complex state hierarchies.
52
+
53
+ **File**: link:01-simple-states.mmd[01-simple-states.mmd]
54
+
55
+ [source,mermaid]
56
+ ----
57
+ include::01-simple-states.mmd[]
58
+ ----
59
+
60
+ image::01-simple-states.svg[]
61
+
62
+ == Features Demonstrated
63
+
64
+ [%header,cols="1,1"]
65
+ |===
66
+ | Feature | Example
67
+
68
+ | Basic states and transitions
69
+ | 01
70
+
71
+ | Start and end states
72
+ | 01
73
+
74
+ | Transition labels
75
+ | 01
76
+
77
+ | Composite states
78
+ | 01
79
+
80
+ | Nested state hierarchies
81
+ | 01
82
+
83
+ | Multiple transition paths
84
+ | 01
85
+ |===
86
+
87
+ == Additional Resources
88
+
89
+ * link:../../README.adoc[Main Documentation]
90
+ * https://mermaid.js.org/syntax/stateDiagram.html[Mermaid State Diagram Documentation]
@@ -0,0 +1,11 @@
1
+ timeline
2
+ title History of Programming Languages
3
+ section Early Years
4
+ 1957 : Fortran released
5
+ 1972 : C language created
6
+ section Modern Era
7
+ 1991 : Python released
8
+ 1995 : Java and JavaScript released
9
+ section Contemporary
10
+ 2009 : Go language released
11
+ 2014 : Swift released
@@ -0,0 +1,36 @@
1
+ <svg
2
+ width="960.0"
3
+ height="440.0"
4
+ viewBox="0 0 960 440"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <text fill="#000000" x="480.0" y="40.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16.0" font-weight="bold">History of Programming Languages</text>
9
+ <text fill="#4472C4" x="80.0" y="100.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Early Years</text>
10
+ <rect fill="#ffffff" stroke="none" x="80.0" y="140.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
11
+ <circle fill="#4472C4" stroke="#000000" stroke-width="2" cx="149.56521739130434" cy="143.0" r="8.0"/>
12
+ <text fill="#000000" x="149.56521739130434" y="175.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Fortran released</text>
13
+ <text fill="#000000" x="149.56521739130434" y="125.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">1957</text>
14
+ <circle fill="#4472C4" stroke="#000000" stroke-width="2" cx="323.47826086956525" cy="143.0" r="8.0"/>
15
+ <text fill="#000000" x="323.47826086956525" y="175.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">C language created</text>
16
+ <text fill="#000000" x="323.47826086956525" y="125.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">1972</text>
17
+ <text fill="#000000" x="80.0" y="166.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">1951</text>
18
+ <text fill="#000000" x="880.0" y="166.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2020</text>
19
+ <text fill="#000000" x="480.0" y="166.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">1986</text>
20
+ <text fill="#ED7D31" x="80.0" y="160.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Modern Era</text>
21
+ <rect fill="#ffffff" stroke="none" x="80.0" y="200.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
22
+ <circle fill="#ED7D31" stroke="#000000" stroke-width="2" cx="543.768115942029" cy="203.0" r="8.0"/>
23
+ <text fill="#000000" x="543.768115942029" y="235.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Python released</text>
24
+ <text fill="#000000" x="543.768115942029" y="185.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">1991</text>
25
+ <circle fill="#ED7D31" stroke="#000000" stroke-width="2" cx="590.1449275362318" cy="203.0" r="8.0"/>
26
+ <text fill="#000000" x="590.1449275362318" y="235.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Java and JavaScript released</text>
27
+ <text fill="#000000" x="590.1449275362318" y="185.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">1995</text>
28
+ <text fill="#A5A5A5" x="80.0" y="220.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Contemporary</text>
29
+ <rect fill="#ffffff" stroke="none" x="80.0" y="260.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
30
+ <circle fill="#A5A5A5" stroke="#000000" stroke-width="2" cx="752.463768115942" cy="263.0" r="8.0"/>
31
+ <text fill="#000000" x="752.463768115942" y="295.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Go language released</text>
32
+ <text fill="#000000" x="752.463768115942" y="245.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">2009</text>
33
+ <circle fill="#A5A5A5" stroke="#000000" stroke-width="2" cx="810.4347826086956" cy="263.0" r="8.0"/>
34
+ <text fill="#000000" x="810.4347826086956" y="295.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Swift released</text>
35
+ <text fill="#000000" x="810.4347826086956" y="245.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">2014</text>
36
+ </svg>
@@ -0,0 +1,15 @@
1
+ timeline
2
+ title Software Development Lifecycle
3
+ section Planning
4
+ Requirements Gathering : 2 weeks
5
+ Design Phase : 3 weeks
6
+ section Development
7
+ Sprint 1 : 2 weeks
8
+ Sprint 2 : 2 weeks
9
+ Sprint 3 : 2 weeks
10
+ section Testing
11
+ QA Testing : 1 week
12
+ User Acceptance : 1 week
13
+ section Deployment
14
+ Staging : 3 days
15
+ Production : 2 days
@@ -0,0 +1,47 @@
1
+ <svg
2
+ width="960.0"
3
+ height="500.0"
4
+ viewBox="0 0 960 500"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <text fill="#000000" x="480.0" y="40.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16.0" font-weight="bold">Software Development Lifecycle</text>
9
+ <text fill="#4472C4" x="80.0" y="100.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Planning</text>
10
+ <rect fill="#ffffff" stroke="none" x="80.0" y="140.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
11
+ <circle fill="#4472C4" stroke="#000000" stroke-width="2" cx="80.0" cy="143.0" r="8.0"/>
12
+ <text fill="#000000" x="80.0" y="175.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2 weeks</text>
13
+ <text fill="#000000" x="80.0" y="125.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Requirements Gathering</text>
14
+ <circle fill="#4472C4" stroke="#000000" stroke-width="2" cx="80.0" cy="143.0" r="8.0"/>
15
+ <text fill="#000000" x="80.0" y="175.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">3 weeks</text>
16
+ <text fill="#000000" x="80.0" y="125.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Design Phase</text>
17
+ <text fill="#000000" x="80.0" y="166.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">0</text>
18
+ <text fill="#000000" x="880.0" y="166.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">4</text>
19
+ <text fill="#000000" x="480.0" y="166.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2</text>
20
+ <text fill="#ED7D31" x="80.0" y="160.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Development</text>
21
+ <rect fill="#ffffff" stroke="none" x="80.0" y="200.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
22
+ <circle fill="#ED7D31" stroke="#000000" stroke-width="2" cx="280.0" cy="203.0" r="8.0"/>
23
+ <text fill="#000000" x="280.0" y="235.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2 weeks</text>
24
+ <text fill="#000000" x="280.0" y="185.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Sprint 1</text>
25
+ <circle fill="#ED7D31" stroke="#000000" stroke-width="2" cx="480.0" cy="203.0" r="8.0"/>
26
+ <text fill="#000000" x="480.0" y="235.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2 weeks</text>
27
+ <text fill="#000000" x="480.0" y="185.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Sprint 2</text>
28
+ <circle fill="#ED7D31" stroke="#000000" stroke-width="2" cx="680.0" cy="203.0" r="8.0"/>
29
+ <text fill="#000000" x="680.0" y="235.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2 weeks</text>
30
+ <text fill="#000000" x="680.0" y="185.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Sprint 3</text>
31
+ <text fill="#A5A5A5" x="80.0" y="220.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Testing</text>
32
+ <rect fill="#ffffff" stroke="none" x="80.0" y="260.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
33
+ <circle fill="#A5A5A5" stroke="#000000" stroke-width="2" cx="80.0" cy="263.0" r="8.0"/>
34
+ <text fill="#000000" x="80.0" y="295.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">1 week</text>
35
+ <text fill="#000000" x="80.0" y="245.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">QA Testing</text>
36
+ <circle fill="#A5A5A5" stroke="#000000" stroke-width="2" cx="80.0" cy="263.0" r="8.0"/>
37
+ <text fill="#000000" x="80.0" y="295.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">1 week</text>
38
+ <text fill="#000000" x="80.0" y="245.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">User Acceptance</text>
39
+ <text fill="#FFC000" x="80.0" y="280.0" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="bold">Deployment</text>
40
+ <rect fill="#ffffff" stroke="none" x="80.0" y="320.0" width="800.0" height="6.0" rx="3.0" ry="3.0"/>
41
+ <circle fill="#FFC000" stroke="#000000" stroke-width="2" cx="80.0" cy="323.0" r="8.0"/>
42
+ <text fill="#000000" x="80.0" y="355.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">3 days</text>
43
+ <text fill="#000000" x="80.0" y="305.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Staging</text>
44
+ <circle fill="#FFC000" stroke="#000000" stroke-width="2" cx="80.0" cy="323.0" r="8.0"/>
45
+ <text fill="#000000" x="80.0" y="355.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">2 days</text>
46
+ <text fill="#000000" x="80.0" y="305.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0" font-weight="bold">Production</text>
47
+ </svg>
@@ -0,0 +1,78 @@
1
+ = Timeline Examples
2
+
3
+ == Purpose
4
+
5
+ Timeline diagrams visualize events chronologically, showing sequences of activities or milestones in temporal order.
6
+
7
+ == When to Use
8
+
9
+ * Project milestone visualization
10
+ * Historical event documentation
11
+ * Process chronology
12
+ * Planning phase transitions
13
+ * Event sequence mapping
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ timeline
20
+ title Project Timeline
21
+ section Phase 1
22
+ Event 1
23
+ Event 2
24
+ section Phase 2
25
+ Event 3
26
+ ----
27
+
28
+ == Examples
29
+
30
+ === 01: Simple Timeline
31
+
32
+ Demonstrates basic timeline with sequential events.
33
+
34
+ **File**: link:01-simple-timeline.mmd[01-simple-timeline.mmd]
35
+
36
+ [source,mermaid]
37
+ ----
38
+ include::01-simple-timeline.mmd[]
39
+ ----
40
+
41
+ image::01-simple-timeline.svg[]
42
+
43
+ === 02: Periods
44
+
45
+ Showcases timeline with time periods and durations.
46
+
47
+ **File**: link:02-periods.mmd[02-periods.mmd]
48
+
49
+ [source,mermaid]
50
+ ----
51
+ include::02-periods.mmd[]
52
+ ----
53
+
54
+ image::02-periods.svg[]
55
+
56
+ == Features Demonstrated
57
+
58
+ [%header,cols="1,1"]
59
+ |===
60
+ | Feature | Example
61
+
62
+ | Basic timeline
63
+ | 01, 02
64
+
65
+ | Section grouping
66
+ | 01, 02
67
+
68
+ | Event sequencing
69
+ | 01, 02
70
+
71
+ | Period visualization
72
+ | 02
73
+ |===
74
+
75
+ == Additional Resources
76
+
77
+ * link:../../README.adoc[Main Documentation]
78
+ * https://mermaid.js.org/syntax/timeline.html[Mermaid Timeline Documentation]
@@ -0,0 +1,12 @@
1
+ treemap-beta
2
+ "Company Revenue"
3
+ "North America"
4
+ "US": 45000
5
+ "Canada": 12000
6
+ "Europe"
7
+ "UK": 28000
8
+ "Germany": 22000
9
+ "France": 18000
10
+ "Asia"
11
+ "Japan": 15000
12
+ "China": 35000
@@ -0,0 +1,59 @@
1
+ <svg
2
+ width="800.0"
3
+ height="600.0"
4
+ viewBox="0 0 800 600"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g>
9
+ <rect fill="#8dd3c7" stroke="#000000" stroke-width="2" x="10.0" y="10.0" width="780.0" height="580.0" rx="4.0" ry="4.0"/>
10
+ <text fill="#000000" x="15.0" y="25.0" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">Company Revenue</text>
11
+ <g>
12
+ <rect fill="#ffffb3" stroke="#000000" stroke-width="2" x="20.0" y="30.0" width="760.0" height="179.14285714285717" rx="4.0" ry="4.0"/>
13
+ <text fill="#000000" x="25.0" y="45.0" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">North America</text>
14
+ <g>
15
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="50.0" width="740.0" height="117.74436090225566" rx="4.0" ry="4.0"/>
16
+ <text fill="#000000" x="35.0" y="65.0" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">US</text>
17
+ <text fill="#000000" x="35.0" y="80.0" font-family="Arial, Helvetica, sans-serif" font-size="10">45000</text>
18
+ </g>
19
+ <g>
20
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="177.74436090225566" width="740.0" height="40.0" rx="4.0" ry="4.0"/>
21
+ <text fill="#000000" x="35.0" y="192.74436090225566" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">Canada</text>
22
+ <text fill="#000000" x="35.0" y="207.74436090225566" font-family="Arial, Helvetica, sans-serif" font-size="10">12000</text>
23
+ </g>
24
+ </g>
25
+ <g>
26
+ <rect fill="#ffffb3" stroke="#000000" stroke-width="2" x="20.0" y="219.14285714285717" width="760.0" height="213.71428571428572" rx="4.0" ry="4.0"/>
27
+ <text fill="#000000" x="25.0" y="234.14285714285717" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">Europe</text>
28
+ <g>
29
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="239.14285714285717" width="740.0" height="75.6470588235294" rx="4.0" ry="4.0"/>
30
+ <text fill="#000000" x="35.0" y="254.14285714285717" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">UK</text>
31
+ <text fill="#000000" x="35.0" y="269.14285714285717" font-family="Arial, Helvetica, sans-serif" font-size="10">28000</text>
32
+ </g>
33
+ <g>
34
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="324.78991596638656" width="740.0" height="59.43697478991597" rx="4.0" ry="4.0"/>
35
+ <text fill="#000000" x="35.0" y="339.78991596638656" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">Germany</text>
36
+ <text fill="#000000" x="35.0" y="354.78991596638656" font-family="Arial, Helvetica, sans-serif" font-size="10">22000</text>
37
+ </g>
38
+ <g>
39
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="394.2268907563025" width="740.0" height="48.63025210084034" rx="4.0" ry="4.0"/>
40
+ <text fill="#000000" x="35.0" y="409.2268907563025" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">France</text>
41
+ <text fill="#000000" x="35.0" y="424.2268907563025" font-family="Arial, Helvetica, sans-serif" font-size="10">18000</text>
42
+ </g>
43
+ </g>
44
+ <g>
45
+ <rect fill="#ffffb3" stroke="#000000" stroke-width="2" x="20.0" y="442.8571428571429" width="760.0" height="157.14285714285714" rx="4.0" ry="4.0"/>
46
+ <text fill="#000000" x="25.0" y="457.8571428571429" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">Asia</text>
47
+ <g>
48
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="462.8571428571429" width="740.0" height="40.0" rx="4.0" ry="4.0"/>
49
+ <text fill="#000000" x="35.0" y="477.8571428571429" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">Japan</text>
50
+ <text fill="#000000" x="35.0" y="492.8571428571429" font-family="Arial, Helvetica, sans-serif" font-size="10">15000</text>
51
+ </g>
52
+ <g>
53
+ <rect fill="#bebada" stroke="#000000" stroke-width="2" x="30.0" y="512.8571428571429" width="740.0" height="88.99999999999999" rx="4.0" ry="4.0"/>
54
+ <text fill="#000000" x="35.0" y="527.8571428571429" font-family="Arial, Helvetica, sans-serif" font-size="12" font-weight="bold">China</text>
55
+ <text fill="#000000" x="35.0" y="542.8571428571429" font-family="Arial, Helvetica, sans-serif" font-size="10">35000</text>
56
+ </g>
57
+ </g>
58
+ </g>
59
+ </svg>
@@ -0,0 +1,59 @@
1
+ = Treemap Diagram Examples
2
+
3
+ == Purpose
4
+
5
+ Treemap diagrams display hierarchical data as nested rectangles, with size representing quantitative values.
6
+
7
+ == When to Use
8
+
9
+ * Disk space usage visualization
10
+ * Portfolio allocation
11
+ * Hierarchical data proportions
12
+ * Market share by category
13
+ * Resource distribution trees
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ treemap
20
+ Root
21
+ Child1: 40
22
+ Child2: 60
23
+ ----
24
+
25
+ == Examples
26
+
27
+ === 01: Basic Treemap
28
+
29
+ Demonstrates basic treemap with hierarchical values.
30
+
31
+ **File**: link:01-basic-treemap.mmd[01-basic-treemap.mmd]
32
+
33
+ [source,mermaid]
34
+ ----
35
+ include::01-basic-treemap.mmd[]
36
+ ----
37
+
38
+ image::01-basic-treemap.svg[]
39
+
40
+ == Features Demonstrated
41
+
42
+ [%header,cols="1,1"]
43
+ |===
44
+ | Feature | Example
45
+
46
+ | Hierarchical structure
47
+ | 01
48
+
49
+ | Proportional sizing
50
+ | 01
51
+
52
+ | Nested categories
53
+ | 01
54
+ |===
55
+
56
+ == Additional Resources
57
+
58
+ * link:../../README.adoc[Main Documentation]
59
+ * https://mermaid.js.org/syntax/treemap.html[Mermaid Treemap Documentation]
@@ -0,0 +1,23 @@
1
+ journey
2
+ title Customer Support Interaction Journey
3
+ section Discovery
4
+ Visit help center: 3: Customer
5
+ Search for solution: 2: Customer
6
+ Click support chat: 4: Customer
7
+ section Initial Contact
8
+ Greet customer: 5: Customer, Agent
9
+ Describe issue: 3: Customer, Agent
10
+ Agent reviews account: 4: Agent, System
11
+ section Diagnosis
12
+ Agent asks clarifying questions: 4: Customer, Agent
13
+ Customer provides details: 3: Customer, Agent
14
+ Agent checks logs: 2: Agent, System
15
+ Agent identifies root cause: 5: Agent
16
+ section Resolution
17
+ Agent explains solution: 5: Customer, Agent
18
+ Customer follows steps: 4: Customer
19
+ Issue resolved: 5: Customer, Agent
20
+ section Follow-up
21
+ Agent confirms resolution: 5: Customer, Agent
22
+ Customer rates experience: 5: Customer
23
+ Agent documents case: 4: Agent, System
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="400" height="200" viewBox="0 0 400 200" version="1.2" xmlns="http://www.w3.org/2000/svg">
3
+ <rect x="50" y="50" width="300" height="100" fill="#f0f0f0" stroke="#000000" stroke-width="2"/>
4
+ <text x="200" y="100" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#000000">User Journey (parser needs fixes)</text>
5
+ </svg>
@@ -0,0 +1,18 @@
1
+ journey
2
+ title E-commerce Purchase Flow
3
+ section Browse
4
+ View Products: 5: Customer
5
+ Search Items: 4: Customer
6
+ Filter Results: 3: Customer
7
+ section Purchase
8
+ Add to Cart: 5: Customer
9
+ Verify Stock: 3: System
10
+ Apply Discount: 4: Customer, System
11
+ section Checkout
12
+ Enter Payment: 4: Customer
13
+ Process Payment: 5: Payment Gateway
14
+ Confirm Order: 5: Customer, System
15
+ section Fulfillment
16
+ Pack Order: 4: Warehouse
17
+ Ship Order: 5: Courier
18
+ Track Shipment: 5: Customer
@@ -0,0 +1,129 @@
1
+ <svg
2
+ width="770.0"
3
+ height="890.0"
4
+ viewBox="0 0 770 890"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <text fill="#000000" x="20.0" y="40.0" font-family="Arial, sans-serif" font-size="20" font-weight="bold">E-commerce Purchase Flow</text>
9
+ <text fill="#666666" x="20.0" y="76.0" font-family="Arial, sans-serif" font-size="16" font-weight="bold">Browse</text>
10
+ <g id="task-task_0">
11
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="50.0" y="50.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
12
+ <text fill="#000000" x="120.0" y="74.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">View Products</text>
13
+ <text fill="#000000" x="120.0" y="102.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">5</text>
14
+ <text fill="#333333" x="120.0" y="123.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer</text>
15
+ </g>
16
+ <g id="task-task_1">
17
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="300.0" y="50.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
18
+ <text fill="#000000" x="370.0" y="74.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Search Items</text>
19
+ <text fill="#000000" x="370.0" y="102.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">4</text>
20
+ <text fill="#333333" x="370.0" y="123.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer</text>
21
+ </g>
22
+ <g id="task-task_2">
23
+ <rect fill="#feca57" stroke="#333333" stroke-width="2" x="550.0" y="50.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
24
+ <text fill="#000000" x="620.0" y="74.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Filter Results</text>
25
+ <text fill="#000000" x="620.0" y="102.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">3</text>
26
+ <text fill="#333333" x="620.0" y="123.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer</text>
27
+ </g>
28
+ <text fill="#666666" x="20.0" y="122.0" font-family="Arial, sans-serif" font-size="16" font-weight="bold">Purchase</text>
29
+ <g id="task-task_3">
30
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="50.0" y="250.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
31
+ <text fill="#000000" x="120.0" y="274.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Add to Cart</text>
32
+ <text fill="#000000" x="120.0" y="302.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">5</text>
33
+ <text fill="#333333" x="120.0" y="323.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer</text>
34
+ </g>
35
+ <g id="task-task_4">
36
+ <rect fill="#feca57" stroke="#333333" stroke-width="2" x="300.0" y="250.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
37
+ <text fill="#000000" x="370.0" y="274.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Verify Stock</text>
38
+ <text fill="#000000" x="370.0" y="302.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">3</text>
39
+ <text fill="#333333" x="370.0" y="323.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">System</text>
40
+ </g>
41
+ <g id="task-task_5">
42
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="550.0" y="250.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
43
+ <text fill="#000000" x="620.0" y="274.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Apply Discount</text>
44
+ <text fill="#000000" x="620.0" y="302.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">4</text>
45
+ <text fill="#333333" x="620.0" y="323.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer, System</text>
46
+ </g>
47
+ <text fill="#666666" x="20.0" y="168.0" font-family="Arial, sans-serif" font-size="16" font-weight="bold">Checkout</text>
48
+ <g id="task-task_6">
49
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="50.0" y="450.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
50
+ <text fill="#000000" x="120.0" y="474.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Enter Payment</text>
51
+ <text fill="#000000" x="120.0" y="502.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">4</text>
52
+ <text fill="#333333" x="120.0" y="523.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer</text>
53
+ </g>
54
+ <g id="task-task_7">
55
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="300.0" y="450.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
56
+ <text fill="#000000" x="370.0" y="474.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Process Payment</text>
57
+ <text fill="#000000" x="370.0" y="502.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">5</text>
58
+ <text fill="#333333" x="370.0" y="523.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Payment Gateway</text>
59
+ </g>
60
+ <g id="task-task_8">
61
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="550.0" y="450.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
62
+ <text fill="#000000" x="620.0" y="474.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Confirm Order</text>
63
+ <text fill="#000000" x="620.0" y="502.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">5</text>
64
+ <text fill="#333333" x="620.0" y="523.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer, System</text>
65
+ </g>
66
+ <text fill="#666666" x="20.0" y="214.0" font-family="Arial, sans-serif" font-size="16" font-weight="bold">Fulfillment</text>
67
+ <g id="task-task_9">
68
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="50.0" y="650.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
69
+ <text fill="#000000" x="120.0" y="674.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Pack Order</text>
70
+ <text fill="#000000" x="120.0" y="702.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">4</text>
71
+ <text fill="#333333" x="120.0" y="723.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Warehouse</text>
72
+ </g>
73
+ <g id="task-task_10">
74
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="300.0" y="650.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
75
+ <text fill="#000000" x="370.0" y="674.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Ship Order</text>
76
+ <text fill="#000000" x="370.0" y="702.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">5</text>
77
+ <text fill="#333333" x="370.0" y="723.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Courier</text>
78
+ </g>
79
+ <g id="task-task_11">
80
+ <rect fill="#48dbfb" stroke="#333333" stroke-width="2" x="550.0" y="650.0" width="140.0" height="80.0" rx="5.0" ry="5.0"/>
81
+ <text fill="#000000" x="620.0" y="674.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold">Track Shipment</text>
82
+ <text fill="#000000" x="620.0" y="702.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold">5</text>
83
+ <text fill="#333333" x="620.0" y="723.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="11">Customer</text>
84
+ </g>
85
+ <g id="arrow-flow_0">
86
+ <line stroke="#666666" stroke-width="2" x1="190.0" y1="90.0" x2="300.0" y2="90.0"/>
87
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 300,90 L 291.33974596215563,95.0 M 300,90 L 291.33974596215563,85.0"/>
88
+ </g>
89
+ <g id="arrow-flow_1">
90
+ <line stroke="#666666" stroke-width="2" x1="440.0" y1="90.0" x2="550.0" y2="90.0"/>
91
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 550,90 L 541.3397459621556,95.0 M 550,90 L 541.3397459621556,85.0"/>
92
+ </g>
93
+ <g id="arrow-flow_2">
94
+ <line stroke="#666666" stroke-width="2" x1="690.0" y1="90.0" x2="50.0" y2="290.0"/>
95
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 50,290 L 56.774664118139754,282.64446289613124 M 50,290 L 59.75741404949922,292.1892626764816"/>
96
+ </g>
97
+ <g id="arrow-flow_3">
98
+ <line stroke="#666666" stroke-width="2" x1="190.0" y1="290.0" x2="300.0" y2="290.0"/>
99
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 300,290 L 291.33974596215563,295.0 M 300,290 L 291.33974596215563,285.0"/>
100
+ </g>
101
+ <g id="arrow-flow_4">
102
+ <line stroke="#666666" stroke-width="2" x1="440.0" y1="290.0" x2="550.0" y2="290.0"/>
103
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 550,290 L 541.3397459621556,295.0 M 550,290 L 541.3397459621556,285.0"/>
104
+ </g>
105
+ <g id="arrow-flow_5">
106
+ <line stroke="#666666" stroke-width="2" x1="690.0" y1="290.0" x2="50.0" y2="490.0"/>
107
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 50,490 L 56.774664118139754,482.64446289613124 M 50,490 L 59.75741404949922,492.1892626764816"/>
108
+ </g>
109
+ <g id="arrow-flow_6">
110
+ <line stroke="#666666" stroke-width="2" x1="190.0" y1="490.0" x2="300.0" y2="490.0"/>
111
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 300,490 L 291.33974596215563,495.0 M 300,490 L 291.33974596215563,485.0"/>
112
+ </g>
113
+ <g id="arrow-flow_7">
114
+ <line stroke="#666666" stroke-width="2" x1="440.0" y1="490.0" x2="550.0" y2="490.0"/>
115
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 550,490 L 541.3397459621556,495.0 M 550,490 L 541.3397459621556,485.0"/>
116
+ </g>
117
+ <g id="arrow-flow_8">
118
+ <line stroke="#666666" stroke-width="2" x1="690.0" y1="490.0" x2="50.0" y2="690.0"/>
119
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 50,690 L 56.774664118139754,682.6444628961312 M 50,690 L 59.75741404949922,692.1892626764816"/>
120
+ </g>
121
+ <g id="arrow-flow_9">
122
+ <line stroke="#666666" stroke-width="2" x1="190.0" y1="690.0" x2="300.0" y2="690.0"/>
123
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 300,690 L 291.33974596215563,695.0 M 300,690 L 291.33974596215563,685.0"/>
124
+ </g>
125
+ <g id="arrow-flow_10">
126
+ <line stroke="#666666" stroke-width="2" x1="440.0" y1="690.0" x2="550.0" y2="690.0"/>
127
+ <path fill="none" stroke="#666666" stroke-width="2" d="M 550,690 L 541.3397459621556,695.0 M 550,690 L 541.3397459621556,685.0"/>
128
+ </g>
129
+ </svg>