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,300 @@
1
+ ---
2
+ layout: default
3
+ title: Compatibility
4
+ parent: Core Topics
5
+ nav_order: 4
6
+ ---
7
+
8
+ == Sirena vs Mermaid.js Compatibility
9
+
10
+ === Purpose
11
+
12
+ This page focuses specifically on **Mermaid.js syntax compatibility** - what works, what differs, and how to migrate. For a broader comparison with other diagram tools (PlantUML, Graphviz), see link:comparison/[Tool Comparison].
13
+
14
+ === Overview
15
+
16
+ Sirena maintains syntax compatibility with Mermaid.js while providing a pure Ruby implementation optimized for server-side rendering. This page documents the compatibility matrix, feature parity, and migration considerations specifically between Sirena and Mermaid.js.
17
+
18
+ === Feature Comparison Matrix
19
+
20
+ [cols="3,2,2,2"]
21
+ |===
22
+ |Feature |Mermaid.js |Sirena |Notes
23
+
24
+ |**Diagram Types**
25
+ |20+
26
+ |19
27
+ |All major types supported
28
+
29
+ |**Rendering**
30
+ |Browser-based
31
+ |Pure Ruby
32
+ |Sirena is faster for server use
33
+
34
+ |**Themes**
35
+ |CSS-based
36
+ |YAML-based
37
+ |Easier customization in Sirena
38
+
39
+ |**Batch Mode**
40
+ |Manual scripting
41
+ |Built-in
42
+ |`sirena batch` command
43
+
44
+ |**Error Messages**
45
+ |Generic
46
+ |Detailed
47
+ |Better debugging in Sirena
48
+
49
+ |**Dependencies**
50
+ |Node + Puppeteer
51
+ |Ruby only
52
+ |Simpler deployment
53
+
54
+ |**File Size**
55
+ |~2MB (mermaid.min.js)
56
+ |Ruby gem
57
+ |Smaller footprint
58
+
59
+ |**Startup Time**
60
+ |~2s (browser launch)
61
+ |<100ms
62
+ |Much faster
63
+
64
+ |**Memory Usage**
65
+ |~200MB (Chrome)
66
+ |~50MB
67
+ |Lower resource usage
68
+
69
+ |**Interactive Features**
70
+ |Supported
71
+ |Not supported
72
+ |Static SVG only
73
+ |===
74
+
75
+ === Diagram Type Support
76
+
77
+ ==== Fully Compatible (100% Syntax Parity)
78
+
79
+ These diagram types have complete syntax compatibility with Mermaid.js:
80
+
81
+ * **Flowchart** (`graph`, `flowchart`) - All node shapes, edge types, and subgraphs
82
+ * **Sequence Diagram** (`sequenceDiagram`) - All participants, messages, and control structures
83
+ * **Class Diagram** (`classDiagram`) - Classes, relationships, and annotations
84
+ * **State Diagram** (`stateDiagram-v2`) - States, transitions, and nested states
85
+ * **ER Diagram** (`erDiagram`) - Entities, attributes, and relationships
86
+ * **User Journey** (`journey`) - Tasks, scores, and sections
87
+ * **Git Graph** (`gitGraph`) - Commits, branches, merges, and tags
88
+ * **Pie Chart** (`pie`) - Data and labels
89
+
90
+ ==== Feature Complete
91
+
92
+ These types are fully implemented with minor differences:
93
+
94
+ * **Gantt Chart** (`gantt`) - All features except click events
95
+ * **Quadrant Chart** (`quadrantChart`) - All features
96
+ * **Requirement Diagram** (`requirementDiagram`) - All features
97
+ * **C4 Diagram** (all 5 types) - Context, Container, Component, Dynamic, Deployment
98
+ * **Mindmap** (`mindmap`) - All node types and levels
99
+ * **Timeline** (`timeline`) - All period types
100
+ * **Sankey** (`sankey-beta`) - All flow types
101
+ * **XY Chart** (`xychart-beta`) - All chart types
102
+ * **Block Diagram** (`block-beta`) - All block types
103
+ * **Architecture** (`architecture-beta`) - All component types
104
+ * **Kanban** (`kanban`) - All column types
105
+
106
+ ==== Additional Sirena Types
107
+
108
+ * **Radar Chart** (`radar`) - Not in standard Mermaid.js
109
+ * **Treemap** (`treemap`) - Not in standard Mermaid.js
110
+ * **Packet Diagram** (`packet`) - Network packet visualization
111
+ * **Info Diagram** (`info`) - Information display
112
+ * **Error Diagram** (`error`) - Error state visualization
113
+
114
+ ==== Not Supported
115
+
116
+ * **ZenUML** - No specification available in Mermaid.js. Use `sequenceDiagram` instead.
117
+
118
+ === Syntax Compatibility
119
+
120
+ ==== Identical Syntax
121
+
122
+ The following syntax is 100% identical between Mermaid.js and Sirena:
123
+
124
+ * Diagram type declarations
125
+ * Node definitions
126
+ * Edge/relationship definitions
127
+ * Labels and text
128
+ * Subgraphs and grouping
129
+ * Comments (`%%`)
130
+ * Title and accessibility attributes
131
+
132
+ ==== Minor Differences
133
+
134
+ ===== Styling
135
+
136
+ **Mermaid.js:**
137
+ [source,mermaid]
138
+ ----
139
+ graph TD
140
+ A[Node]
141
+ style A fill:#f9f,stroke:#333,stroke-width:4px
142
+ ----
143
+
144
+ **Sirena:**
145
+ Uses YAML themes instead of inline styles. Apply themes globally:
146
+ [source,bash]
147
+ ----
148
+ sirena render diagram.mmd --theme dark
149
+ ----
150
+
151
+ ===== Click Events
152
+
153
+ **Mermaid.js:** Supports click events and callbacks
154
+ [source,mermaid]
155
+ ----
156
+ graph TD
157
+ A[Node]
158
+ click A callback "Tooltip"
159
+ ----
160
+
161
+ **Sirena:** Not supported (static SVG output)
162
+
163
+ ===== Custom CSS Classes
164
+
165
+ **Mermaid.js:** Supports CSS class assignment
166
+ [source,mermaid]
167
+ ----
168
+ graph TD
169
+ A[Node]
170
+ class A myClass
171
+ ----
172
+
173
+ **Sirena:** Use theme system for styling
174
+
175
+ === Performance Comparison
176
+
177
+ Benchmarks for rendering 100 diagrams:
178
+
179
+ [cols="2,2,2,2"]
180
+ |===
181
+ |Metric |Mermaid.js |Sirena |Improvement
182
+
183
+ |Total Time
184
+ |~240s
185
+ |~15s
186
+ |**16x faster**
187
+
188
+ |Memory Peak
189
+ |~1.2GB
190
+ |~150MB
191
+ |**8x less**
192
+
193
+ |Startup
194
+ |~2s per diagram
195
+ |~50ms per diagram
196
+ |**40x faster**
197
+
198
+ |Dependencies
199
+ |Node, Puppeteer, Chrome
200
+ |Ruby only
201
+ |Simpler
202
+ |===
203
+
204
+ === Migration Benefits
205
+
206
+ ==== Why Migrate to Sirena?
207
+
208
+ **Simpler Deployment**
209
+
210
+ * No Node.js required
211
+ * No headless browser (Puppeteer/Chrome)
212
+ * Single Ruby gem installation
213
+ * Smaller Docker images
214
+
215
+ **Better Performance**
216
+
217
+ * 16x faster batch processing
218
+ * 8x lower memory usage
219
+ * Faster CI/CD builds
220
+ * Better for serverless
221
+
222
+ **Native Ruby Integration**
223
+
224
+ * Rails helpers and views
225
+ * Jekyll static sites
226
+ * Rake task automation
227
+ * Ruby gem ecosystem
228
+
229
+ **Enhanced Tooling**
230
+
231
+ * Built-in batch processor
232
+ * Better error messages
233
+ * YAML-based themes
234
+ * Command-line tools
235
+
236
+ === Not Migrating? When to Use Each
237
+
238
+ ==== Use Mermaid.js When:
239
+
240
+ * You need interactive diagrams in browser
241
+ * You need click events and callbacks
242
+ * You have complex custom styling
243
+ * You're already using Node.js stack
244
+ * You need real-time client-side rendering
245
+
246
+ ==== Use Sirena When:
247
+
248
+ * Server-side rendering is required
249
+ * Building Ruby applications (Rails, Jekyll)
250
+ * Batch processing many diagrams
251
+ * CI/CD diagram generation
252
+ * Simpler deployment is priority
253
+ * Lower resource usage is important
254
+
255
+ === Migration Path
256
+
257
+ See link:{% link _guides/migration-from-mermaid.adoc %}[Migration Guide] for:
258
+
259
+ * Step-by-step migration instructions
260
+ * Syntax conversion examples
261
+ * Tool comparison
262
+ * Performance optimization
263
+ * Troubleshooting tips
264
+
265
+ === Compatibility Testing
266
+
267
+ Sirena includes comprehensive compatibility testing:
268
+
269
+ [source,bash]
270
+ ----
271
+ # Run Mermaid.js compatibility tests
272
+ rake mermaid:validate
273
+
274
+ # Compare output with Mermaid.js
275
+ sirena render diagram.mmd -o sirena-output.svg
276
+ # Compare with mermaid-cli output
277
+ ----
278
+
279
+ === Future Compatibility
280
+
281
+ Sirena aims to maintain syntax parity with Mermaid.js. New Mermaid.js features will be evaluated for inclusion based on:
282
+
283
+ * Server-side rendering applicability
284
+ * Ruby ecosystem fit
285
+ * Performance impact
286
+ * Community demand
287
+
288
+ === Getting Help
289
+
290
+ * **Issues**: https://github.com/claricle/sirena/issues[Report compatibility issues]
291
+ * **Migration**: link:{% link _guides/migration-from-mermaid.adoc %}[Migration Guide]
292
+ * **Examples**: https://github.com/claricle/sirena/tree/main/examples[Example Diagrams]
293
+
294
+ === Related Documentation
295
+
296
+ * link:comparison/[Tool Comparison] - Compare Sirena with Mermaid.js, PlantUML, and Graphviz
297
+ * link:{% link _guides/migration-from-mermaid.adoc %}[Migration from Mermaid.js] - Step-by-step migration guide
298
+ * link:{% link _diagram_types/index.adoc %}[Diagram Types Reference] - Syntax for all diagram types
299
+ * link:{% link _features/theme-system.adoc %}[Theme System] - YAML-based theming
300
+ * link:{% link _guides/performance-optimization.adoc %}[Performance Optimization] - Optimization techniques
@@ -0,0 +1,39 @@
1
+ ---
2
+ layout: default
3
+ title: Core Topics
4
+ nav_order: 2
5
+ has_children: true
6
+ ---
7
+
8
+ == Core Topics
9
+
10
+ Essential concepts and information you need to understand and use Sirena effectively.
11
+
12
+ == What's in This Section
13
+
14
+ This section covers fundamental topics including:
15
+
16
+ * **Installation** - How to install and set up Sirena
17
+ * **Architecture** - Understanding Sirena's design and components
18
+ * **Theming System** - How themes work in Sirena
19
+ * **Compatibility** - Mermaid.js syntax compatibility matrix
20
+ * **Comparison** - Sirena vs Mermaid.js vs PlantUML vs Graphviz
21
+ * **Configuration** - Configuring Sirena for your needs
22
+
23
+ == Quick Navigation
24
+
25
+ Browse the topics in the sidebar or use the search function to find specific information.
26
+
27
+ == Getting Started
28
+
29
+ If you're new to Sirena, we recommend starting with:
30
+
31
+ . link:{% link _tutorials/getting-started.adoc %}[Getting Started Tutorial]
32
+ . link:{% link _pages/architecture.adoc %}[Architecture Overview]
33
+ . link:{% link _diagram_types/index.adoc %}[Diagram Types Reference]
34
+
35
+ == Need Help?
36
+
37
+ * See link:{% link _tutorials/index.adoc %}[Tutorials] for step-by-step guides
38
+ * Check link:{% link _references/index.adoc %}[References] for API documentation
39
+ * Visit our https://github.com/claricle/sirena/issues[GitHub Issues] for support
@@ -0,0 +1,103 @@
1
+ ---
2
+ layout: default
3
+ title: References
4
+ nav_order: 7
5
+ has_children: true
6
+ ---
7
+
8
+ == References
9
+
10
+ Complete API, CLI, and configuration references for quick lookup.
11
+
12
+ == What's in This Section
13
+
14
+ Comprehensive reference documentation:
15
+
16
+ * **CLI Reference** - Complete command-line interface
17
+ * **API Reference** - Programmatic API documentation
18
+ * **Theme Reference** - Theme configuration schema
19
+ * **Error Codes** - All error codes and meanings
20
+ * **Configuration** - Configuration options
21
+ * **Mermaid Compatibility** - Syntax compatibility matrix
22
+
23
+ == Reference Format
24
+
25
+ Each reference page provides:
26
+
27
+ * **Quick lookup tables** - Find information fast
28
+ * **Complete listings** - Exhaustive documentation
29
+ * **Examples** - Usage demonstrations
30
+ * **Notes** - Important details and caveats
31
+ * **See also** - Related documentation
32
+
33
+ == Command-Line Interface
34
+
35
+ === link:{% link _references/cli-reference.adoc %}[CLI Reference]
36
+
37
+ Complete documentation of all `sirena` commands:
38
+
39
+ * `sirena render` - Render a single diagram
40
+ * `sirena batch` - Process multiple diagrams
41
+ * `sirena types` - List supported diagram types
42
+ * `sirena version` - Show version information
43
+
44
+ == Programmatic API
45
+
46
+ === link:{% link _references/api-reference.adoc %}[API Reference]
47
+
48
+ Ruby API documentation:
49
+
50
+ * `Sirena.render()` - Main rendering method
51
+ * `Sirena::Engine` - Core engine class
52
+ * `Sirena::Theme` - Theme system
53
+ * `Sirena::Parser` - Parser classes
54
+ * `Sirena::Renderer` - Renderer classes
55
+
56
+ == Configuration
57
+
58
+ === link:{% link _references/theme-reference.adoc %}[Theme Reference]
59
+
60
+ Complete theme configuration schema:
61
+
62
+ * Color palette configuration
63
+ * Typography settings
64
+ * Shape styles
65
+ * Spacing configuration
66
+ * Effect styles
67
+
68
+ == Error Handling
69
+
70
+ === link:{% link _references/error-codes.adoc %}[Error Codes]
71
+
72
+ All error codes with:
73
+
74
+ * Error code number
75
+ * Error message
76
+ * Cause explanation
77
+ * Resolution steps
78
+ * Examples
79
+
80
+ == Compatibility
81
+
82
+ === link:{% link _references/mermaid-compatibility.adoc %}[Mermaid Compatibility]
83
+
84
+ Feature-by-feature comparison:
85
+
86
+ * Supported syntax
87
+ * Unsupported features
88
+ * Behavioral differences
89
+ * Migration notes
90
+
91
+ == Quick Reference Cards
92
+
93
+ Downloadable quick references:
94
+
95
+ * link:{% link _references/cli-quick-reference.adoc %}[CLI Quick Reference]
96
+ * link:{% link _references/api-quick-reference.adoc %}[API Quick Reference]
97
+ * link:{% link _references/syntax-quick-reference.adoc %}[Syntax Quick Reference]
98
+
99
+ == Related Documentation
100
+
101
+ * link:{% link _tutorials/index.adoc %}[Tutorials] - Learn step-by-step
102
+ * link:{% link _guides/index.adoc %}[Guides] - In-depth topics
103
+ * link:{% link _diagram_types/index.adoc %}[Diagram Types] - Syntax for each type
@@ -0,0 +1,57 @@
1
+ ---
2
+ layout: default
3
+ title: Tutorials
4
+ nav_order: 3
5
+ has_children: true
6
+ ---
7
+
8
+ == Tutorials
9
+
10
+ Step-by-step tutorials to help you accomplish specific tasks with Sirena.
11
+
12
+ == What's in This Section
13
+
14
+ Hands-on tutorials covering:
15
+
16
+ * **Getting Started** - Installation and first diagram
17
+ * **CLI Usage** - Command-line interface walkthrough
18
+ * **Rails Integration** - Using Sirena in Rails applications
19
+ * **Jekyll Integration** - Static site generation with Sirena
20
+ * **Batch Processing** - Processing multiple diagrams at once
21
+ * **Theme Customization** - Creating and applying custom themes
22
+
23
+ == Tutorial Format
24
+
25
+ Each tutorial includes:
26
+
27
+ * **Prerequisites** - What you need before starting
28
+ * **Step-by-step instructions** - Clear, actionable steps
29
+ * **Code examples** - Copy-paste ready code
30
+ * **Expected results** - What you should see
31
+ * **Troubleshooting** - Common issues and solutions
32
+
33
+ == Recommended Learning Path
34
+
35
+ For beginners:
36
+
37
+ . link:{% link _tutorials/getting-started.adoc %}[Getting Started]
38
+ . link:{% link _tutorials/cli-usage.adoc %}[CLI Usage]
39
+ . link:{% link _tutorials/creating-first-diagram.adoc %}[Creating Your First Diagram]
40
+
41
+ For application integration:
42
+
43
+ . link:{% link _tutorials/rails-integration.adoc %}[Rails Integration]
44
+ . link:{% link _tutorials/jekyll-integration.adoc %}[Jekyll Integration]
45
+
46
+ For advanced usage:
47
+
48
+ . link:{% link _tutorials/batch-processing.adoc %}[Batch Processing]
49
+ . link:{% link _tutorials/theme-customization.adoc %}[Theme Customization]
50
+
51
+ == Next Steps
52
+
53
+ After completing tutorials:
54
+
55
+ * Explore link:{% link _guides/index.adoc %}[Guides] for in-depth topics
56
+ * Reference link:{% link _diagram_types/index.adoc %}[Diagram Types] for syntax
57
+ * Check link:{% link _references/index.adoc %}[API Reference] for programmatic use
data/docs/index.adoc ADDED
@@ -0,0 +1,166 @@
1
+ ---
2
+ layout: default
3
+ title: Home
4
+ nav_order: 1
5
+ description: "Sirena: Pure Ruby Mermaid diagram renderer with 19 diagram types"
6
+ permalink: /
7
+ ---
8
+
9
+ == Sirena Documentation
10
+
11
+ Welcome to Sirena, a pure Ruby Mermaid diagram rendering library that converts Mermaid syntax into beautiful SVG diagrams. Built for server-side rendering, Sirena provides native integration with Ruby applications without requiring Node.js or browser dependencies.
12
+
13
+ == Why Sirena?
14
+
15
+ === Pure Ruby Implementation
16
+ * No Node.js dependencies
17
+ * No Puppeteer/Chrome requirements
18
+ * Simpler deployment in Ruby environments
19
+ * Native integration with Rails, Jekyll, and Ruby applications
20
+
21
+ === Better Performance
22
+ * Faster startup (no browser launch)
23
+ * Lower memory footprint
24
+ * Better for batch processing
25
+ * Suitable for serverless environments
26
+
27
+ === Comprehensive Diagram Support
28
+ * 19 diagram types fully implemented
29
+ * Mermaid.js syntax compatibility
30
+ * Advanced theming system
31
+ * Professional-quality SVG output
32
+
33
+ == Quick Start
34
+
35
+ [source,ruby]
36
+ ----
37
+ # Installation
38
+ gem install sirena
39
+
40
+ # Basic usage
41
+ require 'sirena'
42
+
43
+ svg = Sirena.render(<<~MERMAID)
44
+ graph TD
45
+ Start --> End
46
+ MERMAID
47
+
48
+ puts svg
49
+ ----
50
+
51
+ See link:{% link _tutorials/getting-started.adoc %}[Getting Started Tutorial] for complete installation and usage instructions.
52
+
53
+ == Documentation Structure
54
+
55
+ === link:{% link _pages/index.adoc %}[Core Topics]
56
+ Essential concepts and architecture you need to understand Sirena.
57
+
58
+ === link:{% link _tutorials/index.adoc %}[Tutorials]
59
+ Step-by-step guides to help you get started and accomplish specific tasks.
60
+
61
+ === link:{% link _guides/index.adoc %}[Guides]
62
+ In-depth guides for advanced features and best practices.
63
+
64
+ === link:{% link _diagram_types/index.adoc %}[Diagram Types]
65
+ Complete reference for all 19 diagram types with syntax and examples.
66
+
67
+ === link:{% link _features/index.adoc %}[Features]
68
+ Detailed documentation of Sirena's unique features and capabilities.
69
+
70
+ === link:{% link _references/index.adoc %}[References]
71
+ Complete API and CLI references for quick lookup.
72
+
73
+ == Supported Diagram Types
74
+
75
+ Sirena supports 19 diagram types compatible with Mermaid.js syntax:
76
+
77
+ [cols="1,3"]
78
+ |===
79
+ |Type |Use Case
80
+
81
+ |link:{% link _diagram_types/flowchart.adoc %}[Flowchart]
82
+ |Process flows and directed graphs
83
+
84
+ |link:{% link _diagram_types/sequence-diagram.adoc %}[Sequence]
85
+ |Message interactions over time
86
+
87
+ |link:{% link _diagram_types/class-diagram.adoc %}[Class]
88
+ |Object-oriented class structures
89
+
90
+ |link:{% link _diagram_types/state-diagram.adoc %}[State]
91
+ |State machines and transitions
92
+
93
+ |link:{% link _diagram_types/er-diagram.adoc %}[ER Diagram]
94
+ |Database entity relationships
95
+
96
+ |link:{% link _diagram_types/user-journey.adoc %}[User Journey]
97
+ |User experience mapping
98
+
99
+ |link:{% link _diagram_types/git-graph.adoc %}[Git Graph]
100
+ |Repository history visualization
101
+
102
+ |link:{% link _diagram_types/pie-chart.adoc %}[Pie Chart]
103
+ |Proportional data visualization
104
+
105
+ |link:{% link _diagram_types/gantt-chart.adoc %}[Gantt Chart]
106
+ |Project timeline planning
107
+
108
+ |link:{% link _diagram_types/quadrant-chart.adoc %}[Quadrant]
109
+ |Priority/complexity matrices
110
+
111
+ |link:{% link _diagram_types/requirement-diagram.adoc %}[Requirement]
112
+ |Requirements traceability
113
+
114
+ |link:{% link _diagram_types/c4-diagram.adoc %}[C4]
115
+ |Software architecture (Context, Container, Component, Code)
116
+
117
+ |link:{% link _diagram_types/mindmap.adoc %}[Mindmap]
118
+ |Hierarchical idea organization
119
+
120
+ |link:{% link _diagram_types/timeline.adoc %}[Timeline]
121
+ |Historical event visualization
122
+
123
+ |link:{% link _diagram_types/sankey-diagram.adoc %}[Sankey]
124
+ |Flow quantity visualization
125
+
126
+ |link:{% link _diagram_types/xy-chart.adoc %}[XY Chart]
127
+ |Data point plotting
128
+
129
+ |link:{% link _diagram_types/block-diagram.adoc %}[Block]
130
+ |Component relationships
131
+
132
+ |link:{% link _diagram_types/architecture-diagram.adoc %}[Architecture]
133
+ |System architecture views
134
+
135
+ |link:{% link _diagram_types/kanban-diagram.adoc %}[Kanban]
136
+ |Workflow board visualization
137
+ |===
138
+
139
+ See the complete link:{% link _diagram_types/index.adoc %}[Diagram Types Reference] for detailed syntax and examples.
140
+
141
+ == Key Features
142
+
143
+ * **Theme System**: YAML-based theming with 4 built-in themes (default, dark, light, high-contrast)
144
+ * **Batch Processing**: Built-in batch renderer for documentation sets
145
+ * **Rails Integration**: Native Ruby integration with Rails helpers
146
+ * **Jekyll Support**: Static site generation compatibility
147
+ * **Parslet Parsing**: Robust grammar-based parsing with clear error messages
148
+ * **SVG Output**: Professional-quality scalable vector graphics
149
+
150
+ == Compatibility & Comparison
151
+
152
+ Sirena maintains syntax compatibility with Mermaid.js while providing a pure Ruby implementation optimized for server-side rendering.
153
+
154
+ * link:{% link _pages/compatibility.adoc %}[Mermaid.js Compatibility] - Detailed syntax compatibility matrix
155
+ * link:{% link _pages/comparison.adoc %}[Tool Comparison] - Compare Sirena with Mermaid.js, PlantUML, and Graphviz
156
+
157
+ == Getting Help
158
+
159
+ * **Report Issues**: https://github.com/claricle/sirena/issues[GitHub Issues]
160
+ * **Source Code**: https://github.com/claricle/sirena[GitHub Repository]
161
+ * **RubyGems**: https://rubygems.org/gems/sirena[Sirena Gem]
162
+ * **Migration Guide**: link:{% link _guides/migration-from-mermaid.adoc %}[Migrating from Mermaid.js]
163
+
164
+ == License
165
+
166
+ Sirena is open source under the MIT License.
data/docs/lychee.toml ADDED
@@ -0,0 +1,54 @@
1
+ # Cache results between runs
2
+ cache = true
3
+
4
+ # Maximum number of concurrent link checks
5
+ max_concurrency = 16
6
+
7
+ # Accept status codes
8
+ accept = [200, 204, 301, 302, 307, 308, 403, 429]
9
+
10
+ # Exclude patterns
11
+ exclude = [
12
+ # Skip local file URLs that won't exist in production
13
+ '^file://',
14
+ # Skip mailto links
15
+ '^mailto:',
16
+ # Skip anchors without base URL
17
+ '^#',
18
+ ]
19
+
20
+ # Include patterns
21
+ include = [
22
+ # Check all HTTP/HTTPS links
23
+ '^https?://',
24
+ ]
25
+
26
+ # Timeout for each request (in seconds)
27
+ timeout = 30
28
+
29
+ # Number of retries
30
+ max_retries = 3
31
+
32
+ # User agent
33
+ user_agent = "lychee/link-checker"
34
+
35
+ # Exclude certain file types from link checking
36
+ exclude_file = []
37
+
38
+ # Skip checking links in certain HTML elements
39
+ exclude_mail = true
40
+
41
+ # Check for broken fragments (anchors)
42
+ check_anchors = true
43
+
44
+ # Verify SSL certificates
45
+ require_https = false
46
+
47
+ # Follow redirects
48
+ follow_redirects = true
49
+
50
+ # Maximum redirect depth
51
+ max_redirects = 10
52
+
53
+ # Verbosity
54
+ verbose = true