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.
- checksums.yaml +7 -0
- data/.github/workflows/build_deploy.yml +59 -0
- data/.github/workflows/links.yml +85 -0
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +27 -0
- data/.gitignore +68 -0
- data/.rspec +3 -0
- data/.rubocop.yml +14 -0
- data/.rubocop_todo.yml +70 -0
- data/ARCHITECTURE.md +744 -0
- data/Gemfile +12 -0
- data/LICENSE +25 -0
- data/README.adoc +357 -0
- data/Rakefile +11 -0
- data/docs/.gitignore +1 -0
- data/docs/Gemfile +13 -0
- data/docs/_config.yml +182 -0
- data/docs/_diagram_types/architecture-diagram.adoc +314 -0
- data/docs/_diagram_types/block-diagram.adoc +345 -0
- data/docs/_diagram_types/c4-diagram.adoc +559 -0
- data/docs/_diagram_types/class-diagram.adoc +816 -0
- data/docs/_diagram_types/er-diagram.adoc +719 -0
- data/docs/_diagram_types/error-diagram.adoc +114 -0
- data/docs/_diagram_types/examples/flowchart-examples.adoc +29 -0
- data/docs/_diagram_types/flowchart.adoc +488 -0
- data/docs/_diagram_types/gantt-chart.adoc +502 -0
- data/docs/_diagram_types/git-graph.adoc +600 -0
- data/docs/_diagram_types/index.adoc +192 -0
- data/docs/_diagram_types/info-diagram.adoc +103 -0
- data/docs/_diagram_types/kanban-diagram.adoc +262 -0
- data/docs/_diagram_types/mindmap.adoc +603 -0
- data/docs/_diagram_types/packet-diagram.adoc +378 -0
- data/docs/_diagram_types/pie-chart.adoc +335 -0
- data/docs/_diagram_types/quadrant-chart.adoc +406 -0
- data/docs/_diagram_types/radar-chart.adoc +528 -0
- data/docs/_diagram_types/requirement-diagram.adoc +416 -0
- data/docs/_diagram_types/sankey-diagram.adoc +357 -0
- data/docs/_diagram_types/sequence-diagram.adoc +664 -0
- data/docs/_diagram_types/state-diagram.adoc +658 -0
- data/docs/_diagram_types/timeline.adoc +352 -0
- data/docs/_diagram_types/treemap-diagram.adoc +462 -0
- data/docs/_diagram_types/user-journey.adoc +602 -0
- data/docs/_features/index.adoc +129 -0
- data/docs/_guides/cli-reference.adoc +203 -0
- data/docs/_guides/index.adoc +56 -0
- data/docs/_guides/installation.adoc +100 -0
- data/docs/_guides/quick-start.adoc +132 -0
- data/docs/_pages/comparison.adoc +441 -0
- data/docs/_pages/compatibility.adoc +300 -0
- data/docs/_pages/index.adoc +39 -0
- data/docs/_references/index.adoc +103 -0
- data/docs/_tutorials/index.adoc +57 -0
- data/docs/index.adoc +166 -0
- data/docs/lychee.toml +54 -0
- data/examples/.gitignore +10 -0
- data/examples/README.adoc +196 -0
- data/examples/README.md +64 -0
- data/examples/architecture/01-basic-services.mmd +9 -0
- data/examples/architecture/01-basic-services.svg +37 -0
- data/examples/architecture/02-service-groups.mmd +16 -0
- data/examples/architecture/02-service-groups.svg +55 -0
- data/examples/architecture/README.adoc +79 -0
- data/examples/block/01-basic-blocks.mmd +13 -0
- data/examples/block/01-basic-blocks.svg +44 -0
- data/examples/block/02-block-shapes.mmd +13 -0
- data/examples/block/02-block-shapes.svg +47 -0
- data/examples/block/README.adoc +85 -0
- data/examples/c4/01-context-diagram.mmd +10 -0
- data/examples/c4/01-context-diagram.svg +45 -0
- data/examples/c4/02-container-diagram.mmd +24 -0
- data/examples/c4/02-container-diagram.svg +105 -0
- data/examples/c4/README.adoc +92 -0
- data/examples/class_diagram/01-basic-classes.mmd +61 -0
- data/examples/class_diagram/01-basic-classes.svg +117 -0
- data/examples/class_diagram/02-relationships.mmd +61 -0
- data/examples/class_diagram/02-relationships.svg +129 -0
- data/examples/class_diagram/README.adoc +93 -0
- data/examples/er_diagram/01-basic-entities.mmd +64 -0
- data/examples/er_diagram/01-basic-entities.svg +5 -0
- data/examples/er_diagram/02-cardinality.mmd +57 -0
- data/examples/er_diagram/02-cardinality.svg +125 -0
- data/examples/er_diagram/README.adoc +88 -0
- data/examples/error/01-basic-error.mmd +1 -0
- data/examples/error/01-basic-error.svg +13 -0
- data/examples/error/02-error-display.mmd +1 -0
- data/examples/error/02-error-display.svg +13 -0
- data/examples/error/README.adoc +71 -0
- data/examples/error_message_example.svg +13 -0
- data/examples/flowchart/00-original.mmd +13 -0
- data/examples/flowchart/00-original.svg +5 -0
- data/examples/flowchart/01-basic-flow.mmd +7 -0
- data/examples/flowchart/01-basic-flow.svg +52 -0
- data/examples/flowchart/01-basic-flow.yml +13 -0
- data/examples/flowchart/02*.svg +87 -0
- data/examples/flowchart/02-node-shapes.mmd +9 -0
- data/examples/flowchart/02-node-shapes.svg +33 -0
- data/examples/flowchart/03-edge-types.mmd +7 -0
- data/examples/flowchart/03-edge-types.svg +53 -0
- data/examples/flowchart/04-subgraphs.mmd +9 -0
- data/examples/flowchart/04-subgraphs.svg +33 -0
- data/examples/flowchart/05-styling.mmd +9 -0
- data/examples/flowchart/05-styling.svg +33 -0
- data/examples/flowchart/06-complex-flow.mmd +8 -0
- data/examples/flowchart/06-complex-flow.svg +59 -0
- data/examples/flowchart/README.adoc +167 -0
- data/examples/gantt/01-simple-timeline.* +14 -0
- data/examples/gantt/01-simple-timeline.mmd +6 -0
- data/examples/gantt/01-simple-timeline.svg +26 -0
- data/examples/gantt/02-task-dependencies.mmd +6 -0
- data/examples/gantt/02-task-dependencies.svg +26 -0
- data/examples/gantt/README.adoc +86 -0
- data/examples/git_graph/01-linear-history.mmd +12 -0
- data/examples/git_graph/01-linear-history.svg +26 -0
- data/examples/git_graph/02-branching.mmd +12 -0
- data/examples/git_graph/02-branching.svg +26 -0
- data/examples/git_graph/README.adoc +73 -0
- data/examples/info/02-showinfo.mmd +1 -0
- data/examples/info/02-showinfo.svg +10 -0
- data/examples/info/README.adoc +58 -0
- data/examples/info_showinfo_example.svg +10 -0
- data/examples/kanban/01-simple-board.mmd +8 -0
- data/examples/kanban/01-simple-board.svg +43 -0
- data/examples/kanban/02-workflow.mmd +8 -0
- data/examples/kanban/02-workflow.svg +43 -0
- data/examples/kanban/README.adoc +79 -0
- data/examples/mindmap/01-simple-tree.mmd +19 -0
- data/examples/mindmap/01-simple-tree.svg +61 -0
- data/examples/mindmap/02-knowledge-map.mmd +19 -0
- data/examples/mindmap/02-knowledge-map.svg +61 -0
- data/examples/mindmap/README.adoc +77 -0
- data/examples/packet/01-basic-packet.* +17 -0
- data/examples/packet/01-basic-packet.mmd +4 -0
- data/examples/packet/01-basic-packet.svg +82 -0
- data/examples/packet/README.adoc +58 -0
- data/examples/pie/01-simple-chart.mmd +5 -0
- data/examples/pie/01-simple-chart.svg +17 -0
- data/examples/pie/02-labeled-slices.mmd +6 -0
- data/examples/pie/02-labeled-slices.svg +19 -0
- data/examples/pie/README.adoc +75 -0
- data/examples/quadrant/01-basic-quadrant.mmd +13 -0
- data/examples/quadrant/01-basic-quadrant.svg +33 -0
- data/examples/quadrant/02-positioned-items.mmd +14 -0
- data/examples/quadrant/02-positioned-items.svg +35 -0
- data/examples/quadrant/README.adoc +84 -0
- data/examples/radar/01-simple-radar.* +5 -0
- data/examples/radar/01-simple-radar.mmd +3 -0
- data/examples/radar/01-simple-radar.svg +25 -0
- data/examples/radar/02-multiple-curves.mmd +4 -0
- data/examples/radar/02-multiple-curves.svg +43 -0
- data/examples/radar/README.adoc +75 -0
- data/examples/requirement/01-basic-requirements.mmd +23 -0
- data/examples/requirement/01-basic-requirements.svg +49 -0
- data/examples/requirement/02-risk-levels.mmd +23 -0
- data/examples/requirement/02-risk-levels.svg +49 -0
- data/examples/requirement/README.adoc +85 -0
- data/examples/sankey/01-simple-flow.mmd +7 -0
- data/examples/sankey/01-simple-flow.svg +34 -0
- data/examples/sankey/02-multi-stage.mmd +11 -0
- data/examples/sankey/02-multi-stage.svg +44 -0
- data/examples/sankey/README.adoc +74 -0
- data/examples/sequence/01-basic-sequence.mmd +27 -0
- data/examples/sequence/01-basic-sequence.svg +5 -0
- data/examples/sequence/02-activations.mmd +17 -0
- data/examples/sequence/02-activations.svg +78 -0
- data/examples/sequence/README.adoc +86 -0
- data/examples/state_diagram/01-simple-states.mmd +29 -0
- data/examples/state_diagram/01-simple-states.svg +5 -0
- data/examples/state_diagram/02-composite.mmd +19 -0
- data/examples/state_diagram/02-composite.svg +81 -0
- data/examples/state_diagram/README.adoc +90 -0
- data/examples/timeline/01-simple-timeline.mmd +11 -0
- data/examples/timeline/01-simple-timeline.svg +36 -0
- data/examples/timeline/02-periods.mmd +15 -0
- data/examples/timeline/02-periods.svg +47 -0
- data/examples/timeline/README.adoc +78 -0
- data/examples/treemap/01-basic-treemap.mmd +12 -0
- data/examples/treemap/01-basic-treemap.svg +59 -0
- data/examples/treemap/README.adoc +59 -0
- data/examples/user_journey/01-simple-journey.mmd +23 -0
- data/examples/user_journey/01-simple-journey.svg +5 -0
- data/examples/user_journey/02-multi-actor.mmd +18 -0
- data/examples/user_journey/02-multi-actor.svg +129 -0
- data/examples/user_journey/README.adoc +81 -0
- data/examples/xychart/01-line-chart.mmd +5 -0
- data/examples/xychart/01-line-chart.svg +43 -0
- data/examples/xychart/02-bar-chart.mmd +7 -0
- data/examples/xychart/02-bar-chart.svg +48 -0
- data/examples/xychart/README.adoc +80 -0
- data/exe/sirena +7 -0
- data/lib/sirena/cli.rb +138 -0
- data/lib/sirena/commands/batch.rb +117 -0
- data/lib/sirena/commands/render.rb +80 -0
- data/lib/sirena/commands/types.rb +29 -0
- data/lib/sirena/commands/version.rb +24 -0
- data/lib/sirena/diagram/architecture.rb +46 -0
- data/lib/sirena/diagram/base.rb +61 -0
- data/lib/sirena/diagram/block.rb +81 -0
- data/lib/sirena/diagram/c4.rb +328 -0
- data/lib/sirena/diagram/class_diagram.rb +385 -0
- data/lib/sirena/diagram/er_diagram.rb +238 -0
- data/lib/sirena/diagram/error.rb +38 -0
- data/lib/sirena/diagram/flowchart.rb +160 -0
- data/lib/sirena/diagram/gantt.rb +71 -0
- data/lib/sirena/diagram/git_graph.rb +36 -0
- data/lib/sirena/diagram/info.rb +38 -0
- data/lib/sirena/diagram/kanban.rb +178 -0
- data/lib/sirena/diagram/mindmap.rb +54 -0
- data/lib/sirena/diagram/packet.rb +79 -0
- data/lib/sirena/diagram/pie.rb +115 -0
- data/lib/sirena/diagram/quadrant.rb +138 -0
- data/lib/sirena/diagram/radar.rb +52 -0
- data/lib/sirena/diagram/requirement.rb +133 -0
- data/lib/sirena/diagram/sankey.rb +217 -0
- data/lib/sirena/diagram/sequence.rb +242 -0
- data/lib/sirena/diagram/state_diagram.rb +237 -0
- data/lib/sirena/diagram/timeline.rb +171 -0
- data/lib/sirena/diagram/treemap.rb +84 -0
- data/lib/sirena/diagram/user_journey.rb +149 -0
- data/lib/sirena/diagram/xy_chart.rb +76 -0
- data/lib/sirena/diagram.rb +8 -0
- data/lib/sirena/diagram_registry.rb +101 -0
- data/lib/sirena/engine.rb +292 -0
- data/lib/sirena/parser/architecture.rb +41 -0
- data/lib/sirena/parser/base.rb +41 -0
- data/lib/sirena/parser/block.rb +72 -0
- data/lib/sirena/parser/c4.rb +53 -0
- data/lib/sirena/parser/class_diagram.rb +63 -0
- data/lib/sirena/parser/er_diagram.rb +40 -0
- data/lib/sirena/parser/error.rb +49 -0
- data/lib/sirena/parser/flowchart.rb +71 -0
- data/lib/sirena/parser/gantt.rb +60 -0
- data/lib/sirena/parser/git_graph.rb +95 -0
- data/lib/sirena/parser/grammars/architecture.rb +145 -0
- data/lib/sirena/parser/grammars/block.rb +190 -0
- data/lib/sirena/parser/grammars/c4.rb +226 -0
- data/lib/sirena/parser/grammars/class_diagram.rb +284 -0
- data/lib/sirena/parser/grammars/common.rb +84 -0
- data/lib/sirena/parser/grammars/er_diagram.rb +114 -0
- data/lib/sirena/parser/grammars/error.rb +40 -0
- data/lib/sirena/parser/grammars/flowchart.rb +298 -0
- data/lib/sirena/parser/grammars/gantt.rb +252 -0
- data/lib/sirena/parser/grammars/git_graph.rb +167 -0
- data/lib/sirena/parser/grammars/info.rb +58 -0
- data/lib/sirena/parser/grammars/kanban.rb +83 -0
- data/lib/sirena/parser/grammars/mindmap.rb +115 -0
- data/lib/sirena/parser/grammars/packet.rb +73 -0
- data/lib/sirena/parser/grammars/pie.rb +128 -0
- data/lib/sirena/parser/grammars/quadrant.rb +199 -0
- data/lib/sirena/parser/grammars/radar.rb +150 -0
- data/lib/sirena/parser/grammars/requirement.rb +188 -0
- data/lib/sirena/parser/grammars/sankey.rb +104 -0
- data/lib/sirena/parser/grammars/sequence.rb +247 -0
- data/lib/sirena/parser/grammars/state_diagram.rb +172 -0
- data/lib/sirena/parser/grammars/timeline.rb +142 -0
- data/lib/sirena/parser/grammars/treemap.rb +120 -0
- data/lib/sirena/parser/grammars/xy_chart.rb +120 -0
- data/lib/sirena/parser/info.rb +49 -0
- data/lib/sirena/parser/kanban.rb +97 -0
- data/lib/sirena/parser/mindmap.rb +106 -0
- data/lib/sirena/parser/packet.rb +76 -0
- data/lib/sirena/parser/pie.rb +49 -0
- data/lib/sirena/parser/quadrant.rb +57 -0
- data/lib/sirena/parser/radar.rb +104 -0
- data/lib/sirena/parser/requirement.rb +70 -0
- data/lib/sirena/parser/sankey.rb +64 -0
- data/lib/sirena/parser/sequence.rb +51 -0
- data/lib/sirena/parser/state_diagram.rb +69 -0
- data/lib/sirena/parser/timeline.rb +57 -0
- data/lib/sirena/parser/transforms/architecture.rb +97 -0
- data/lib/sirena/parser/transforms/block.rb +254 -0
- data/lib/sirena/parser/transforms/c4.rb +347 -0
- data/lib/sirena/parser/transforms/class_diagram.rb +352 -0
- data/lib/sirena/parser/transforms/er_diagram.rb +169 -0
- data/lib/sirena/parser/transforms/error.rb +58 -0
- data/lib/sirena/parser/transforms/flowchart.rb +293 -0
- data/lib/sirena/parser/transforms/gantt.rb +215 -0
- data/lib/sirena/parser/transforms/git_graph.rb +160 -0
- data/lib/sirena/parser/transforms/info.rb +58 -0
- data/lib/sirena/parser/transforms/kanban.rb +176 -0
- data/lib/sirena/parser/transforms/mindmap.rb +227 -0
- data/lib/sirena/parser/transforms/packet.rb +63 -0
- data/lib/sirena/parser/transforms/pie.rb +143 -0
- data/lib/sirena/parser/transforms/quadrant.rb +177 -0
- data/lib/sirena/parser/transforms/radar.rb +126 -0
- data/lib/sirena/parser/transforms/requirement.rb +272 -0
- data/lib/sirena/parser/transforms/sankey.rb +122 -0
- data/lib/sirena/parser/transforms/sequence.rb +342 -0
- data/lib/sirena/parser/transforms/state_diagram.rb +292 -0
- data/lib/sirena/parser/transforms/timeline.rb +177 -0
- data/lib/sirena/parser/transforms/treemap.rb +81 -0
- data/lib/sirena/parser/transforms/xy_chart.rb +132 -0
- data/lib/sirena/parser/treemap.rb +98 -0
- data/lib/sirena/parser/user_journey.rb +120 -0
- data/lib/sirena/parser/xy_chart.rb +114 -0
- data/lib/sirena/parser.rb +8 -0
- data/lib/sirena/renderer/architecture.rb +251 -0
- data/lib/sirena/renderer/base.rb +251 -0
- data/lib/sirena/renderer/block.rb +286 -0
- data/lib/sirena/renderer/c4.rb +490 -0
- data/lib/sirena/renderer/class_diagram.rb +499 -0
- data/lib/sirena/renderer/er_diagram.rb +417 -0
- data/lib/sirena/renderer/error.rb +131 -0
- data/lib/sirena/renderer/flowchart.rb +301 -0
- data/lib/sirena/renderer/gantt.rb +331 -0
- data/lib/sirena/renderer/git_graph.rb +368 -0
- data/lib/sirena/renderer/info.rb +93 -0
- data/lib/sirena/renderer/kanban.rb +295 -0
- data/lib/sirena/renderer/mindmap.rb +396 -0
- data/lib/sirena/renderer/packet.rb +239 -0
- data/lib/sirena/renderer/pie.rb +235 -0
- data/lib/sirena/renderer/quadrant.rb +292 -0
- data/lib/sirena/renderer/radar.rb +323 -0
- data/lib/sirena/renderer/requirement.rb +371 -0
- data/lib/sirena/renderer/sankey.rb +255 -0
- data/lib/sirena/renderer/sequence.rb +424 -0
- data/lib/sirena/renderer/state_diagram.rb +328 -0
- data/lib/sirena/renderer/timeline.rb +304 -0
- data/lib/sirena/renderer/treemap.rb +152 -0
- data/lib/sirena/renderer/user_journey.rb +331 -0
- data/lib/sirena/renderer/xy_chart.rb +452 -0
- data/lib/sirena/renderer.rb +8 -0
- data/lib/sirena/svg/circle.rb +41 -0
- data/lib/sirena/svg/document.rb +103 -0
- data/lib/sirena/svg/element.rb +65 -0
- data/lib/sirena/svg/ellipse.rb +33 -0
- data/lib/sirena/svg/group.rb +71 -0
- data/lib/sirena/svg/line.rb +49 -0
- data/lib/sirena/svg/path.rb +76 -0
- data/lib/sirena/svg/polygon.rb +43 -0
- data/lib/sirena/svg/polyline.rb +35 -0
- data/lib/sirena/svg/rect.rb +57 -0
- data/lib/sirena/svg/style.rb +44 -0
- data/lib/sirena/svg/text.rb +72 -0
- data/lib/sirena/svg.rb +19 -0
- data/lib/sirena/text_measurement.rb +71 -0
- data/lib/sirena/theme/builtin/dark.yml +70 -0
- data/lib/sirena/theme/builtin/default.yml +80 -0
- data/lib/sirena/theme/builtin/high_contrast.yml +70 -0
- data/lib/sirena/theme/builtin/light.yml +70 -0
- data/lib/sirena/theme/color_palette.rb +48 -0
- data/lib/sirena/theme/effect_styles.rb +28 -0
- data/lib/sirena/theme/registry.rb +41 -0
- data/lib/sirena/theme/shape_styles.rb +28 -0
- data/lib/sirena/theme/spacing_config.rb +24 -0
- data/lib/sirena/theme/typography.rb +30 -0
- data/lib/sirena/theme.rb +69 -0
- data/lib/sirena/transform/architecture.rb +273 -0
- data/lib/sirena/transform/base.rb +199 -0
- data/lib/sirena/transform/block.rb +215 -0
- data/lib/sirena/transform/c4.rb +288 -0
- data/lib/sirena/transform/class_diagram.rb +296 -0
- data/lib/sirena/transform/er_diagram.rb +204 -0
- data/lib/sirena/transform/error.rb +39 -0
- data/lib/sirena/transform/flowchart.rb +161 -0
- data/lib/sirena/transform/gantt.rb +253 -0
- data/lib/sirena/transform/git_graph.rb +283 -0
- data/lib/sirena/transform/info.rb +39 -0
- data/lib/sirena/transform/kanban.rb +180 -0
- data/lib/sirena/transform/mindmap.rb +251 -0
- data/lib/sirena/transform/packet.rb +185 -0
- data/lib/sirena/transform/pie.rb +62 -0
- data/lib/sirena/transform/quadrant.rb +167 -0
- data/lib/sirena/transform/radar.rb +227 -0
- data/lib/sirena/transform/requirement.rb +233 -0
- data/lib/sirena/transform/sankey.rb +212 -0
- data/lib/sirena/transform/sequence.rb +143 -0
- data/lib/sirena/transform/state_diagram.rb +228 -0
- data/lib/sirena/transform/timeline.rb +139 -0
- data/lib/sirena/transform/treemap.rb +120 -0
- data/lib/sirena/transform/user_journey.rb +207 -0
- data/lib/sirena/transform/xy_chart.rb +273 -0
- data/lib/sirena/transform.rb +8 -0
- data/lib/sirena/version.rb +5 -0
- data/lib/sirena.rb +328 -0
- data/lib/tasks/benchmark.rake +532 -0
- data/lib/tasks/examples.rake +468 -0
- data/lib/tasks/generate_mermaid_fixtures.rake +363 -0
- data/lib/tasks/mermaid_fixtures.rake +46 -0
- data/scripts/extract_mermaid_tests.rb +493 -0
- data/scripts/rename_to_sirena.rb +73 -0
- data/sirena.gemspec +47 -0
- metadata +529 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
= Timeline diagrams
|
|
2
|
+
:toc:
|
|
3
|
+
:toclevels: 3
|
|
4
|
+
|
|
5
|
+
== Overview
|
|
6
|
+
|
|
7
|
+
Timeline diagrams in Sirena represent chronological events and milestones arranged along a time axis. Timelines are ideal for visualizing historical progressions, project milestones, or any sequence of events that occur over time.
|
|
8
|
+
|
|
9
|
+
Timelines are useful for:
|
|
10
|
+
|
|
11
|
+
* Documenting historical events and developments
|
|
12
|
+
* Visualizing project roadmaps and milestones
|
|
13
|
+
* Showing product release schedules
|
|
14
|
+
* Mapping organizational changes over time
|
|
15
|
+
* Creating biographical or company history visualizations
|
|
16
|
+
|
|
17
|
+
== Syntax specification
|
|
18
|
+
|
|
19
|
+
=== Diagram declaration
|
|
20
|
+
|
|
21
|
+
Timelines are declared using the `timeline` keyword:
|
|
22
|
+
|
|
23
|
+
[source,mermaid]
|
|
24
|
+
----
|
|
25
|
+
timeline
|
|
26
|
+
<diagram-content>
|
|
27
|
+
----
|
|
28
|
+
|
|
29
|
+
=== Title declaration
|
|
30
|
+
|
|
31
|
+
Optional title can be added:
|
|
32
|
+
|
|
33
|
+
[source,mermaid]
|
|
34
|
+
----
|
|
35
|
+
timeline
|
|
36
|
+
title My Timeline Title
|
|
37
|
+
<events>
|
|
38
|
+
----
|
|
39
|
+
|
|
40
|
+
=== Event syntax
|
|
41
|
+
|
|
42
|
+
Events are defined with a time/date and one or more descriptions:
|
|
43
|
+
|
|
44
|
+
[source,mermaid]
|
|
45
|
+
----
|
|
46
|
+
<time> : <description>
|
|
47
|
+
----
|
|
48
|
+
|
|
49
|
+
Multiple descriptions for the same time:
|
|
50
|
+
|
|
51
|
+
[source,mermaid]
|
|
52
|
+
----
|
|
53
|
+
<time> : <description1> : <description2> : <description3>
|
|
54
|
+
----
|
|
55
|
+
|
|
56
|
+
Continuation entries (adds to previous event):
|
|
57
|
+
|
|
58
|
+
[source,mermaid]
|
|
59
|
+
----
|
|
60
|
+
<time> : <description1>
|
|
61
|
+
: <description2>
|
|
62
|
+
----
|
|
63
|
+
|
|
64
|
+
=== Section grouping
|
|
65
|
+
|
|
66
|
+
Events can be organized into sections:
|
|
67
|
+
|
|
68
|
+
[source,mermaid]
|
|
69
|
+
----
|
|
70
|
+
timeline
|
|
71
|
+
section <section-name>
|
|
72
|
+
<events>
|
|
73
|
+
section <section-name>
|
|
74
|
+
<events>
|
|
75
|
+
----
|
|
76
|
+
|
|
77
|
+
=== Task entries
|
|
78
|
+
|
|
79
|
+
Sections can contain tasks (items without timestamps):
|
|
80
|
+
|
|
81
|
+
[source,mermaid]
|
|
82
|
+
----
|
|
83
|
+
timeline
|
|
84
|
+
section Tasks
|
|
85
|
+
task1
|
|
86
|
+
task2
|
|
87
|
+
task3
|
|
88
|
+
----
|
|
89
|
+
|
|
90
|
+
== Examples
|
|
91
|
+
|
|
92
|
+
=== Simple timeline
|
|
93
|
+
|
|
94
|
+
.Basic timeline with events
|
|
95
|
+
[example]
|
|
96
|
+
====
|
|
97
|
+
[source,mermaid]
|
|
98
|
+
----
|
|
99
|
+
timeline
|
|
100
|
+
title History of Social Media Platforms
|
|
101
|
+
2002 : LinkedIn
|
|
102
|
+
2004 : Facebook
|
|
103
|
+
2005 : YouTube
|
|
104
|
+
2006 : Twitter
|
|
105
|
+
----
|
|
106
|
+
|
|
107
|
+
This creates a simple horizontal timeline showing the founding years of major social media platforms.
|
|
108
|
+
====
|
|
109
|
+
|
|
110
|
+
=== Timeline with multiple events per year
|
|
111
|
+
|
|
112
|
+
.Multiple events at same time
|
|
113
|
+
[example]
|
|
114
|
+
====
|
|
115
|
+
[source,mermaid]
|
|
116
|
+
----
|
|
117
|
+
timeline
|
|
118
|
+
title Tech Milestones 2004
|
|
119
|
+
2004 : Facebook launched : Google IPO
|
|
120
|
+
2005 : YouTube founded
|
|
121
|
+
2006 : Twitter created
|
|
122
|
+
----
|
|
123
|
+
|
|
124
|
+
This demonstrates how to show multiple events that occurred in the same year.
|
|
125
|
+
====
|
|
126
|
+
|
|
127
|
+
=== Timeline with sections
|
|
128
|
+
|
|
129
|
+
.Organized by historical periods
|
|
130
|
+
[example]
|
|
131
|
+
====
|
|
132
|
+
[source,mermaid]
|
|
133
|
+
----
|
|
134
|
+
timeline
|
|
135
|
+
title History of Flight
|
|
136
|
+
section 20th Century
|
|
137
|
+
1903 : Wright Brothers first flight
|
|
138
|
+
1927 : Lindbergh crosses Atlantic
|
|
139
|
+
1969 : Moon landing
|
|
140
|
+
section 21st Century
|
|
141
|
+
2004 : SpaceX founded
|
|
142
|
+
2020 : Crew Dragon Demo-2
|
|
143
|
+
----
|
|
144
|
+
|
|
145
|
+
This shows how sections can organize events into logical groupings (centuries, in this case).
|
|
146
|
+
====
|
|
147
|
+
|
|
148
|
+
=== Timeline with continuation entries
|
|
149
|
+
|
|
150
|
+
.Using continuation syntax
|
|
151
|
+
[example]
|
|
152
|
+
====
|
|
153
|
+
[source,mermaid]
|
|
154
|
+
----
|
|
155
|
+
timeline
|
|
156
|
+
title Product Releases 2020
|
|
157
|
+
Jan 2020 : Version 1.0 released
|
|
158
|
+
: Mobile app launched
|
|
159
|
+
Jun 2020 : Version 2.0 released
|
|
160
|
+
: Desktop app launched
|
|
161
|
+
: API v2 available
|
|
162
|
+
Dec 2020 : Year-end update
|
|
163
|
+
----
|
|
164
|
+
|
|
165
|
+
This demonstrates the continuation syntax for adding multiple descriptions to an event.
|
|
166
|
+
====
|
|
167
|
+
|
|
168
|
+
=== Timeline with tasks in sections
|
|
169
|
+
|
|
170
|
+
.Project phases with tasks
|
|
171
|
+
[example]
|
|
172
|
+
====
|
|
173
|
+
[source,mermaid]
|
|
174
|
+
----
|
|
175
|
+
timeline
|
|
176
|
+
title Project Milestones
|
|
177
|
+
section Planning Phase
|
|
178
|
+
Requirements gathering
|
|
179
|
+
Design mockups
|
|
180
|
+
Architecture planning
|
|
181
|
+
section Development Phase
|
|
182
|
+
Backend implementation
|
|
183
|
+
Frontend development
|
|
184
|
+
Testing and QA
|
|
185
|
+
section Deployment Phase
|
|
186
|
+
Production release
|
|
187
|
+
Monitoring setup
|
|
188
|
+
Documentation
|
|
189
|
+
----
|
|
190
|
+
|
|
191
|
+
This shows how sections can contain tasks (non-timestamped items) for project phases.
|
|
192
|
+
====
|
|
193
|
+
|
|
194
|
+
== Features
|
|
195
|
+
|
|
196
|
+
=== Accessibility support
|
|
197
|
+
|
|
198
|
+
Timelines support accessibility features:
|
|
199
|
+
|
|
200
|
+
[source,mermaid]
|
|
201
|
+
----
|
|
202
|
+
timeline
|
|
203
|
+
accTitle: Project Timeline
|
|
204
|
+
accDescr: A timeline showing major project milestones
|
|
205
|
+
2020 : Project start
|
|
206
|
+
2021 : Beta release
|
|
207
|
+
2022 : General availability
|
|
208
|
+
----
|
|
209
|
+
|
|
210
|
+
=== Special characters
|
|
211
|
+
|
|
212
|
+
Timeline content supports special characters:
|
|
213
|
+
|
|
214
|
+
[source,mermaid]
|
|
215
|
+
----
|
|
216
|
+
timeline
|
|
217
|
+
title ;Special;Characters;
|
|
218
|
+
section ;Phase-1;
|
|
219
|
+
;Task-1; : ;Event-1;
|
|
220
|
+
----
|
|
221
|
+
|
|
222
|
+
=== Flexible time formats
|
|
223
|
+
|
|
224
|
+
Time values can be years, dates, or any text:
|
|
225
|
+
|
|
226
|
+
[source,mermaid]
|
|
227
|
+
----
|
|
228
|
+
timeline
|
|
229
|
+
2020 : Year only
|
|
230
|
+
2020-01 : Year and month
|
|
231
|
+
2020-01-15 : Full date
|
|
232
|
+
Q1 2020 : Quarter notation
|
|
233
|
+
Jan 2020 : Month notation
|
|
234
|
+
----
|
|
235
|
+
|
|
236
|
+
== Best practices
|
|
237
|
+
|
|
238
|
+
=== Use clear time markers
|
|
239
|
+
|
|
240
|
+
Choose a consistent time format throughout your timeline:
|
|
241
|
+
|
|
242
|
+
[source,mermaid]
|
|
243
|
+
----
|
|
244
|
+
timeline
|
|
245
|
+
%% Good - consistent format
|
|
246
|
+
2020 : Event A
|
|
247
|
+
2021 : Event B
|
|
248
|
+
2022 : Event C
|
|
249
|
+
|
|
250
|
+
%% Less clear - mixed formats
|
|
251
|
+
2020 : Event A
|
|
252
|
+
Jan 2021 : Event B
|
|
253
|
+
2022-03-15 : Event C
|
|
254
|
+
----
|
|
255
|
+
|
|
256
|
+
=== Organize with sections
|
|
257
|
+
|
|
258
|
+
For long timelines, use sections to group related periods:
|
|
259
|
+
|
|
260
|
+
[source,mermaid]
|
|
261
|
+
----
|
|
262
|
+
timeline
|
|
263
|
+
section Early Development
|
|
264
|
+
1990 : Project conceived
|
|
265
|
+
1995 : First prototype
|
|
266
|
+
section Growth Period
|
|
267
|
+
2000 : Market entry
|
|
268
|
+
2005 : International expansion
|
|
269
|
+
----
|
|
270
|
+
|
|
271
|
+
=== Limit event descriptions
|
|
272
|
+
|
|
273
|
+
Keep descriptions concise to maintain readability:
|
|
274
|
+
|
|
275
|
+
[source,mermaid]
|
|
276
|
+
----
|
|
277
|
+
timeline
|
|
278
|
+
%% Good
|
|
279
|
+
2020 : Product launched
|
|
280
|
+
|
|
281
|
+
%% Too verbose
|
|
282
|
+
2020 : Our amazing product was successfully launched to the market after years of development
|
|
283
|
+
----
|
|
284
|
+
|
|
285
|
+
=== Choose appropriate granularity
|
|
286
|
+
|
|
287
|
+
Match time granularity to the timeline scope:
|
|
288
|
+
|
|
289
|
+
* Years for long historical timelines (decades/centuries)
|
|
290
|
+
* Months for project timelines (6-24 months)
|
|
291
|
+
* Days/weeks for sprint or detailed project plans
|
|
292
|
+
|
|
293
|
+
== Rendering behavior
|
|
294
|
+
|
|
295
|
+
=== Timeline positioning
|
|
296
|
+
|
|
297
|
+
Events are positioned chronologically along a horizontal axis based on their time values. The renderer:
|
|
298
|
+
|
|
299
|
+
* Extracts numeric values from time strings (e.g., "2004" → 2004)
|
|
300
|
+
* Calculates relative positions along the timeline
|
|
301
|
+
* Distributes events proportionally based on their time values
|
|
302
|
+
|
|
303
|
+
=== Section visualization
|
|
304
|
+
|
|
305
|
+
When sections are used:
|
|
306
|
+
|
|
307
|
+
* Each section gets its own timeline axis
|
|
308
|
+
* Sections are stacked vertically
|
|
309
|
+
* Different colors distinguish sections
|
|
310
|
+
|
|
311
|
+
=== Task distribution
|
|
312
|
+
|
|
313
|
+
Tasks (items without timestamps) are distributed evenly along the timeline axis within their section.
|
|
314
|
+
|
|
315
|
+
== Limitations
|
|
316
|
+
|
|
317
|
+
=== Currently not supported
|
|
318
|
+
|
|
319
|
+
The following features are not yet supported:
|
|
320
|
+
|
|
321
|
+
* Custom styling for individual events
|
|
322
|
+
* Click events or interactions
|
|
323
|
+
* Complex date calculations
|
|
324
|
+
* Time period ranges (start-end dates for events)
|
|
325
|
+
|
|
326
|
+
=== Known issues
|
|
327
|
+
|
|
328
|
+
* Very long event descriptions may overflow
|
|
329
|
+
* Non-numeric time values may not position correctly
|
|
330
|
+
* Overlapping events at the same time may cause crowding
|
|
331
|
+
|
|
332
|
+
== Testing
|
|
333
|
+
|
|
334
|
+
The timeline implementation includes comprehensive test coverage:
|
|
335
|
+
|
|
336
|
+
* **16/17 Mermaid fixtures passing** (94.1% success rate)
|
|
337
|
+
* The single failing fixture contains invalid syntax ("Timeline diagram" instead of "timeline")
|
|
338
|
+
* Full support for sections, events, tasks, and styling
|
|
339
|
+
* HTML tags in descriptions handled correctly
|
|
340
|
+
* Special characters (semicolons, hashtags) supported
|
|
341
|
+
|
|
342
|
+
Run tests with:
|
|
343
|
+
|
|
344
|
+
[source,shell]
|
|
345
|
+
----
|
|
346
|
+
bundle exec rspec spec/sirena/parser/timeline_spec.rb
|
|
347
|
+
----
|
|
348
|
+
|
|
349
|
+
== Related documentation
|
|
350
|
+
|
|
351
|
+
* link:flowchart.adoc[Flowchart diagrams]
|
|
352
|
+
* link:https://mermaid.js.org/syntax/timeline.html[Official Mermaid timeline documentation]
|