diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.js b/packages/mermaid/src/diagrams/flowchart/flowDb.js index 8d17a30c0..33ae68a86 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.js +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.js @@ -150,6 +150,7 @@ export const addSingleLink = function (_start, _end, type) { if (linkTextObj !== undefined) { edge.text = sanitizeText(linkTextObj.text.trim()); + edge.text = edge.text.replaceAll('\\"', '"'); // strip quotes if string starts and ends with a quote if (edge.text[0] === '"' && edge.text[edge.text.length - 1] === '"') { edge.text = edge.text.substring(1, edge.text.length - 1); diff --git a/packages/mermaid/src/diagrams/flowchart/parser/flow-md-string.spec.js b/packages/mermaid/src/diagrams/flowchart/parser/flow-md-string.spec.js index 9560a33df..13cb262e3 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/flow-md-string.spec.js +++ b/packages/mermaid/src/diagrams/flowchart/parser/flow-md-string.spec.js @@ -35,7 +35,7 @@ A["\`The cat in **the** hat\`"]-- "\`The *bat* in the chat\`" -->B["The dog in t expect(edges[1].end).toBe('C'); expect(edges[1].type).toBe('arrow_point'); expect(edges[1].text).toBe('The rat in the mat'); - expect(edges[1].labelType).toBe('text'); + expect(edges[1].labelType).toBe('string'); }); it('mardown formatting in subgraphs', function () { const res = flow.parser.parse(`flowchart LR diff --git a/packages/mermaid/src/diagrams/flowchart/parser/flow.jison b/packages/mermaid/src/diagrams/flowchart/parser/flow.jison index 6bc434c3c..e8f0775b8 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/flow.jison +++ b/packages/mermaid/src/diagrams/flowchart/parser/flow.jison @@ -462,6 +462,8 @@ edgeText: edgeTextToken {$$={text:$edgeTextToken, type:'text'};} | edgeText edgeTextToken {$$={text:$edgeText.text+''+$edgeTextToken, type:$edgeText.type};} + |STR + {$$={text: $STR, type: 'string'};} | MD_STR {$$={text:$MD_STR, type:'markdown'};} ; @@ -573,7 +575,7 @@ textToken : TEXT | TAGSTART | TAGEND | UNICODE_TEXT; textNoTagsToken: NUM | NODE_STRING | SPACE | MINUS | keywords | START_LINK ; -edgeTextToken : STR | EDGE_TEXT | UNICODE_TEXT ; +edgeTextToken : EDGE_TEXT | UNICODE_TEXT ; alphaNumToken : NUM | UNICODE_TEXT | NODE_STRING | DIR | DOWN | MINUS | COMMA;