From 1d9c2aab8db7b18f48815e90f2c0806f621542f7 Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Wed, 15 Jan 2025 13:45:04 +0100 Subject: [PATCH] #6186 Fix for flowchart new syntax with link --- .../integration/rendering/flowchart-v2.spec.js | 9 +++++++++ .../flowchart/parser/flow-node-data.spec.js | 15 +++++++++++++++ .../src/diagrams/flowchart/parser/flow.jison | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js index bb37914cb..4322500df 100644 --- a/cypress/integration/rendering/flowchart-v2.spec.js +++ b/cypress/integration/rendering/flowchart-v2.spec.js @@ -1103,5 +1103,14 @@ end {} ); }); + it('should be possible to use @ syntax to add labels with trail spaces and edge/link', () => { + imgSnapshotTest( + `flowchart TD + A["A"] --> B["for B"] & C@{ label: "for c"} & E@{label : "for E"} + D@{label: "for D"} + `, + {} + ); + }); }); }); diff --git a/packages/mermaid/src/diagrams/flowchart/parser/flow-node-data.spec.js b/packages/mermaid/src/diagrams/flowchart/parser/flow-node-data.spec.js index df3782a6b..879572209 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/flow-node-data.spec.js +++ b/packages/mermaid/src/diagrams/flowchart/parser/flow-node-data.spec.js @@ -302,6 +302,21 @@ describe('when parsing directions', function () { expect(data4Layout.nodes[1].label).toEqual('labe for n4'); expect(data4Layout.nodes[2].label).toEqual('labe for n5'); }); + + it('should be possible to use @ syntax to add labels on multi nodes with edge/link', function () { + const res = flow.parser.parse(`flowchart TD + A["A"] --> B["for B"] & C@{ label: "for c"} & E@{label : "for E"} + D@{label: "for D"} + `); + + const data4Layout = flow.parser.yy.getData(); + expect(data4Layout.nodes.length).toBe(5); + expect(data4Layout.nodes[0].label).toEqual('A'); + expect(data4Layout.nodes[1].label).toEqual('for B'); + expect(data4Layout.nodes[2].label).toEqual('for c'); + expect(data4Layout.nodes[3].label).toEqual('for E'); + expect(data4Layout.nodes[4].label).toEqual('for D'); + }); it.skip(' should be possible to use @ syntax to add labels with trail spaces', function () { const res = flow.parser.parse( `flowchart TB diff --git a/packages/mermaid/src/diagrams/flowchart/parser/flow.jison b/packages/mermaid/src/diagrams/flowchart/parser/flow.jison index ade90382b..c3ac2b04b 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/flow.jison +++ b/packages/mermaid/src/diagrams/flowchart/parser/flow.jison @@ -399,7 +399,7 @@ shapeData: ; vertexStatement: vertexStatement link node shapeData - { /* console.warn('vs shapeData',$vertexStatement.stmt,$node, $shapeData);*/ yy.addVertex($node[0],undefined,undefined,undefined, undefined,undefined, undefined,$shapeData); yy.addLink($vertexStatement.stmt,$node,$link); $$ = { stmt: $node, nodes: $node.concat($vertexStatement.nodes) } } + { /* console.warn('vs shapeData',$vertexStatement.stmt,$node, $shapeData);*/ yy.addVertex($node[$node.length-1],undefined,undefined,undefined, undefined,undefined, undefined,$shapeData); yy.addLink($vertexStatement.stmt,$node,$link); $$ = { stmt: $node, nodes: $node.concat($vertexStatement.nodes) } } | vertexStatement link node { /*console.warn('vs',$vertexStatement.stmt,$node);*/ yy.addLink($vertexStatement.stmt,$node,$link); $$ = { stmt: $node, nodes: $node.concat($vertexStatement.nodes) } } | vertexStatement link node spaceList