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,75 @@
1
+ = Pie Chart Examples
2
+
3
+ == Purpose
4
+
5
+ Pie charts visualize proportional data, showing how individual parts contribute to a whole. Ideal for displaying percentages and relative distributions.
6
+
7
+ == When to Use
8
+
9
+ * Market share analysis
10
+ * Budget allocation visualization
11
+ * Survey result presentation
12
+ * Resource distribution
13
+ * Percentage breakdowns
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ pie title Sample Distribution
20
+ "Category A" : 45
21
+ "Category B" : 30
22
+ "Category C" : 25
23
+ ----
24
+
25
+ == Examples
26
+
27
+ === 01: Simple Distribution
28
+
29
+ Demonstrates basic pie chart with labeled sections.
30
+
31
+ **File**: link:01-simple-distribution.mmd[01-simple-distribution.mmd]
32
+
33
+ [source,mermaid]
34
+ ----
35
+ include::01-simple-distribution.mmd[]
36
+ ----
37
+
38
+ image::01-simple-distribution.svg[]
39
+
40
+ === 02: Labeled Slices
41
+
42
+ Showcases detailed pie chart with multiple categories.
43
+
44
+ **File**: link:02-labeled-slices.mmd[02-labeled-slices.mmd]
45
+
46
+ [source,mermaid]
47
+ ----
48
+ include::02-labeled-slices.mmd[]
49
+ ----
50
+
51
+ image::02-labeled-slices.svg[]
52
+
53
+ == Features Demonstrated
54
+
55
+ [%header,cols="1,1"]
56
+ |===
57
+ | Feature | Example
58
+
59
+ | Basic pie chart
60
+ | 01, 02
61
+
62
+ | Multiple categories
63
+ | 02
64
+
65
+ | Proportional visualization
66
+ | 01, 02
67
+
68
+ | Title display
69
+ | 01, 02
70
+ |===
71
+
72
+ == Additional Resources
73
+
74
+ * link:../../README.adoc[Main Documentation]
75
+ * https://mermaid.js.org/syntax/pie.html[Mermaid Pie Chart Documentation]
@@ -0,0 +1,13 @@
1
+ quadrantChart
2
+ title Product Feature Priority Matrix
3
+ x-axis Low Effort --> High Effort
4
+ y-axis Low Impact --> High Impact
5
+ quadrant-1 Quick Wins
6
+ quadrant-2 Major Projects
7
+ quadrant-3 Fill Ins
8
+ quadrant-4 Hard Slogs
9
+ "Mobile App": [0.3, 0.8]
10
+ "API v2": [0.7, 0.9]
11
+ "Bug Fixes": [0.2, 0.3]
12
+ "Documentation": [0.4, 0.5]
13
+ "Refactoring": [0.6, 0.4]
@@ -0,0 +1,33 @@
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
+ <text fill="#000000" x="400.0" y="30.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16.0" font-weight="bold">Product Feature Priority Matrix</text>
9
+ <rect fill="#e3f2fd" stroke="#cccccc" stroke-width="1" opacity="0.3" x="400.0" y="80.0" width="320.0" height="220.0"/>
10
+ <rect fill="#fff3e0" stroke="#cccccc" stroke-width="1" opacity="0.3" x="80.0" y="80.0" width="320.0" height="220.0"/>
11
+ <rect fill="#f3e5f5" stroke="#cccccc" stroke-width="1" opacity="0.3" x="80.0" y="300.0" width="320.0" height="220.0"/>
12
+ <rect fill="#e8f5e9" stroke="#cccccc" stroke-width="1" opacity="0.3" x="400.0" y="300.0" width="320.0" height="220.0"/>
13
+ <line stroke="#666666" stroke-width="2" x1="400.0" y1="80.0" x2="400.0" y2="520.0"/>
14
+ <line stroke="#666666" stroke-width="2" x1="80.0" y1="300.0" x2="720.0" y2="300.0"/>
15
+ <text fill="#000000" x="70.0" y="550.0" text-anchor="end" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Low Effort</text>
16
+ <text fill="#000000" x="730.0" y="550.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">High Effort</text>
17
+ <text fill="#000000" x="50.0" y="530.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Low Impact</text>
18
+ <text fill="#000000" x="50.0" y="70.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">High Impact</text>
19
+ <text fill="#000000" opacity="0.7" x="560.0" y="100.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Quick Wins</text>
20
+ <text fill="#000000" opacity="0.7" x="240.0" y="100.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Major Projects</text>
21
+ <text fill="#000000" opacity="0.7" x="240.0" y="320.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Fill Ins</text>
22
+ <text fill="#000000" opacity="0.7" x="560.0" y="320.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Hard Slogs</text>
23
+ <circle id="point_0" fill="#6c757d" stroke="#000000" stroke-width="2" cx="272.0" cy="168.0" r="6.0"/>
24
+ <text fill="#000000" x="282.0" y="158.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">"Mobile App"</text>
25
+ <circle id="point_1" fill="#007bff" stroke="#000000" stroke-width="2" cx="528.0" cy="124.0" r="6.0"/>
26
+ <text fill="#000000" x="538.0" y="114.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">"API v2"</text>
27
+ <circle id="point_2" fill="#28a745" stroke="#000000" stroke-width="2" cx="208.0" cy="388.0" r="6.0"/>
28
+ <text fill="#000000" x="218.0" y="378.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">"Bug Fixes"</text>
29
+ <circle id="point_3" fill="#6c757d" stroke="#000000" stroke-width="2" cx="336.0" cy="300.0" r="6.0"/>
30
+ <text fill="#000000" x="346.0" y="290.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">"Documentation"</text>
31
+ <circle id="point_4" fill="#28a745" stroke="#000000" stroke-width="2" cx="464.0" cy="344.0" r="6.0"/>
32
+ <text fill="#000000" x="474.0" y="334.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">"Refactoring"</text>
33
+ </svg>
@@ -0,0 +1,14 @@
1
+ quadrantChart
2
+ title Technology Adoption Matrix
3
+ x-axis Low Complexity --> High Complexity
4
+ y-axis Low Impact --> High Impact
5
+ quadrant-1 Invest
6
+ quadrant-2 Monitor
7
+ quadrant-3 Evaluate
8
+ quadrant-4 Migrate
9
+ AI/ML: [0.8, 0.9]
10
+ Cloud Native: [0.7, 0.8]
11
+ Microservices: [0.6, 0.7]
12
+ Serverless: [0.5, 0.6]
13
+ Edge Computing: [0.4, 0.5]
14
+ Blockchain: [0.3, 0.4]
@@ -0,0 +1,35 @@
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
+ <text fill="#000000" x="400.0" y="30.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16.0" font-weight="bold">Technology Adoption Matrix</text>
9
+ <rect fill="#e3f2fd" stroke="#cccccc" stroke-width="1" opacity="0.3" x="400.0" y="80.0" width="320.0" height="220.0"/>
10
+ <rect fill="#fff3e0" stroke="#cccccc" stroke-width="1" opacity="0.3" x="80.0" y="80.0" width="320.0" height="220.0"/>
11
+ <rect fill="#f3e5f5" stroke="#cccccc" stroke-width="1" opacity="0.3" x="80.0" y="300.0" width="320.0" height="220.0"/>
12
+ <rect fill="#e8f5e9" stroke="#cccccc" stroke-width="1" opacity="0.3" x="400.0" y="300.0" width="320.0" height="220.0"/>
13
+ <line stroke="#666666" stroke-width="2" x1="400.0" y1="80.0" x2="400.0" y2="520.0"/>
14
+ <line stroke="#666666" stroke-width="2" x1="80.0" y1="300.0" x2="720.0" y2="300.0"/>
15
+ <text fill="#000000" x="70.0" y="550.0" text-anchor="end" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Low Complexity</text>
16
+ <text fill="#000000" x="730.0" y="550.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">High Complexity</text>
17
+ <text fill="#000000" x="50.0" y="530.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Low Impact</text>
18
+ <text fill="#000000" x="50.0" y="70.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">High Impact</text>
19
+ <text fill="#000000" opacity="0.7" x="560.0" y="100.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Invest</text>
20
+ <text fill="#000000" opacity="0.7" x="240.0" y="100.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Monitor</text>
21
+ <text fill="#000000" opacity="0.7" x="240.0" y="320.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Evaluate</text>
22
+ <text fill="#000000" opacity="0.7" x="560.0" y="320.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold">Migrate</text>
23
+ <circle id="point_0" fill="#007bff" stroke="#000000" stroke-width="2" cx="592.0" cy="124.0" r="6.0"/>
24
+ <text fill="#000000" x="602.0" y="114.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">AI/ML</text>
25
+ <circle id="point_1" fill="#007bff" stroke="#000000" stroke-width="2" cx="528.0" cy="168.0" r="6.0"/>
26
+ <text fill="#000000" x="538.0" y="158.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Cloud Native</text>
27
+ <circle id="point_2" fill="#007bff" stroke="#000000" stroke-width="2" cx="464.0" cy="212.00000000000003" r="6.0"/>
28
+ <text fill="#000000" x="474.0" y="202.00000000000003" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Microservices</text>
29
+ <circle id="point_3" fill="#007bff" stroke="#000000" stroke-width="2" cx="400.0" cy="256.0" r="6.0"/>
30
+ <text fill="#000000" x="410.0" y="246.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Serverless</text>
31
+ <circle id="point_4" fill="#6c757d" stroke="#000000" stroke-width="2" cx="336.0" cy="300.0" r="6.0"/>
32
+ <text fill="#000000" x="346.0" y="290.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Edge Computing</text>
33
+ <circle id="point_5" fill="#28a745" stroke="#000000" stroke-width="2" cx="272.0" cy="344.0" r="6.0"/>
34
+ <text fill="#000000" x="282.0" y="334.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">Blockchain</text>
35
+ </svg>
@@ -0,0 +1,84 @@
1
+ = Quadrant Chart Examples
2
+
3
+ == Purpose
4
+
5
+ Quadrant charts visualize data points in a 2D coordinate system divided into four quadrants, useful for categorizing items based on two dimensions.
6
+
7
+ == When to Use
8
+
9
+ * Technology adoption analysis (Gartner Magic Quadrant style)
10
+ * Risk assessment matrices
11
+ * Priority matrices (Eisenhower matrix)
12
+ * Portfolio analysis
13
+ * Feature prioritization
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ quadrantChart
20
+ title Adoption Matrix
21
+ x-axis Low --> High
22
+ y-axis Low --> High
23
+ quadrant-1 Invest
24
+ quadrant-2 Monitor
25
+ quadrant-3 Divest
26
+ quadrant-4 Review
27
+ Item A: [0.3, 0.6]
28
+ Item B: [0.7, 0.8]
29
+ ----
30
+
31
+ == Examples
32
+
33
+ === 01: Basic Quadrant
34
+
35
+ Demonstrates basic quadrant chart with labeled axes and items.
36
+
37
+ **File**: link:01-basic-quadrant.mmd[01-basic-quadrant.mmd]
38
+
39
+ [source,mermaid]
40
+ ----
41
+ include::01-basic-quadrant.mmd[]
42
+ ----
43
+
44
+ image::01-basic-quadrant.svg[]
45
+
46
+ === 02: Positioned Items
47
+
48
+ Showcases complex quadrant with many positioned items.
49
+
50
+ **File**: link:02-positioned-items.mmd[02-positioned-items.mmd]
51
+
52
+ [source,mermaid]
53
+ ----
54
+ include::02-positioned-items.mmd[]
55
+ ----
56
+
57
+ image::02-positioned-items.svg[]
58
+
59
+ == Features Demonstrated
60
+
61
+ [%header,cols="1,1"]
62
+ |===
63
+ | Feature | Example
64
+
65
+ | Basic quadrant layout
66
+ | 01, 02
67
+
68
+ | Item positioning
69
+ | 01, 02
70
+
71
+ | Axis labeling
72
+ | 01, 02
73
+
74
+ | Quadrant naming
75
+ | 01, 02
76
+
77
+ | Multiple data points
78
+ | 02
79
+ |===
80
+
81
+ == Additional Resources
82
+
83
+ * link:../../README.adoc[Main Documentation]
84
+ * https://mermaid.js.org/syntax/quadrantChart.html[Mermaid Quadrant Chart Documentation]
@@ -0,0 +1,5 @@
1
+ radar-beta
2
+ title Technology Stack Assessment
3
+ axis Frontend, Backend, Database, DevOps, Testing, Documentation
4
+ curve Current["Current State"] {85, 75, 90, 70, 80, 65}
5
+ curve Target["Target State"] {90, 85, 95, 90, 95, 85}
@@ -0,0 +1,3 @@
1
+ radar-beta
2
+ axis A,B,C
3
+ curve mycurve{1,2,3}
@@ -0,0 +1,25 @@
1
+ <svg
2
+ width="560.0"
3
+ height="560.0"
4
+ viewBox="0 0 560.0 560.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="40.0"/>
9
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="80.0"/>
10
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="120.0"/>
11
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="160.0"/>
12
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="200.0"/>
13
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="280.0" y2="80.0"/>
14
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="453.20508075688775" y2="380.0"/>
15
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="106.79491924311225" y2="380.0"/>
16
+ <polygon fill="#2563eb" fill-opacity="0.3" stroke="#2563eb" stroke-width="2" points="280.0,280.0 366.6025403784439,330.0 106.79491924311225,380.0"/>
17
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="280.0" cy="280.0" r="3.0"/>
18
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="366.6025403784439" cy="330.0" r="3.0"/>
19
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="106.79491924311225" cy="380.0" r="3.0"/>
20
+ <text fill="#000000" x="280.0" y="50.0" text-anchor="end" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="middle">A</text>
21
+ <text fill="#000000" x="479.1858428704209" y="395.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="auto">B</text>
22
+ <text fill="#000000" x="80.81415712957909" y="395.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="hanging">C</text>
23
+ <circle fill="#2563eb" stroke="none" cx="20.0" cy="520.0" r="5.0"/>
24
+ <text fill="#000000" x="35.0" y="524.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">mycurve</text>
25
+ </svg>
@@ -0,0 +1,4 @@
1
+ radar-beta
2
+ axis A,B,C,D,E,F
3
+ curve TeamA{80,90,70,85,75,95}
4
+ curve TeamB{65,75,85,80,90,70}
@@ -0,0 +1,43 @@
1
+ <svg
2
+ width="560.0"
3
+ height="560.0"
4
+ viewBox="0 0 560.0 560.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="40.0"/>
9
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="80.0"/>
10
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="120.0"/>
11
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="160.0"/>
12
+ <circle fill="none" stroke="#e5e7eb" stroke-width="1" cx="280.0" cy="280.0" r="200.0"/>
13
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="280.0" y2="80.0"/>
14
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="453.20508075688775" y2="180.0"/>
15
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="453.20508075688775" y2="380.0"/>
16
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="280.0" y2="480.0"/>
17
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="106.79491924311225" y2="380.0"/>
18
+ <line stroke="#9ca3af" stroke-width="1" x1="280.0" y1="280.0" x2="106.79491924311228" y2="179.99999999999997"/>
19
+ <polygon fill="#2563eb" fill-opacity="0.3" stroke="#2563eb" stroke-width="2" points="280.0,180.0 424.3375672974065,196.66666666666669 308.8675134594813,296.6666666666667 280.0,413.3333333333333 222.26497308103743,313.3333333333333 106.79491924311228,179.99999999999997"/>
20
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="280.0" cy="180.0" r="3.0"/>
21
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="424.3375672974065" cy="196.66666666666669" r="3.0"/>
22
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="308.8675134594813" cy="296.6666666666667" r="3.0"/>
23
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="280.0" cy="413.3333333333333" r="3.0"/>
24
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="222.26497308103743" cy="313.3333333333333" r="3.0"/>
25
+ <circle fill="#2563eb" stroke="#ffffff" stroke-width="1" cx="106.79491924311228" cy="179.99999999999997" r="3.0"/>
26
+ <polygon fill="#7c3aed" fill-opacity="0.3" stroke="#7c3aed" stroke-width="2" points="280.0,280.0 337.7350269189626,246.66666666666669 395.47005383792515,346.66666666666663 280.0,380.0 135.66243270259352,363.3333333333333 251.13248654051873,263.3333333333333"/>
27
+ <circle fill="#7c3aed" stroke="#ffffff" stroke-width="1" cx="280.0" cy="280.0" r="3.0"/>
28
+ <circle fill="#7c3aed" stroke="#ffffff" stroke-width="1" cx="337.7350269189626" cy="246.66666666666669" r="3.0"/>
29
+ <circle fill="#7c3aed" stroke="#ffffff" stroke-width="1" cx="395.47005383792515" cy="346.66666666666663" r="3.0"/>
30
+ <circle fill="#7c3aed" stroke="#ffffff" stroke-width="1" cx="280.0" cy="380.0" r="3.0"/>
31
+ <circle fill="#7c3aed" stroke="#ffffff" stroke-width="1" cx="135.66243270259352" cy="363.3333333333333" r="3.0"/>
32
+ <circle fill="#7c3aed" stroke="#ffffff" stroke-width="1" cx="251.13248654051873" cy="263.3333333333333" r="3.0"/>
33
+ <text fill="#000000" x="280.0" y="50.0" text-anchor="end" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="middle">A</text>
34
+ <text fill="#000000" x="479.1858428704209" y="165.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="auto">B</text>
35
+ <text fill="#000000" x="479.1858428704209" y="395.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="auto">C</text>
36
+ <text fill="#000000" x="280.0" y="510.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="middle">D</text>
37
+ <text fill="#000000" x="80.81415712957909" y="395.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="hanging">E</text>
38
+ <text fill="#000000" x="80.81415712957912" y="164.99999999999997" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" font-weight="bold" dominant-baseline="hanging">F</text>
39
+ <circle fill="#2563eb" stroke="none" cx="20.0" cy="520.0" r="5.0"/>
40
+ <text fill="#000000" x="35.0" y="524.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">TeamA</text>
41
+ <circle fill="#7c3aed" stroke="none" cx="20.0" cy="540.0" r="5.0"/>
42
+ <text fill="#000000" x="35.0" y="544.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="12.0">TeamB</text>
43
+ </svg>
@@ -0,0 +1,75 @@
1
+ = Radar Chart Examples
2
+
3
+ == Purpose
4
+
5
+ Radar charts display multivariate data on axes starting from the same point, ideal for comparing multiple variables across different items.
6
+
7
+ == When to Use
8
+
9
+ * Skills assessment visualization
10
+ * Performance comparison
11
+ * Product feature analysis
12
+ * Multi-dimensional data comparison
13
+ * Capability matrixing
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ radar-beta
20
+ axis Skill1,Skill2,Skill3
21
+ curve TeamA{80,90,70}
22
+ curve TeamB{60,85,75}
23
+ ----
24
+
25
+ == Examples
26
+
27
+ === 01: Simple Radar
28
+
29
+ Demonstrates basic radar chart with one data series.
30
+
31
+ **File**: link:01-simple-radar.mmd[01-simple-radar.mmd]
32
+
33
+ [source,mermaid]
34
+ ----
35
+ include::01-simple-radar.mmd[]
36
+ ----
37
+
38
+ image::01-simple-radar.svg[]
39
+
40
+ === 02: Multiple Curves
41
+
42
+ Showcases comparison of multiple datasets on radar chart.
43
+
44
+ **File**: link:02-multiple-curves.mmd[02-multiple-curves.mmd]
45
+
46
+ [source,mermaid]
47
+ ----
48
+ include::02-multiple-curves.mmd[]
49
+ ----
50
+
51
+ image::02-multiple-curves.svg[]
52
+
53
+ == Features Demonstrated
54
+
55
+ [%header,cols="1,1"]
56
+ |===
57
+ | Feature | Example
58
+
59
+ | Axis definition
60
+ | 01, 02
61
+
62
+ | Single curve
63
+ | 01
64
+
65
+ | Multiple curves
66
+ | 02
67
+
68
+ | Data comparison
69
+ | 02
70
+ |===
71
+
72
+ == Additional Resources
73
+
74
+ * link:../../README.adoc[Main Documentation]
75
+ * https://mermaid.js.org/syntax/radar.html[Mermaid Radar Documentation]
@@ -0,0 +1,23 @@
1
+ requirementDiagram
2
+
3
+ requirement login {
4
+ id: 1
5
+ text: Users must be able to login
6
+ risk: high
7
+ verifymethod: test
8
+ }
9
+
10
+ requirement security {
11
+ id: 2
12
+ text: All data must be encrypted
13
+ risk: high
14
+ verifymethod: inspection
15
+ }
16
+
17
+ element webapp {
18
+ type: application
19
+ docref: /docs/webapp
20
+ }
21
+
22
+ login - satisfies -> webapp
23
+ security - verifies -> webapp
@@ -0,0 +1,49 @@
1
+ <svg
2
+ width="600.0"
3
+ height="440.0"
4
+ viewBox="0 0 600 440"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="relationship-login-webapp">
9
+ <path fill="none" stroke="#666" stroke-width="2" d="M 110 340 C 110 446, 95 -86, 95 20" marker-end="url(#arrowhead)"/>
10
+ <rect fill="#fff" stroke="#666" stroke-width="1" x="71.0" y="170.0" width="63.0" height="18.0" rx="3.0"/>
11
+ <text fill="#000" x="102.0" y="180.0" text-anchor="middle" font-size="10" dominant-baseline="middle">satisfies</text>
12
+ </g>
13
+ <g id="relationship-security-webapp">
14
+ <path fill="none" stroke="#666" stroke-width="2" d="M 390 340 C 390 446, 95 -86, 95 20" marker-end="url(#arrowhead)"/>
15
+ <rect fill="#fff" stroke="#666" stroke-width="1" x="214.0" y="170.0" width="56.0" height="18.0" rx="3.0"/>
16
+ <text fill="#000" x="242.0" y="180.0" text-anchor="middle" font-size="10" dominant-baseline="middle">verifies</text>
17
+ </g>
18
+ <g id="requirement-login">
19
+ <rect fill="#ffffff" stroke="#ff6b6b" stroke-width="2" x="20.0" y="180.0" width="180.0" height="160.0" rx="5.0" ry="5.0"/>
20
+ <g>
21
+ <rect fill="#ff6b6b" opacity="0.3" x="20.0" y="180.0" width="180.0" height="30.0"/>
22
+ <text fill="#000" x="30.0" y="195.0" font-size="12" font-weight="bold" dominant-baseline="middle">Requirement</text>
23
+ <text fill="#000" x="190.0" y="195.0" text-anchor="end" font-size="11" dominant-baseline="middle">login</text>
24
+ </g>
25
+ <text fill="#000" x="30.0" y="225.0" font-size="12">ID: 1</text>
26
+ <text fill="#000" x="30.0" y="241.0" font-size="12">Users must be able to</text>
27
+ <text fill="#000" x="30.0" y="257.0" font-size="12">login</text>
28
+ <text fill="#ff6b6b" x="30.0" y="278.0" font-size="12" font-weight="bold">Risk: High</text>
29
+ <text fill="#000" x="30.0" y="294.0" font-size="12">Verify: Test</text>
30
+ </g>
31
+ <g id="requirement-security">
32
+ <rect fill="#ffffff" stroke="#ff6b6b" stroke-width="2" x="300.0" y="180.0" width="180.0" height="160.0" rx="5.0" ry="5.0"/>
33
+ <g>
34
+ <rect fill="#ff6b6b" opacity="0.3" x="300.0" y="180.0" width="180.0" height="30.0"/>
35
+ <text fill="#000" x="310.0" y="195.0" font-size="12" font-weight="bold" dominant-baseline="middle">Requirement</text>
36
+ <text fill="#000" x="470.0" y="195.0" text-anchor="end" font-size="11" dominant-baseline="middle">security</text>
37
+ </g>
38
+ <text fill="#000" x="310.0" y="225.0" font-size="12">ID: 2</text>
39
+ <text fill="#000" x="310.0" y="241.0" font-size="12">All data must be</text>
40
+ <text fill="#000" x="310.0" y="257.0" font-size="12">encrypted</text>
41
+ <text fill="#ff6b6b" x="310.0" y="278.0" font-size="12" font-weight="bold">Risk: High</text>
42
+ <text fill="#000" x="310.0" y="294.0" font-size="12">Verify: Inspection</text>
43
+ </g>
44
+ <g id="element-webapp">
45
+ <polygon fill="#ffffff" stroke="#00796b" stroke-width="2" points="20,60 58,20 132,20 170,60 132,100 58,100"/>
46
+ <text fill="#000" x="95.0" y="50.0" text-anchor="middle" font-size="14" font-weight="bold" dominant-baseline="middle">webapp</text>
47
+ <text fill="#666" x="95.0" y="70.0" text-anchor="middle" font-size="11" dominant-baseline="middle">Type: application</text>
48
+ </g>
49
+ </svg>
@@ -0,0 +1,23 @@
1
+ requirementDiagram
2
+
3
+ requirement login {
4
+ id: 1
5
+ text: Users must be able to login
6
+ risk: high
7
+ verifymethod: test
8
+ }
9
+
10
+ requirement security {
11
+ id: 2
12
+ text: All data must be encrypted
13
+ risk: high
14
+ verifymethod: inspection
15
+ }
16
+
17
+ element webapp {
18
+ type: application
19
+ docref: /docs/webapp
20
+ }
21
+
22
+ login - satisfies -> webapp
23
+ security - verifies -> webapp
@@ -0,0 +1,49 @@
1
+ <svg
2
+ width="600.0"
3
+ height="440.0"
4
+ viewBox="0 0 600 440"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="relationship-login-webapp">
9
+ <path fill="none" stroke="#666" stroke-width="2" d="M 110 340 C 110 446, 95 -86, 95 20" marker-end="url(#arrowhead)"/>
10
+ <rect fill="#fff" stroke="#666" stroke-width="1" x="71.0" y="170.0" width="63.0" height="18.0" rx="3.0"/>
11
+ <text fill="#000" x="102.0" y="180.0" text-anchor="middle" font-size="10" dominant-baseline="middle">satisfies</text>
12
+ </g>
13
+ <g id="relationship-security-webapp">
14
+ <path fill="none" stroke="#666" stroke-width="2" d="M 390 340 C 390 446, 95 -86, 95 20" marker-end="url(#arrowhead)"/>
15
+ <rect fill="#fff" stroke="#666" stroke-width="1" x="214.0" y="170.0" width="56.0" height="18.0" rx="3.0"/>
16
+ <text fill="#000" x="242.0" y="180.0" text-anchor="middle" font-size="10" dominant-baseline="middle">verifies</text>
17
+ </g>
18
+ <g id="requirement-login">
19
+ <rect fill="#ffffff" stroke="#ff6b6b" stroke-width="2" x="20.0" y="180.0" width="180.0" height="160.0" rx="5.0" ry="5.0"/>
20
+ <g>
21
+ <rect fill="#ff6b6b" opacity="0.3" x="20.0" y="180.0" width="180.0" height="30.0"/>
22
+ <text fill="#000" x="30.0" y="195.0" font-size="12" font-weight="bold" dominant-baseline="middle">Requirement</text>
23
+ <text fill="#000" x="190.0" y="195.0" text-anchor="end" font-size="11" dominant-baseline="middle">login</text>
24
+ </g>
25
+ <text fill="#000" x="30.0" y="225.0" font-size="12">ID: 1</text>
26
+ <text fill="#000" x="30.0" y="241.0" font-size="12">Users must be able to</text>
27
+ <text fill="#000" x="30.0" y="257.0" font-size="12">login</text>
28
+ <text fill="#ff6b6b" x="30.0" y="278.0" font-size="12" font-weight="bold">Risk: High</text>
29
+ <text fill="#000" x="30.0" y="294.0" font-size="12">Verify: Test</text>
30
+ </g>
31
+ <g id="requirement-security">
32
+ <rect fill="#ffffff" stroke="#ff6b6b" stroke-width="2" x="300.0" y="180.0" width="180.0" height="160.0" rx="5.0" ry="5.0"/>
33
+ <g>
34
+ <rect fill="#ff6b6b" opacity="0.3" x="300.0" y="180.0" width="180.0" height="30.0"/>
35
+ <text fill="#000" x="310.0" y="195.0" font-size="12" font-weight="bold" dominant-baseline="middle">Requirement</text>
36
+ <text fill="#000" x="470.0" y="195.0" text-anchor="end" font-size="11" dominant-baseline="middle">security</text>
37
+ </g>
38
+ <text fill="#000" x="310.0" y="225.0" font-size="12">ID: 2</text>
39
+ <text fill="#000" x="310.0" y="241.0" font-size="12">All data must be</text>
40
+ <text fill="#000" x="310.0" y="257.0" font-size="12">encrypted</text>
41
+ <text fill="#ff6b6b" x="310.0" y="278.0" font-size="12" font-weight="bold">Risk: High</text>
42
+ <text fill="#000" x="310.0" y="294.0" font-size="12">Verify: Inspection</text>
43
+ </g>
44
+ <g id="element-webapp">
45
+ <polygon fill="#ffffff" stroke="#00796b" stroke-width="2" points="20,60 58,20 132,20 170,60 132,100 58,100"/>
46
+ <text fill="#000" x="95.0" y="50.0" text-anchor="middle" font-size="14" font-weight="bold" dominant-baseline="middle">webapp</text>
47
+ <text fill="#666" x="95.0" y="70.0" text-anchor="middle" font-size="11" dominant-baseline="middle">Type: application</text>
48
+ </g>
49
+ </svg>