diff --git a/docs/8.6.0_docs.md b/docs/8.6.0_docs.md
index 9cced28ca..6c7b7f50c 100644
--- a/docs/8.6.0_docs.md
+++ b/docs/8.6.0_docs.md
@@ -77,7 +77,19 @@ When deployed within code, init is called before the graph/diagram description.
**for example**:
-```mmd
+```mermaid-example
+%%{init: {"theme": "default", "logLevel": 1 }}%%
+ graph LR
+ a-->b
+ b-->c
+ c-->d
+ d-->e
+ e-->f
+ f-->g
+ g-->
+```
+
+```mermaid
%%{init: {"theme": "default", "logLevel": 1 }}%%
graph LR
a-->b
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index e4d84889a..06d04847c 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -42,6 +42,12 @@ It is also possible to override site-wide theme settings locally, for a specific
**Following is an example:**
+```mermaid-example
+%%{init: {'theme':'base'}}%%
+ graph TD
+ a --> b
+```
+
```mermaid
%%{init: {'theme':'base'}}%%
graph TD
@@ -58,7 +64,25 @@ The easiest way to make a custom theme is to start with the base theme, and just
Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`.
-```mmd
+```mermaid-example
+%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%%
+ graph TD
+ A[Christmas] -->|Get money| B(Go shopping)
+ B --> C{Let me think}
+ B --> G[/Another/]
+ C ==>|One| D[Laptop]
+ C -->|Two| E[iPhone]
+ C -->|Three| F[fa:fa-car Car]
+ subgraph section
+ C
+ D
+ E
+ F
+ G
+ end
+```
+
+```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%%
graph TD
A[Christmas] -->|Get money| B(Go shopping)
diff --git a/docs/README.md b/docs/README.md
index e22276488..87d78b6c1 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -49,7 +49,15 @@ In our release process we rely heavily on visual regression tests using [applito
### [Flowchart](./flowchart.md?id=flowcharts-basic-syntax)
-```mmd
+```mermaid-example
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+
+```mermaid
graph TD;
A-->B;
A-->C;
@@ -61,7 +69,21 @@ graph TD;
### [Sequence diagram](./sequenceDiagram.md)
-```mmd
+```mermaid-example
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
+```
+
+```mermaid
sequenceDiagram
participant Alice
participant Bob
@@ -79,7 +101,20 @@ sequenceDiagram
### [Gantt diagram](./gantt.md)
-```mmd
+```mermaid-example
+gantt
+dateFormat YYYY-MM-DD
+title Adding GANTT diagram to mermaid
+excludes weekdays 2014-01-10
+
+section A section
+Completed task :done, des1, 2014-01-06,2014-01-08
+Active task :active, des2, 2014-01-09, 3d
+Future task : des3, after des2, 5d
+Future task2 : des4, after des3, 5d
+```
+
+```mermaid
gantt
dateFormat YYYY-MM-DD
title Adding GANTT diagram to mermaid
@@ -96,7 +131,24 @@ Future task2 : des4, after des3, 5d
### [Class diagram](./classDiagram.md)
-```mmd
+```mermaid-example
+classDiagram
+Class01 <|-- AveryLongClass : Cool
+Class03 *-- Class04
+Class05 o-- Class06
+Class07 .. Class08
+Class09 --> C2 : Where am i?
+Class09 --* C3
+Class09 --|> Class07
+Class07 : equals()
+Class07 : Object[] elementData
+Class01 : size()
+Class01 : int chimp
+Class01 : int gorilla
+Class08 <--> C2: Cool label
+```
+
+```mermaid
classDiagram
Class01 <|-- AveryLongClass : Cool
Class03 *-- Class04
@@ -145,7 +197,15 @@ Class08 <--> C2: Cool label
### [Entity Relationship Diagram - :exclamation: experimental](./entityRelationshipDiagram.md)
-```mmd
+```mermaid-example
+erDiagram
+ CUSTOMER ||--o{ ORDER : places
+ ORDER ||--|{ LINE-ITEM : contains
+ CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
+
+```
+
+```mermaid
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
@@ -157,7 +217,19 @@ erDiagram
### [User Journey Diagram](./user-journey.md)
-```mmd
+```mermaid-example
+journey
+ title My working day
+ section Go to work
+ Make tea: 5: Me
+ Go upstairs: 3: Me
+ Do work: 1: Me, Cat
+ section Go home
+ Go downstairs: 5: Me
+ Sit down: 5: Me
+```
+
+```mermaid
journey
title My working day
section Go to work
diff --git a/docs/classDiagram.md b/docs/classDiagram.md
index 3f12dddf8..a273e1262 100644
--- a/docs/classDiagram.md
+++ b/docs/classDiagram.md
@@ -336,7 +336,12 @@ classE o-- classF : aggregation
Relations can logically represent an N:M association:
-```mmd
+```mermaid-example
+classDiagram
+ Animal <|--|> Zebra
+```
+
+```mermaid
classDiagram
Animal <|--|> Zebra
```
@@ -468,7 +473,17 @@ class Color{
Comments can be entered within a class diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text until the next newline will be treated as a comment, including any class diagram syntax.
-```mmd
+```mermaid-example
+classDiagram
+%% This whole line is a comment classDiagram class Shape <>
+class Shape{
+ <>
+ noOfVertices
+ draw()
+}
+```
+
+```mermaid
classDiagram
%% This whole line is a comment classDiagram class Shape <>
class Shape{
@@ -538,7 +553,15 @@ You would define these actions on a separate line after all classes have been de
_URL Link:_
-```mmd
+```mermaid-example
+classDiagram
+class Shape
+link Shape "https://www.github.com" "This is a tooltip for a link"
+class Shape2
+click Shape2 href "https://www.github.com" "This is a tooltip for a link"
+```
+
+```mermaid
classDiagram
class Shape
link Shape "https://www.github.com" "This is a tooltip for a link"
@@ -548,7 +571,15 @@ click Shape2 href "https://www.github.com" "This is a tooltip for a link"
_Callback:_
-```mmd
+```mermaid-example
+classDiagram
+class Shape
+callback Shape "callbackFunction" "This is a tooltip for a callback"
+class Shape2
+click Shape2 call callbackFunction() "This is a tooltip for a callback"
+```
+
+```mermaid
classDiagram
class Shape
callback Shape "callbackFunction" "This is a tooltip for a callback"
diff --git a/docs/diagrams-and-syntax-and-examples/flowchart.md b/docs/diagrams-and-syntax-and-examples/flowchart.md
index 0f798d27f..b901867d1 100644
--- a/docs/diagrams-and-syntax-and-examples/flowchart.md
+++ b/docs/diagrams-and-syntax-and-examples/flowchart.md
@@ -397,7 +397,15 @@ graph TB
If you describe the same diagram using the the basic syntax, it will take four lines:
-```mmd
+```mermaid-example
+graph TB
+ A --> C
+ A --> D
+ B --> C
+ B --> D
+```
+
+```mermaid
graph TB
A --> C
A --> D
@@ -740,7 +748,13 @@ Beginner's tip—here's a full example of using interactive links in HTML:
Comments can be entered within a flow diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text until the next newline will be treated as a comment, including all punctuation and any flow syntax.
-```mmd
+```mermaid-example
+graph LR
+%% this is a comment A -- text --> B{node}
+ A -- text --> B -- text2 --> C
+```
+
+```mermaid
graph LR
%% this is a comment A -- text --> B{node}
A -- text --> B -- text2 --> C
diff --git a/docs/entityRelationshipDiagram.md b/docs/entityRelationshipDiagram.md
index 1f24796b6..f6a3bb143 100644
--- a/docs/entityRelationshipDiagram.md
+++ b/docs/entityRelationshipDiagram.md
@@ -114,7 +114,13 @@ Cardinality is a property that describes how many elements of another entity can
Relationships may be classified as either _identifying_ or _non-identifying_ and these are rendered with either solid or dashed lines respectively. This is relevant when one of the entities in question can not have independent existence without the other. For example a firm that insures people to drive cars might need to store data on `NAMED-DRIVER`s. In modelling this we might start out by observing that a `CAR` can be driven by many `PERSON` instances, and a `PERSON` can drive many `CAR`s - both entities can exist without the other, so this is a non-identifying relationship that we might specify in Mermaid as: `PERSON }|..|{ CAR : "driver"`. Note the two dots in the middle of the relationship that will result in a dashed line being drawn between the two entities. But when this many-to-many relationship is resolved into two one-to-many relationships, we observe that a `NAMED-DRIVER` cannot exist without both a `PERSON` and a `CAR` - the relationships become identifying and would be specified using hyphens, which translate to a solid line:
-```mmd
+```mermaid-example
+erDiagram
+ CAR ||--o{ NAMED-DRIVER : allows
+ PERSON ||--o{ NAMED-DRIVER : is
+```
+
+```mermaid
erDiagram
CAR ||--o{ NAMED-DRIVER : allows
PERSON ||--o{ NAMED-DRIVER : is
diff --git a/docs/flowchart.md b/docs/flowchart.md
index 3ff17ad02..dedb42a27 100644
--- a/docs/flowchart.md
+++ b/docs/flowchart.md
@@ -403,7 +403,15 @@ word of warning, one could go overboard with this making the flowchart harder to
markdown form. The Swedish word `lagom` comes to mind. It means, not too much and not too little.
This goes for expressive syntaxes as well.
-```mmd
+```mermaid-example
+flowchart TB
+ A --> C
+ A --> D
+ B --> C
+ B --> D
+```
+
+```mermaid
flowchart TB
A --> C
A --> D
@@ -778,7 +786,13 @@ Beginner's tip—a full example using interactive links in a html context:
Comments can be entered within a flow diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any flow syntax
-```mmd
+```mermaid-example
+flowchart LR
+%% this is a comment A -- text --> B{node}
+ A -- text --> B -- text2 --> C
+```
+
+```mermaid
flowchart LR
%% this is a comment A -- text --> B{node}
A -- text --> B -- text2 --> C
diff --git a/docs/gantt.md b/docs/gantt.md
index 9d598d977..6776f01c2 100644
--- a/docs/gantt.md
+++ b/docs/gantt.md
@@ -234,7 +234,21 @@ More info in: https://github.com/mbostock/d3/wiki/Time-Formatting
Comments can be entered within a gantt chart, which will be ignored by the parser. Comments need to be on their own line and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax
-```mmd
+```mermaid-example
+gantt
+ title A Gantt Diagram
+ %% this is a comment
+ dateFormat YYYY-MM-DD
+ section Section
+ A task :a1, 2014-01-01, 30d
+ Another task :after a1 , 20d
+ section Another
+ Task in sec :2014-01-12 , 12d
+ another task : 24d
+
+```
+
+```mermaid
gantt
title A Gantt Diagram
%% this is a comment
diff --git a/docs/sequenceDiagram.md b/docs/sequenceDiagram.md
index 97968a676..1d425243a 100644
--- a/docs/sequenceDiagram.md
+++ b/docs/sequenceDiagram.md
@@ -481,7 +481,14 @@ sequenceDiagram
Comments can be entered within a sequence diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax
-```mmd
+```mermaid-example
+sequenceDiagram
+ Alice->>John: Hello John, how are you?
+ %% this is a comment
+ John-->>Alice: Great!
+```
+
+```mermaid
sequenceDiagram
Alice->>John: Hello John, how are you?
%% this is a comment
@@ -554,7 +561,20 @@ This can be configured by adding one or more link lines with the format:
link : @
-```mmd
+```mermaid-example
+sequenceDiagram
+ participant Alice
+ participant John
+ link Alice: Dashboard @ https://dashboard.contoso.com/alice
+ link Alice: Wiki @ https://wiki.contoso.com/alice
+ link John: Dashboard @ https://dashboard.contoso.com/john
+ link John: Wiki @ https://wiki.contoso.com/john
+ Alice->>John: Hello John, how are you?
+ John-->>Alice: Great!
+ Alice-)John: See you later!
+```
+
+```mermaid
sequenceDiagram
participant Alice
participant John
diff --git a/docs/stateDiagram.md b/docs/stateDiagram.md
index 8ea9fd239..3d0c07c8a 100644
--- a/docs/stateDiagram.md
+++ b/docs/stateDiagram.md
@@ -403,7 +403,18 @@ stateDiagram
Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax
-```mmd
+```mermaid-example
+stateDiagram-v2
+ [*] --> Still
+ Still --> [*]
+%% this is a comment
+ Still --> Moving
+ Moving --> Still %% another comment
+ Moving --> Crash
+ Crash --> [*]
+```
+
+```mermaid
stateDiagram-v2
[*] --> Still
Still --> [*]
diff --git a/docs/theming.md b/docs/theming.md
index 9ba136ec4..3e19b67ed 100644
--- a/docs/theming.md
+++ b/docs/theming.md
@@ -41,7 +41,13 @@ mermaidAPI.initialize({
When Generating a diagram using on a webpage that supports mermaid. It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array.
-```mmd
+```mermaid-example
+%%{init: {'theme':'base'}}%%
+ graph TD
+ a --> b
+```
+
+```mermaid
%%{init: {'theme':'base'}}%%
graph TD
a --> b
@@ -329,7 +335,25 @@ In the following examples, the directive `init` is used, with the `theme` being
### Flowchart
-```mmd
+```mermaid-example
+%%{init: {'securityLevel': 'loose', 'theme':'base'}}%%
+ graph TD
+ A[Christmas] -->|Get money| B(Go shopping)
+ B --> C{Let me think}
+ B --> G[/Another/]
+ C ==>|One| D[Laptop]
+ C -->|Two| E[iPhone]
+ C -->|Three| F[fa:fa-car Car]
+ subgraph section
+ C
+ D
+ E
+ F
+ G
+ end
+```
+
+```mermaid
%%{init: {'securityLevel': 'loose', 'theme':'base'}}%%
graph TD
A[Christmas] -->|Get money| B(Go shopping)
diff --git a/src/docs.mts b/src/docs.mts
index 15a36ddd3..04424b950 100644
--- a/src/docs.mts
+++ b/src/docs.mts
@@ -105,7 +105,7 @@ const logWasOrShouldBeTransformed = (filename: string, wasCopied: boolean) => {
*
* @param {string} filename Name of the file that will be verified
* @param {boolean} [doCopy=false] Whether we should copy that transformedContents to the final
- * documentation directory. Default is `false`. Default is `false`
+ * documentation directory. Default is `false`
* @param {string} [transformedContent] New contents for the file
*/
const copyTransformedContents = (filename: string, doCopy = false, transformedContent?: string) => {
@@ -145,12 +145,15 @@ const transformMarkdown = (file: string) => {
const doc = readSyncedUTF8file(file);
const ast: Root = remark.parse(doc);
const out = flatmap(ast, (c: Code) => {
- if (c.type !== 'code' || !c.lang?.startsWith('mermaid')) {
+ if (c.type !== 'code') {
return [c];
}
if (c.lang === 'mermaid' || c.lang === 'mmd') {
c.lang = 'mermaid-example';
}
+ if (c.lang !== 'mermaid-example') {
+ return [c];
+ }
return [c, Object.assign({}, c, { lang: 'mermaid' })];
});