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,203 @@
1
+ ---
2
+ layout: default
3
+ title: CLI Reference
4
+ parent: Guides
5
+ nav_order: 3
6
+ ---
7
+
8
+ = CLI Reference
9
+
10
+ Complete reference for all Sirena command-line interface commands.
11
+
12
+ == Global Options
13
+
14
+ These options are available for all commands:
15
+
16
+ `--verbose, -v`::
17
+ Enable verbose output for debugging
18
+
19
+ `--help, -h`::
20
+ Show help for the command
21
+
22
+ == Commands
23
+
24
+ === render
25
+
26
+ Render a single Mermaid diagram to SVG.
27
+
28
+ [source,shell]
29
+ ----
30
+ sirena render INPUT [OPTIONS]
31
+ ----
32
+
33
+ ==== Arguments
34
+
35
+ `INPUT`:: Path to input Mermaid file (.mmd)
36
+
37
+ ==== Options
38
+
39
+ `--output, -o PATH`:: Output SVG file path (default: stdout)
40
+
41
+ `--type, -t TYPE`:: Explicitly specify diagram type (auto-detected if not provided)
42
+
43
+ `--theme THEME`:: Theme to use: default, dark, light, high-contrast
44
+
45
+ ==== Examples
46
+
47
+ Render to stdout:
48
+ [source,shell]
49
+ ----
50
+ sirena render diagram.mmd
51
+ ----
52
+
53
+ Render to file:
54
+ [source,shell]
55
+ ----
56
+ sirena render diagram.mmd -o output.svg
57
+ ----
58
+
59
+ Specify diagram type:
60
+ [source,shell]
61
+ ----
62
+ sirena render diagram.mmd -t flowchart -o output.svg
63
+ ----
64
+
65
+ Use dark theme:
66
+ [source,shell]
67
+ ----
68
+ sirena render diagram.mmd --theme dark -o output.svg
69
+ ----
70
+
71
+ === batch
72
+
73
+ Render multiple Mermaid diagrams in a directory.
74
+
75
+ [source,shell]
76
+ ----
77
+ sirena batch INPUT_DIR [OPTIONS]
78
+ ----
79
+
80
+ ==== Arguments
81
+
82
+ `INPUT_DIR`:: Directory containing Mermaid files
83
+
84
+ ==== Options
85
+
86
+ `--output, -o DIR`:: Output directory for SVG files (default: current directory)
87
+
88
+ `--theme THEME`:: Theme to use for all diagrams
89
+
90
+ `--recursive, -r`:: Process subdirectories recursively
91
+
92
+ ==== Examples
93
+
94
+ Render all diagrams in a directory:
95
+ [source,shell]
96
+ ----
97
+ sirena batch diagrams/ -o output/
98
+ ----
99
+
100
+ Process recursively:
101
+ [source,shell]
102
+ ----
103
+ sirena batch diagrams/ -o output/ --recursive
104
+ ----
105
+
106
+ === types
107
+
108
+ List all supported diagram types.
109
+
110
+ [source,shell]
111
+ ----
112
+ sirena types
113
+ ----
114
+
115
+ ==== Output
116
+
117
+ Displays all 24 supported diagram types with their identifiers.
118
+
119
+ ==== Example
120
+
121
+ [source,shell]
122
+ ----
123
+ sirena types
124
+ ----
125
+
126
+ Output:
127
+ ----
128
+ Supported diagram types:
129
+ - architecture
130
+ - block
131
+ - c4
132
+ - class
133
+ - er
134
+ - error
135
+ - flowchart
136
+ - gantt
137
+ - gitgraph
138
+ - info
139
+ - journey
140
+ - kanban
141
+ - mindmap
142
+ - packet
143
+ - pie
144
+ - quadrant
145
+ - radar
146
+ - requirement
147
+ - sankey
148
+ - sequence
149
+ - state
150
+ - timeline
151
+ - treemap
152
+ - xychart
153
+ ----
154
+
155
+ === version
156
+
157
+ Display Sirena version.
158
+
159
+ [source,shell]
160
+ ----
161
+ sirena version
162
+ ----
163
+
164
+ ==== Example
165
+
166
+ [source,shell]
167
+ ----
168
+ sirena version
169
+ ----
170
+
171
+ Output:
172
+ ----
173
+ Sirena version 0.1.0
174
+ ----
175
+
176
+ == Environment Variables
177
+
178
+ `SIRENA_THEME`:: Default theme (overridden by --theme option)
179
+
180
+ `SIRENA_VERBOSE`:: Enable verbose mode (set to 1 or true)
181
+
182
+ ==== Example
183
+
184
+ [source,shell]
185
+ ----
186
+ export SIRENA_THEME=dark
187
+ export SIRENA_VERBOSE=1
188
+ sirena render diagram.mmd -o output.svg
189
+ ----
190
+
191
+ == Exit Codes
192
+
193
+ `0`:: Success
194
+ `1`:: General error
195
+ `2`:: File not found
196
+ `3`:: Parse error
197
+ `4`:: Render error
198
+
199
+ == Next Steps
200
+
201
+ * link:../diagram_types/index.html[Diagram Types Reference] - Syntax for all 24 types
202
+ * link:quick-start.html[Quick Start Guide] - Get started quickly
203
+ * link:../../examples/README.html[Examples] - Browse working examples
@@ -0,0 +1,56 @@
1
+ ---
2
+ layout: default
3
+ title: Guides
4
+ nav_order: 4
5
+ has_children: true
6
+ ---
7
+
8
+ == Guides
9
+
10
+ In-depth guides covering advanced topics, best practices, and real-world use cases.
11
+
12
+ == What's in This Section
13
+
14
+ Comprehensive guides for:
15
+
16
+ * **Migration from Mermaid.js** - Converting from JavaScript to Ruby
17
+ * **Performance Optimization** - Making your diagrams render faster
18
+ * **Advanced Theming** - Deep dive into the theme system
19
+ * **Best Practices** - Patterns and anti-patterns for each diagram type
20
+ * **Troubleshooting** - Debugging common issues
21
+ * **Production Deployment** - Running Sirena in production environments
22
+
23
+ == Guide Format
24
+
25
+ Each guide provides:
26
+
27
+ * **Overview** - What the guide covers
28
+ * **Background** - Context and concepts
29
+ * **Detailed explanations** - In-depth technical information
30
+ * **Examples** - Real-world scenarios
31
+ * **Best practices** - Recommended approaches
32
+ * **Common pitfalls** - What to avoid
33
+
34
+ == Featured Guides
35
+
36
+ === For Mermaid.js Users
37
+
38
+ * link:{% link _guides/migration-from-mermaid.adoc %}[Migration from Mermaid.js] - Complete migration guide with syntax comparison
39
+
40
+ === For Production Use
41
+
42
+ * link:{% link _guides/performance-optimization.adoc %}[Performance Optimization] - Techniques for faster rendering
43
+ * link:{% link _guides/caching-strategies.adoc %}[Caching Strategies] - Improve performance with caching
44
+ * link:{% link _guides/ci-cd-integration.adoc %}[CI/CD Integration] - Using Sirena in automated workflows
45
+
46
+ === For Advanced Customization
47
+
48
+ * link:{% link _guides/custom-themes.adoc %}[Creating Custom Themes] - Building themes from scratch
49
+ * link:{% link _guides/svg-customization.adoc %}[SVG Customization] - Advanced SVG manipulation
50
+ * link:{% link _guides/extending-parsers.adoc %}[Extending Parsers] - Adding custom syntax
51
+
52
+ == Related Documentation
53
+
54
+ * link:{% link _tutorials/index.adoc %}[Tutorials] - For step-by-step learning
55
+ * link:{% link _features/index.adoc %}[Features] - For feature documentation
56
+ * link:{% link _references/index.adoc %}[References] - For API and CLI reference
@@ -0,0 +1,100 @@
1
+ ---
2
+ layout: default
3
+ title: Installation
4
+ parent: Guides
5
+ nav_order: 1
6
+ ---
7
+
8
+ = Installation Guide
9
+
10
+ == Requirements
11
+
12
+ Sirena requires:
13
+
14
+ * Ruby 2.7 or higher
15
+ * Bundler (for development)
16
+
17
+ == Installation Methods
18
+
19
+ === Via RubyGems (Recommended)
20
+
21
+ Install Sirena directly from RubyGems:
22
+
23
+ [source,shell]
24
+ ----
25
+ gem install sirena
26
+ ----
27
+
28
+ === Via Bundler
29
+
30
+ Add Sirena to your `Gemfile`:
31
+
32
+ [source,ruby]
33
+ ----
34
+ gem 'sirena'
35
+ ----
36
+
37
+ Then install:
38
+
39
+ [source,shell]
40
+ ----
41
+ bundle install
42
+ ----
43
+
44
+ === From Source
45
+
46
+ Clone the repository and install locally:
47
+
48
+ [source,shell]
49
+ ----
50
+ git clone https://github.com/claricle/sirena.git
51
+ cd sirena
52
+ bundle install
53
+ bundle exec rake install
54
+ ----
55
+
56
+ == Verification
57
+
58
+ Verify the installation:
59
+
60
+ [source,shell]
61
+ ----
62
+ sirena version
63
+ ----
64
+
65
+ You should see output similar to:
66
+
67
+ ----
68
+ Sirena version 0.1.0
69
+ ----
70
+
71
+ == Next Steps
72
+
73
+ * link:quick-start.html[Quick Start Guide] - Get started with your first diagram
74
+ * link:cli-reference.html[CLI Reference] - Learn all available commands
75
+ * link:../diagram_types/index.html[Diagram Types] - Explore all 24 diagram types
76
+
77
+ == Troubleshooting
78
+
79
+ === Command Not Found
80
+
81
+ If `sirena` command is not found after installation, ensure your gem bin directory is in your PATH:
82
+
83
+ [source,shell]
84
+ ----
85
+ echo 'export PATH="$HOME/.gem/ruby/X.X.0/bin:$PATH"' >> ~/.bashrc
86
+ source ~/.bashrc
87
+ ----
88
+
89
+ Replace `X.X.0` with your Ruby version.
90
+
91
+ === Permission Errors
92
+
93
+ If you encounter permission errors during installation, try:
94
+
95
+ [source,shell]
96
+ ----
97
+ gem install sirena --user-install
98
+ ----
99
+
100
+ Or use a Ruby version manager like `rbenv` or `rvm`.
@@ -0,0 +1,132 @@
1
+ ---
2
+ layout: default
3
+ title: Quick Start
4
+ parent: Guides
5
+ nav_order: 2
6
+ ---
7
+
8
+ = Quick Start Guide
9
+
10
+ This guide will help you create your first diagram with Sirena in 5 minutes.
11
+
12
+ == Prerequisites
13
+
14
+ Ensure Sirena is installed. If not, see the link:installation.html[Installation Guide].
15
+
16
+ == Your First Diagram
17
+
18
+ === Step 1: Create a Mermaid File
19
+
20
+ Create a file named `my-first-diagram.mmd`:
21
+
22
+ [source,mermaid]
23
+ ----
24
+ graph TD
25
+ A[Start] --> B{Decision}
26
+ B -->|Yes| C[Process]
27
+ B -->|No| D[End]
28
+ C --> D
29
+ ----
30
+
31
+ === Step 2: Render to SVG
32
+
33
+ Run Sirena to generate an SVG:
34
+
35
+ [source,shell]
36
+ ----
37
+ sirena render my-first-diagram.mmd -o output.svg
38
+ ----
39
+
40
+ === Step 3: View the Result
41
+
42
+ Open `output.svg` in your browser or image viewer to see your flowchart!
43
+
44
+ == Common Diagram Types
45
+
46
+ === Flowchart
47
+
48
+ [source,mermaid]
49
+ ----
50
+ graph LR
51
+ A[Input] --> B[Process]
52
+ B --> C[Output]
53
+ ----
54
+
55
+ === Sequence Diagram
56
+
57
+ [source,mermaid]
58
+ ----
59
+ sequenceDiagram
60
+ Alice->>Bob: Hello
61
+ Bob-->>Alice: Hi there!
62
+ ----
63
+
64
+ === Entity-Relationship Diagram
65
+
66
+ [source,mermaid]
67
+ ----
68
+ erDiagram
69
+ CUSTOMER ||--o{ ORDER : places
70
+ ORDER ||--|{ LINE-ITEM : contains
71
+ ----
72
+
73
+ == Programmatic Usage
74
+
75
+ Use Sirena in your Ruby code:
76
+
77
+ [source,ruby]
78
+ ----
79
+ require 'sirena'
80
+
81
+ # Render from a string
82
+ mermaid_code = <<~MERMAID
83
+ graph TD
84
+ A --> B
85
+ MERMAID
86
+
87
+ svg = Sirena::Engine.render(mermaid_code)
88
+ File.write('output.svg', svg)
89
+
90
+ # Render from a file
91
+ svg = Sirena::Engine.render_file('diagram.mmd')
92
+ ----
93
+
94
+ == Batch Processing
95
+
96
+ Render multiple diagrams at once:
97
+
98
+ [source,shell]
99
+ ----
100
+ sirena batch diagrams/ -o output/
101
+ ----
102
+
103
+ This renders all `.mmd` files in `diagrams/` directory to SVG files in `output/`.
104
+
105
+ == Next Steps
106
+
107
+ * link:cli-reference.html[CLI Reference] - Learn all available commands and options
108
+ * link:../diagram_types/index.html[Diagram Types Reference] - Explore all 24 diagram types
109
+ * link:../../examples/README.html[Examples] - Browse 37+ working examples
110
+
111
+ == Getting Help
112
+
113
+ View available commands:
114
+
115
+ [source,shell]
116
+ ----
117
+ sirena help
118
+ ----
119
+
120
+ View help for a specific command:
121
+
122
+ [source,shell]
123
+ ----
124
+ sirena help render
125
+ ----
126
+
127
+ List all supported diagram types:
128
+
129
+ [source,shell]
130
+ ----
131
+ sirena types
132
+ ----