Mermaid

Keywords: #mermaid #markdown #grafici

Mermaid lets you create diagrams and visualizations using text and code.

Per poter utilizzare mermaid in un sito statico come quello generato da Hugo basta aggiungere in layouts/shortcodes/ il file mermaid.html, contenente il seguente codice.

<div class="mermaid">
  {{.Inner}}
</div>

{{ if (.Page.Params.mermaid) }}
<!-- MermaidJS support -->
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});
</script>
{{ end }}

Mermaid si basa su javascript e la sintassi richiama vagamente markdown. Con il codice che segue

{{< mermaid >}}
%%{init: {’theme’: ‘base’, ’themeVariables’: { ‘primaryColor’: ‘#ff0000’}}}%%
graph TD;
A–>B;
A–>C;
B–>D;
C–>D;
{{< /mermaid >}}

Si ottiene

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% graph TD; A-->B; A-->C; B-->D; C-->D;

Un altro esempio.
Con questo codice

{{< mermaid >}}
%%{init: {’theme’: ‘base’, ’themeVariables’: { ‘primaryColor’: ‘#ffcccc’, ’edgeLabelBackground’:’#ffffee’, ’tertiaryColor’: ‘#fff0f0’}}}%%
flowchart LR
A[Hard] –>|Text| B(Round)
B –> C{Decision}
C –>|One| D[Result 1]
C –>|Two| E[Result 2]
{{< /mermaid >}}

Si ottiene

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffcccc', 'edgeLabelBackground':'#ffffee', 'tertiaryColor': '#fff0f0'}}}%% flowchart LR A[Hard] -->|Text| B(Round) B --> C{Decision} C -->|One| D[Result 1] C -->|Two| E[Result 2]

Non ci si deve dimenticare di aggiungere nel front matter mermaid: true
La documentazione di mermaid è disponibile qui.