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,192 @@
1
+ ---
2
+ layout: default
3
+ title: Diagram Types
4
+ nav_order: 5
5
+ has_children: true
6
+ ---
7
+
8
+ == Diagram Types
9
+
10
+ Complete reference documentation for all 19 diagram types supported by Sirena.
11
+
12
+ == What's in This Section
13
+
14
+ Detailed syntax and examples for:
15
+
16
+ * Flowchart diagrams
17
+ * Sequence diagrams
18
+ * Class diagrams
19
+ * State diagrams
20
+ * ER diagrams
21
+ * User journey diagrams
22
+ * Git graph diagrams
23
+ * Pie charts
24
+ * Gantt charts
25
+ * Quadrant charts
26
+ * Requirement diagrams
27
+ * C4 diagrams
28
+ * Mindmaps
29
+ * Timeline diagrams
30
+ * Sankey diagrams
31
+ * XY charts
32
+ * Block diagrams
33
+ * Architecture diagrams
34
+ * Kanban boards
35
+
36
+ Plus additional specialized types:
37
+
38
+ * Radar charts
39
+ * Treemap diagrams
40
+ * Packet diagrams
41
+ * Info diagrams
42
+ * Error diagrams
43
+
44
+ == Diagram Type Documentation Format
45
+
46
+ Each diagram type page includes:
47
+
48
+ * **Overview** - What the diagram type is for
49
+ * **Use cases** - When to use this type
50
+ * **Syntax specification** - Complete syntax reference
51
+ * **Elements** - Available node/element types
52
+ * **Relationships** - Connection and edge types
53
+ * **Examples** - From basic to advanced
54
+ * **Features** - Special capabilities
55
+ * **Limitations** - Current constraints
56
+ * **Best practices** - Recommended usage patterns
57
+
58
+ == Quick Reference
59
+
60
+ [cols="2,3,2"]
61
+ |===
62
+ |Diagram Type |Primary Use Case |Keyword
63
+
64
+ |link:{% link _diagram_types/flowchart.adoc %}[Flowchart]
65
+ |Process flows and decision trees
66
+ |`graph`, `flowchart`
67
+
68
+ |link:{% link _diagram_types/sequence-diagram.adoc %}[Sequence]
69
+ |Message interactions over time
70
+ |`sequenceDiagram`
71
+
72
+ |link:{% link _diagram_types/class-diagram.adoc %}[Class]
73
+ |Object-oriented design
74
+ |`classDiagram`
75
+
76
+ |link:{% link _diagram_types/state-diagram.adoc %}[State]
77
+ |State machines
78
+ |`stateDiagram-v2`
79
+
80
+ |link:{% link _diagram_types/er-diagram.adoc %}[ER Diagram]
81
+ |Database design
82
+ |`erDiagram`
83
+
84
+ |link:{% link _diagram_types/user-journey.adoc %}[User Journey]
85
+ |User experience flows
86
+ |`journey`
87
+
88
+ |link:{% link _diagram_types/git-graph.adoc %}[Git Graph]
89
+ |Repository history
90
+ |`gitGraph`
91
+
92
+ |link:{% link _diagram_types/pie-chart.adoc %}[Pie Chart]
93
+ |Proportional data
94
+ |`pie`
95
+
96
+ |link:{% link _diagram_types/gantt-chart.adoc %}[Gantt]
97
+ |Project timelines
98
+ |`gantt`
99
+
100
+ |link:{% link _diagram_types/quadrant-chart.adoc %}[Quadrant]
101
+ |Priority matrices
102
+ |`quadrantChart`
103
+
104
+ |link:{% link _diagram_types/requirement-diagram.adoc %}[Requirement]
105
+ |Requirements traceability
106
+ |`requirementDiagram`
107
+
108
+ |link:{% link _diagram_types/c4-diagram.adoc %}[C4]
109
+ |Software architecture
110
+ |`C4Context`, `C4Container`, `C4Component`, `C4Dynamic`, `C4Deployment`
111
+
112
+ |link:{% link _diagram_types/mindmap.adoc %}[Mindmap]
113
+ |Hierarchical ideas
114
+ |`mindmap`
115
+
116
+ |link:{% link _diagram_types/timeline.adoc %}[Timeline]
117
+ |Historical events
118
+ |`timeline`
119
+
120
+ |link:{% link _diagram_types/sankey-diagram.adoc %}[Sankey]
121
+ |Flow quantities
122
+ |`sankey-beta`
123
+
124
+ |link:{% link _diagram_types/xy-chart.adoc %}[XY Chart]
125
+ |Data plotting
126
+ |`xychart-beta`
127
+
128
+ |link:{% link _diagram_types/block-diagram.adoc %}[Block]
129
+ |Component relationships
130
+ |`block-beta`
131
+
132
+ |link:{% link _diagram_types/architecture-diagram.adoc %}[Architecture]
133
+ |System architecture
134
+ |`architecture-beta`
135
+
136
+ |link:{% link _diagram_types/kanban-diagram.adoc %}[Kanban]
137
+ |Workflow boards
138
+ |`kanban`
139
+ |===
140
+
141
+ == Choosing the Right Diagram Type
142
+
143
+ === For Processes and Workflows
144
+
145
+ * **Flowchart** - General process flows
146
+ * **Sequence** - Time-based interactions
147
+ * **State** - State transitions
148
+ * **User Journey** - User experience flows
149
+
150
+ === For Structure and Relationships
151
+
152
+ * **Class** - Object relationships
153
+ * **ER Diagram** - Data relationships
154
+ * **Block** - Component relationships
155
+ * **Architecture** - System structure
156
+
157
+ === For Data Visualization
158
+
159
+ * **Pie Chart** - Proportions
160
+ * **XY Chart** - Data points
161
+ * **Sankey** - Flow quantities
162
+ * **Quadrant** - Priority/complexity matrices
163
+
164
+ === For Planning and Tracking
165
+
166
+ * **Gantt** - Project schedules
167
+ * **Timeline** - Historical events
168
+ * **Kanban** - Workflow status
169
+ * **Requirement** - Requirements traceability
170
+
171
+ === For Software Development
172
+
173
+ * **C4** - Architecture documentation
174
+ * **Git Graph** - Repository history
175
+ * **Class** - Code structure
176
+ * **Sequence** - API interactions
177
+
178
+ == Mermaid.js Compatibility
179
+
180
+ All diagram types maintain syntax compatibility with Mermaid.js. See link:{% link _pages/compatibility.adoc %}[Compatibility Guide] for detailed comparison.
181
+
182
+ == Examples
183
+
184
+ Find complete examples in the GitHub repository:
185
+
186
+ * https://github.com/claricle/sirena/tree/main/examples[Example Diagrams]
187
+
188
+ == Need Help?
189
+
190
+ * Check link:{% link _tutorials/creating-first-diagram.adoc %}[Creating Your First Diagram] tutorial
191
+ * See link:{% link _guides/best-practices.adoc %}[Best Practices] guide
192
+ * Visit https://github.com/claricle/sirena/issues[GitHub Issues] for support
@@ -0,0 +1,103 @@
1
+ = Info Diagram
2
+ :toc:
3
+ :toclevels: 3
4
+
5
+ == Purpose
6
+
7
+ Info diagrams display simple informational messages or status information in Mermaid syntax. They are utility diagrams used to show system information, help text, or status messages.
8
+
9
+ == Syntax
10
+
11
+ === Basic info diagram
12
+
13
+ The simplest form displays just an info indicator:
14
+
15
+ [source,mermaid]
16
+ ----
17
+ info
18
+ ----
19
+
20
+ === Info with showInfo flag
21
+
22
+ You can enable the `showInfo` flag to display additional information:
23
+
24
+ [source,mermaid]
25
+ ----
26
+ info showInfo
27
+ ----
28
+
29
+ The `showInfo` flag can also be specified on a separate line:
30
+
31
+ [source,mermaid]
32
+ ----
33
+ info
34
+ showInfo
35
+ ----
36
+
37
+ == Features
38
+
39
+ === Visual representation
40
+
41
+ Info diagrams render as:
42
+
43
+ * A centered box with informational styling (light blue background)
44
+ * "Info" text or "Info: showInfo enabled" when the flag is set
45
+ * Clean, minimal design suitable for displaying status messages
46
+
47
+ === Theme integration
48
+
49
+ Info diagrams integrate with Sirena's theme system:
50
+
51
+ * `node_bg`: Background color for the info box (default: light blue)
52
+ * `node_stroke`: Border color for the info box (default: blue)
53
+ * `label_text`: Text color for the message (default: dark blue)
54
+ * Typography settings for font family and size
55
+
56
+ == Implementation details
57
+
58
+ === Parser
59
+
60
+ The info diagram parser (`Sirena::Parser::InfoParser`) uses Parslet grammar to handle:
61
+
62
+ * Basic `info` keyword
63
+ * Optional `showInfo` flag (inline or on separate line)
64
+ * Additional text after `info` keyword (ignored for compatibility)
65
+
66
+ === Model
67
+
68
+ The info diagram model (`Sirena::Diagram::Info`) contains:
69
+
70
+ * `show_info`: Boolean flag indicating if showInfo is enabled
71
+
72
+ === Renderer
73
+
74
+ The info renderer (`Sirena::Renderer::InfoRenderer`) creates:
75
+
76
+ * A rounded rectangle box (400x100 pixels)
77
+ * Centered text displaying the info message
78
+ * Theme-aware styling for colors and typography
79
+
80
+ == Examples
81
+
82
+ === Simple info
83
+
84
+ [source,mermaid]
85
+ ----
86
+ info
87
+ ----
88
+
89
+ === Info with flag enabled
90
+
91
+ [source,mermaid]
92
+ ----
93
+ info showInfo
94
+ ----
95
+
96
+ == Use cases
97
+
98
+ Info diagrams are useful for:
99
+
100
+ * Displaying system status messages
101
+ * Showing help text in documentation
102
+ * Indicating informational states in workflows
103
+ * Testing and debugging diagram rendering
@@ -0,0 +1,262 @@
1
+ = Kanban Board Diagrams
2
+ :toc:
3
+ :toclevels: 3
4
+
5
+ == Overview
6
+
7
+ Kanban board diagrams visualize workflow with columns and cards, commonly used in agile project management and task tracking.
8
+
9
+ == Syntax
10
+
11
+ === Basic Structure
12
+
13
+ [source,mermaid]
14
+ ----
15
+ kanban
16
+ column_id[Column Title]
17
+ card_id[Card Text]
18
+ ----
19
+
20
+ === Complete Example
21
+
22
+ [source,mermaid]
23
+ ----
24
+ kanban
25
+ id1[Todo]
26
+ docs[Create Documentation]
27
+ blog[Create Blog]@{ priority: 'High', ticket: 'MC-1001' }
28
+ id2[In Progress]
29
+ feature[Implement Feature]@{ assigned: 'dev1' }
30
+ id3[Done]
31
+ release[Release v1.0]
32
+ ----
33
+
34
+ == Features
35
+
36
+ === Columns
37
+
38
+ Columns represent workflow stages (e.g., Todo, In Progress, Done).
39
+
40
+ .Column Definition
41
+ [source,mermaid]
42
+ ----
43
+ kanban
44
+ column_id[Column Name]
45
+ ----
46
+
47
+ Where:
48
+
49
+ * `column_id`: Unique identifier for the column
50
+ * `Column Name`: Display name for the column
51
+
52
+ === Cards
53
+
54
+ Cards represent individual work items or tasks.
55
+
56
+ .Card Definition
57
+ [source,mermaid]
58
+ ----
59
+ kanban
60
+ column_id[Column Name]
61
+ card_id[Card Text]
62
+ ----
63
+
64
+ Where:
65
+
66
+ * `card_id`: Unique identifier for the card
67
+ * `Card Text`: Description of the work item
68
+
69
+ === Card Metadata
70
+
71
+ Cards can include metadata for additional information.
72
+
73
+ .Metadata Syntax
74
+ [source,mermaid]
75
+ ----
76
+ card_id[Card Text]@{ key: 'value', key2: 'value2' }
77
+ ----
78
+
79
+ ==== Supported Metadata Fields
80
+
81
+ * `assigned`: User assigned to the task
82
+ * `ticket`: External ticket/issue number
83
+ * `priority`: Priority level (e.g., High, Medium, Low)
84
+ * `icon`: Icon identifier
85
+ * `label`: Additional label or tag
86
+
87
+ .Metadata Example
88
+ [source,mermaid]
89
+ ----
90
+ kanban
91
+ todo[Todo]
92
+ task[Fix Bug]@{
93
+ assigned: 'john',
94
+ priority: 'High',
95
+ ticket: 'JIRA-123'
96
+ }
97
+ ----
98
+
99
+ == Layout
100
+
101
+ The renderer automatically:
102
+
103
+ * Positions columns horizontally from left to right
104
+ * Stacks cards vertically within each column
105
+ * Calculates appropriate spacing and dimensions
106
+ * Displays metadata below card text
107
+
108
+ == Styling
109
+
110
+ Kanban diagrams support theme customization:
111
+
112
+ * Column headers use primary theme color
113
+ * Cards use light backgrounds with borders
114
+ * Metadata uses secondary text color
115
+ * Card count badges appear on column headers
116
+
117
+ == Implementation Details
118
+
119
+ === Architecture
120
+
121
+ The Kanban implementation follows the standard 7-file architecture:
122
+
123
+ . **Diagram Model** (`lib/sirena/diagram/kanban.rb`)
124
+ - `KanbanCard`: Card with text and metadata
125
+ - `KanbanColumn`: Column containing cards
126
+ - `Kanban`: Complete board with columns
127
+
128
+ . **Parser Grammar** (`lib/sirena/parser/grammars/kanban.rb`)
129
+ - Parslet grammar for kanban syntax
130
+ - Handles columns, cards, and metadata
131
+
132
+ . **Transform** (`lib/sirena/parser/transforms/kanban.rb`)
133
+ - Converts parse tree to diagram model
134
+ - Extracts and validates metadata
135
+
136
+ . **Parser** (`lib/sirena/parser/kanban.rb`)
137
+ - Integrates grammar and transform
138
+ - Creates diagram instances
139
+
140
+ . **Layout Transform** (`lib/sirena/transform/kanban.rb`)
141
+ - Calculates column positions
142
+ - Determines card layout within columns
143
+ - Computes dimensions based on content
144
+
145
+ . **Renderer** (`lib/sirena/renderer/kanban.rb`)
146
+ - Draws column backgrounds and headers
147
+ - Renders cards with text
148
+ - Displays metadata fields
149
+
150
+ . **Tests**
151
+ - Parser tests: `spec/sirena/parser/kanban_spec.rb`
152
+ - Renderer tests: `spec/sirena/renderer/kanban_spec.rb`
153
+
154
+ === Data Flow
155
+
156
+ [source]
157
+ ----
158
+ Mermaid Source
159
+
160
+ Grammar (Parslet)
161
+
162
+ Parse Tree
163
+
164
+ Transform
165
+
166
+ Diagram Model (Kanban, KanbanColumn, KanbanCard)
167
+
168
+ Layout Transform
169
+
170
+ Positioned Layout
171
+
172
+ Renderer
173
+
174
+ SVG Output
175
+ ----
176
+
177
+ == Examples
178
+
179
+ === Simple Kanban Board
180
+
181
+ [source,mermaid]
182
+ ----
183
+ kanban
184
+ todo[Todo]
185
+ task1[Task 1]
186
+ task2[Task 2]
187
+ doing[Doing]
188
+ task3[Task 3]
189
+ done[Done]
190
+ task4[Task 4]
191
+ ----
192
+
193
+ === Board with Metadata
194
+
195
+ [source,mermaid]
196
+ ----
197
+ kanban
198
+ backlog[Backlog]
199
+ story1[User Story 1]@{ priority: 'High' }
200
+ story2[User Story 2]@{ priority: 'Medium' }
201
+ development[Development]
202
+ feature1[Feature A]@{ assigned: 'alice', ticket: 'DEV-101' }
203
+ review[Review]
204
+ feature2[Feature B]@{ assigned: 'bob' }
205
+ completed[Completed]
206
+ feature3[Feature C]
207
+ ----
208
+
209
+ === Complex Workflow
210
+
211
+ [source,mermaid]
212
+ ----
213
+ kanban
214
+ ideas[Ideas]
215
+ idea1[New Feature Idea]@{ label: 'enhancement' }
216
+ planning[Planning]
217
+ plan1[Sprint Planning]@{ assigned: 'team' }
218
+ development[Development]
219
+ dev1[API Implementation]@{
220
+ assigned: 'dev1',
221
+ priority: 'High',
222
+ ticket: 'PROJ-201'
223
+ }
224
+ testing[Testing]
225
+ test1[Integration Tests]@{ assigned: 'qa1' }
226
+ deployment[Deployment]
227
+ deploy1[Production Release]@{ ticket: 'REL-1.0' }
228
+ ----
229
+
230
+ == Best Practices
231
+
232
+ === Column Organization
233
+
234
+ * Use clear, action-oriented column names
235
+ * Limit the number of columns to 3-6 for readability
236
+ * Order columns from left (start) to right (end) in workflow sequence
237
+
238
+ === Card Content
239
+
240
+ * Keep card text concise and descriptive
241
+ * Use consistent naming conventions
242
+ * Include relevant metadata for tracking
243
+
244
+ === Metadata Usage
245
+
246
+ * Use `assigned` for ownership clarity
247
+ * Include `ticket` numbers for traceability
248
+ * Set `priority` to highlight important items
249
+ * Add `label` for categorization
250
+
251
+ === Board Structure
252
+
253
+ * Group related cards in appropriate columns
254
+ * Limit cards per column for visual clarity
255
+ * Use metadata instead of embedding info in text
256
+
257
+ == See Also
258
+
259
+ * link:../README.adoc[Sirena Documentation]
260
+ * link:user-journey-diagram.adoc[User Journey Diagrams]
261
+ * link:gantt-diagram.adoc[Gantt Charts]
262
+ * link:timeline-diagram.adoc[Timeline Diagrams]