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,71 @@
1
+ = Error Diagram Examples
2
+
3
+ == Purpose
4
+
5
+ Error diagrams display error messages and alerts in a standardized format within documentation.
6
+
7
+ == When to Use
8
+
9
+ * Error message documentation
10
+ * Alert visualization
11
+ * Warning displays
12
+ * Exception documentation
13
+ * Issue tracking displays
14
+
15
+ == Syntax Overview
16
+
17
+ [source,mermaid]
18
+ ----
19
+ error
20
+ title Error Message
21
+ Error: Something went wrong
22
+ Details: Additional context
23
+ ----
24
+
25
+ == Examples
26
+
27
+ === 01: Basic Error
28
+
29
+ Demonstrates basic error message display.
30
+
31
+ **File**: link:01-basic-error.mmd[01-basic-error.mmd]
32
+
33
+ [source,mermaid]
34
+ ----
35
+ include::01-basic-error.mmd[]
36
+ ----
37
+
38
+ image::01-basic-error.svg[]
39
+
40
+ === 02: Error Display
41
+
42
+ Showcases detailed error with context.
43
+
44
+ **File**: link:02-error-display.mmd[02-error-display.mmd]
45
+
46
+ [source,mermaid]
47
+ ----
48
+ include::02-error-display.mmd[]
49
+ ----
50
+
51
+ image::02-error-display.svg[]
52
+
53
+ == Features Demonstrated
54
+
55
+ [%header,cols="1,1"]
56
+ |===
57
+ | Feature | Example
58
+
59
+ | Error messages
60
+ | 01, 02
61
+
62
+ | Title display
63
+ | 01, 02
64
+
65
+ | Error details
66
+ | 02
67
+ |===
68
+
69
+ == Additional Resources
70
+
71
+ * link:../../README.adoc[Main Documentation]
@@ -0,0 +1,13 @@
1
+ <svg
2
+ width="500.0"
3
+ height="220.0"
4
+ viewBox="0 0 500 220"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <rect fill="#FFEBEE" stroke="#D32F2F" stroke-width="2" x="50.0" y="50.0" width="400.0" height="120.0" rx="8.0" ry="8.0"/>
9
+ <circle fill="#D32F2F" stroke="#B71C1C" stroke-width="2" cx="100.0" cy="110.0" r="20.0"/>
10
+ <rect fill="#FFFFFF" x="98.0" y="100.0" width="4.0" height="12.0" rx="2.0"/>
11
+ <circle fill="#FFFFFF" cx="100.0" cy="116.0" r="2.0"/>
12
+ <text fill="#C62828" x="140.0" y="105.0" text-anchor="start" font-family="Arial, Helvetica, sans-serif" font-size="16" font-weight="bold">Diagrams</text>
13
+ </svg>
@@ -0,0 +1,13 @@
1
+ graph TD
2
+ Start[Start Process] --> Input[Receive Input]
3
+ Input --> Validate{Valid Input?}
4
+ Validate -->|Yes| Process[Process Data]
5
+ Validate -->|No| Error[Show Error]
6
+ Error --> Input
7
+ Process --> Calculate[Calculate Result]
8
+ Calculate --> Output[Generate Output]
9
+ Output --> Save{Save to Database?}
10
+ Save -->|Yes| DB[(Database)]
11
+ Save -->|No| Display[Display Result]
12
+ DB --> Display
13
+ Display --> End[End Process]
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="400" height="200" viewBox="0 0 400 200" version="1.2" xmlns="http://www.w3.org/2000/svg">
3
+ <rect x="50" y="50" width="300" height="100" fill="#f0f0f0" stroke="#000000" stroke-width="2"/>
4
+ <text x="200" y="100" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#000000">Flowchart (parser needs fixes)</text>
5
+ </svg>
@@ -0,0 +1,7 @@
1
+ graph TD
2
+ Start([Start]) --> Process[Process Data]
3
+ Process --> Decision{Valid?}
4
+ Decision -->|Yes| Success[Success]
5
+ Decision -->|No| Error[Error]
6
+ Success --> End([End])
7
+ Error --> End
@@ -0,0 +1,52 @@
1
+ <svg
2
+ width="726.0"
3
+ height="364.0"
4
+ viewBox="0 0 726.0 364.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-Start_to_Process">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 82.5 67.0 L 339.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-Process_to_Decision">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 339.5 67.0 L 598.0 77.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-Decision_to_Success">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 598.0 77.0 L 89.5 267.0" marker-end="url(#arrowhead)"/>
16
+ <text fill="#000000" x="343.75" y="167.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">|Yes|</text>
17
+ </g>
18
+ <g id="edge-Decision_to_Error">
19
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 598.0 77.0 L 332.5 267.0" marker-end="url(#arrowhead)"/>
20
+ <text fill="#000000" x="465.25" y="167.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">|No|</text>
21
+ </g>
22
+ <g id="edge-Success_to_End">
23
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 89.5 267.0 L 575.5 267.0" marker-end="url(#arrowhead)"/>
24
+ </g>
25
+ <g id="edge-Error_to_End">
26
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 332.5 267.0 L 575.5 267.0" marker-end="url(#arrowhead)"/>
27
+ </g>
28
+ <g id="node-Start">
29
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="65.0" height="34.0" rx="17.0" ry="17.0"/>
30
+ <text fill="#000000" x="82.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Start</text>
31
+ </g>
32
+ <g id="node-Process">
33
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="79.0" height="34.0"/>
34
+ <text fill="#000000" x="339.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Process</text>
35
+ </g>
36
+ <g id="node-Decision">
37
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2.0" points="598.0,50 646.0,77.0 598.0,104.0 550,77.0"/>
38
+ <text fill="#000000" x="598.0" y="77.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Decision</text>
39
+ </g>
40
+ <g id="node-Success">
41
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="250.0" width="79.0" height="34.0"/>
42
+ <text fill="#000000" x="89.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Success</text>
43
+ </g>
44
+ <g id="node-Error">
45
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="250.0" width="65.0" height="34.0"/>
46
+ <text fill="#000000" x="332.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Error</text>
47
+ </g>
48
+ <g id="node-End">
49
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="250.0" width="51.0" height="34.0" rx="17.0" ry="17.0"/>
50
+ <text fill="#000000" x="575.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">End</text>
51
+ </g>
52
+ </svg>
@@ -0,0 +1,13 @@
1
+ title: "Basic Flowchart"
2
+ description: "Simple flowchart showing start, process, decision, and end nodes with conditional branching"
3
+ complexity: basic
4
+ keywords:
5
+ - flowchart
6
+ - decision
7
+ - conditional
8
+ - basic
9
+ use_cases:
10
+ - "Getting started with flowcharts"
11
+ - "Simple process documentation"
12
+ - "Decision tree visualization"
13
+ theme: default
@@ -0,0 +1,87 @@
1
+ <svg
2
+ width="677.0"
3
+ height="964.0"
4
+ viewBox="0 0 677.0 964.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-A_to_B">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 68.5 67.0 L 318.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-B_to_C">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 318.5 67.0 L 568.5 67.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-C_to_D">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 67.0 L 68.5 267.0" marker-end="url(#arrowhead)"/>
16
+ </g>
17
+ <g id="edge-E_to_F">
18
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 318.5 267.0 L 568.5 272.0" marker-end="url(#arrowhead)"/>
19
+ </g>
20
+ <g id="edge-F_to_G">
21
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 272.0 L 68.5 467.0" marker-end="url(#arrowhead)"/>
22
+ </g>
23
+ <g id="edge-G_to_H">
24
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 68.5 467.0 L 323.5 477.0" marker-end="url(#arrowhead)"/>
25
+ </g>
26
+ <g id="edge-I_to_J">
27
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 573.5 477.0 L 68.5 667.0" marker-end="url(#arrowhead)"/>
28
+ </g>
29
+ <g id="edge-J_to_K">
30
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 68.5 667.0 L 318.5 667.0" marker-end="url(#arrowhead)"/>
31
+ </g>
32
+ <g id="edge-L_to_M">
33
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 667.0 L 68.5 867.0" marker-end="url(#arrowhead)"/>
34
+ </g>
35
+ <g id="node-A">
36
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="37.0" height="34.0"/>
37
+ <text fill="#000000" x="68.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">A</text>
38
+ </g>
39
+ <g id="node-B">
40
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="37.0" height="34.0" rx="17.0" ry="17.0"/>
41
+ <text fill="#000000" x="318.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">B</text>
42
+ </g>
43
+ <g id="node-C">
44
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="50.0" width="37.0" height="34.0" rx="17.0" ry="17.0"/>
45
+ <text fill="#000000" x="568.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">C</text>
46
+ </g>
47
+ <g id="node-D">
48
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="250.0" width="37.0" height="34.0"/>
49
+ <text fill="#000000" x="68.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">D</text>
50
+ </g>
51
+ <g id="node-E">
52
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="250.0" width="37.0" height="34.0"/>
53
+ <text fill="#000000" x="318.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">E</text>
54
+ </g>
55
+ <g id="node-F">
56
+ <circle fill="#ffffff" stroke="#000000" stroke-width="2.0" cx="568.5" cy="272.0" r="18.5"/>
57
+ <text fill="#000000" x="568.5" y="272.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">F</text>
58
+ </g>
59
+ <g id="node-G">
60
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="450.0" width="37.0" height="34.0"/>
61
+ <text fill="#000000" x="68.5" y="467.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">G</text>
62
+ </g>
63
+ <g id="node-H">
64
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2.0" points="323.5,450 347.0,477.0 323.5,504.0 300,477.0"/>
65
+ <text fill="#000000" x="323.5" y="477.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">H</text>
66
+ </g>
67
+ <g id="node-I">
68
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2.0" points="561.75,450 585.25,450 597.0,477.0 585.25,504.0 561.75,504.0 550,477.0"/>
69
+ <text fill="#000000" x="573.5" y="477.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">I</text>
70
+ </g>
71
+ <g id="node-J">
72
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="650.0" width="37.0" height="34.0"/>
73
+ <text fill="#000000" x="68.5" y="667.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">J</text>
74
+ </g>
75
+ <g id="node-K">
76
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="650.0" width="37.0" height="34.0"/>
77
+ <text fill="#000000" x="318.5" y="667.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">K</text>
78
+ </g>
79
+ <g id="node-L">
80
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="650.0" width="37.0" height="34.0"/>
81
+ <text fill="#000000" x="568.5" y="667.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">L</text>
82
+ </g>
83
+ <g id="node-M">
84
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="850.0" width="37.0" height="34.0"/>
85
+ <text fill="#000000" x="68.5" y="867.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">M</text>
86
+ </g>
87
+ </svg>
@@ -0,0 +1,9 @@
1
+ graph TD
2
+ A[Rectangle]
3
+ B(Rounded)
4
+ C{Rhombus}
5
+ D((Circle))
6
+
7
+ A --> B
8
+ B --> C
9
+ C --> D
@@ -0,0 +1,33 @@
1
+ <svg
2
+ width="677.0"
3
+ height="374.0"
4
+ viewBox="0 0 677.0 374.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-A_to_B">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 68.5 67.0 L 318.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-B_to_C">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 318.5 67.0 L 573.5 77.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-C_to_D">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 573.5 77.0 L 68.5 272.0" marker-end="url(#arrowhead)"/>
16
+ </g>
17
+ <g id="node-A">
18
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="37.0" height="34.0"/>
19
+ <text fill="#000000" x="68.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">A</text>
20
+ </g>
21
+ <g id="node-B">
22
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="37.0" height="34.0" rx="17.0" ry="17.0"/>
23
+ <text fill="#000000" x="318.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">B</text>
24
+ </g>
25
+ <g id="node-C">
26
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2.0" points="573.5,50 597.0,77.0 573.5,104.0 550,77.0"/>
27
+ <text fill="#000000" x="573.5" y="77.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">C</text>
28
+ </g>
29
+ <g id="node-D">
30
+ <circle fill="#ffffff" stroke="#000000" stroke-width="2.0" cx="68.5" cy="272.0" r="18.5"/>
31
+ <text fill="#000000" x="68.5" y="272.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">D</text>
32
+ </g>
33
+ </svg>
@@ -0,0 +1,7 @@
1
+ graph TD
2
+ A[Start] --> B[Solid Arrow]
3
+ B -.-> C[Dotted Arrow]
4
+ C --> D[End]
5
+
6
+ E[Label] -->|Yes| F[Labeled Arrow]
7
+ F -->|No| G[Another]
@@ -0,0 +1,53 @@
1
+ <svg
2
+ width="667.0"
3
+ height="564.0"
4
+ viewBox="0 0 667.0 564.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-A_to_B">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 82.5 67.0 L 318.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-B_to_C">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 318.5 67.0 L 568.5 67.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-C_to_D">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 67.0 L 75.5 267.0" marker-end="url(#arrowhead)"/>
16
+ </g>
17
+ <g id="edge-E_to_F">
18
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 332.5 267.0 L 568.5 267.0" marker-end="url(#arrowhead)"/>
19
+ <text fill="#000000" x="450.5" y="262.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">|Yes|</text>
20
+ </g>
21
+ <g id="edge-F_to_G">
22
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 267.0 L 89.5 467.0" marker-end="url(#arrowhead)"/>
23
+ <text fill="#000000" x="329.0" y="362.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">|No|</text>
24
+ </g>
25
+ <g id="node-A">
26
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="65.0" height="34.0"/>
27
+ <text fill="#000000" x="82.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Start</text>
28
+ </g>
29
+ <g id="node-B">
30
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="37.0" height="34.0"/>
31
+ <text fill="#000000" x="318.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">B</text>
32
+ </g>
33
+ <g id="node-C">
34
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="50.0" width="37.0" height="34.0"/>
35
+ <text fill="#000000" x="568.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">C</text>
36
+ </g>
37
+ <g id="node-D">
38
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="250.0" width="51.0" height="34.0"/>
39
+ <text fill="#000000" x="75.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">End</text>
40
+ </g>
41
+ <g id="node-E">
42
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="250.0" width="65.0" height="34.0"/>
43
+ <text fill="#000000" x="332.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Label</text>
44
+ </g>
45
+ <g id="node-F">
46
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="250.0" width="37.0" height="34.0"/>
47
+ <text fill="#000000" x="568.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">F</text>
48
+ </g>
49
+ <g id="node-G">
50
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="450.0" width="79.0" height="34.0"/>
51
+ <text fill="#000000" x="89.5" y="467.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Another</text>
52
+ </g>
53
+ </svg>
@@ -0,0 +1,9 @@
1
+ graph TD
2
+ A[Web App]
3
+ B[Mobile App]
4
+ C[API Server]
5
+ D[Database]
6
+
7
+ A --> C
8
+ B --> C
9
+ C --> D
@@ -0,0 +1,33 @@
1
+ <svg
2
+ width="667.0"
3
+ height="364.0"
4
+ viewBox="0 0 667.0 364.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-A_to_C">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 68.5 67.0 L 568.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-B_to_C">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 318.5 67.0 L 568.5 67.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-C_to_D">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 67.0 L 68.5 267.0" marker-end="url(#arrowhead)"/>
16
+ </g>
17
+ <g id="node-A">
18
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="37.0" height="34.0"/>
19
+ <text fill="#000000" x="68.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">A</text>
20
+ </g>
21
+ <g id="node-B">
22
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="37.0" height="34.0"/>
23
+ <text fill="#000000" x="318.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">B</text>
24
+ </g>
25
+ <g id="node-C">
26
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="50.0" width="37.0" height="34.0"/>
27
+ <text fill="#000000" x="568.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">C</text>
28
+ </g>
29
+ <g id="node-D">
30
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="250.0" width="37.0" height="34.0"/>
31
+ <text fill="#000000" x="68.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">D</text>
32
+ </g>
33
+ </svg>
@@ -0,0 +1,9 @@
1
+ graph TD
2
+ A[Node A]
3
+ B[Node B]
4
+ C[Node C]
5
+ D[Node D]
6
+
7
+ A --> B
8
+ B --> C
9
+ C --> D
@@ -0,0 +1,33 @@
1
+ <svg
2
+ width="667.0"
3
+ height="364.0"
4
+ viewBox="0 0 667.0 364.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-A_to_B">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 68.5 67.0 L 318.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-B_to_C">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 318.5 67.0 L 568.5 67.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-C_to_D">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 568.5 67.0 L 68.5 267.0" marker-end="url(#arrowhead)"/>
16
+ </g>
17
+ <g id="node-A">
18
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="37.0" height="34.0"/>
19
+ <text fill="#000000" x="68.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">A</text>
20
+ </g>
21
+ <g id="node-B">
22
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="37.0" height="34.0"/>
23
+ <text fill="#000000" x="318.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">B</text>
24
+ </g>
25
+ <g id="node-C">
26
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="50.0" width="37.0" height="34.0"/>
27
+ <text fill="#000000" x="568.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">C</text>
28
+ </g>
29
+ <g id="node-D">
30
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="250.0" width="37.0" height="34.0"/>
31
+ <text fill="#000000" x="68.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">D</text>
32
+ </g>
33
+ </svg>
@@ -0,0 +1,8 @@
1
+ graph TD
2
+ Start[Start] --> Input[Get Input]
3
+ Input --> Validate{Valid?}
4
+ Validate -->|No| Error[Error]
5
+ Validate -->|Yes| Process[Process]
6
+ Process --> Save[Save]
7
+ Save --> End[End]
8
+ Error --> End
@@ -0,0 +1,59 @@
1
+ <svg
2
+ width="726.0"
3
+ height="564.0"
4
+ viewBox="0 0 726.0 564.0"
5
+ version="1.2"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <g id="edge-Start_to_Input">
9
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 82.5 67.0 L 332.5 67.0" marker-end="url(#arrowhead)"/>
10
+ </g>
11
+ <g id="edge-Input_to_Validate">
12
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 332.5 67.0 L 598.0 77.0" marker-end="url(#arrowhead)"/>
13
+ </g>
14
+ <g id="edge-Validate_to_Error">
15
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 598.0 77.0 L 82.5 267.0" marker-end="url(#arrowhead)"/>
16
+ <text fill="#000000" x="340.25" y="167.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">|No|</text>
17
+ </g>
18
+ <g id="edge-Validate_to_Process">
19
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 598.0 77.0 L 339.5 267.0" marker-end="url(#arrowhead)"/>
20
+ <text fill="#000000" x="468.75" y="167.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="12.0">|Yes|</text>
21
+ </g>
22
+ <g id="edge-Process_to_Save">
23
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 339.5 267.0 L 579.0 267.0" marker-end="url(#arrowhead)"/>
24
+ </g>
25
+ <g id="edge-Save_to_End">
26
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 579.0 267.0 L 75.5 467.0" marker-end="url(#arrowhead)"/>
27
+ </g>
28
+ <g id="edge-Error_to_End">
29
+ <path fill="none" stroke="#000000" stroke-width="2.0" d="M 82.5 267.0 L 75.5 467.0" marker-end="url(#arrowhead)"/>
30
+ </g>
31
+ <g id="node-Start">
32
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="50.0" width="65.0" height="34.0"/>
33
+ <text fill="#000000" x="82.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Start</text>
34
+ </g>
35
+ <g id="node-Input">
36
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="50.0" width="65.0" height="34.0"/>
37
+ <text fill="#000000" x="332.5" y="67.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Input</text>
38
+ </g>
39
+ <g id="node-Validate">
40
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2.0" points="598.0,50 646.0,77.0 598.0,104.0 550,77.0"/>
41
+ <text fill="#000000" x="598.0" y="77.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Validate</text>
42
+ </g>
43
+ <g id="node-Error">
44
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="250.0" width="65.0" height="34.0"/>
45
+ <text fill="#000000" x="82.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Error</text>
46
+ </g>
47
+ <g id="node-Process">
48
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="300.0" y="250.0" width="79.0" height="34.0"/>
49
+ <text fill="#000000" x="339.5" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Process</text>
50
+ </g>
51
+ <g id="node-Save">
52
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="550.0" y="250.0" width="58.0" height="34.0"/>
53
+ <text fill="#000000" x="579.0" y="267.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">Save</text>
54
+ </g>
55
+ <g id="node-End">
56
+ <rect fill="#ffffff" stroke="#000000" stroke-width="2.0" x="50.0" y="450.0" width="51.0" height="34.0"/>
57
+ <text fill="#000000" x="75.5" y="467.0" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="14.0" dominant-baseline="middle">End</text>
58
+ </g>
59
+ </svg>