From cf5b4b89a8db9c1440b7fec8d02328d4eb8740a7 Mon Sep 17 00:00:00 2001 From: Hashan Chandika Date: Sun, 27 Jul 2025 13:51:26 +0530 Subject: [PATCH 1/5] make regex match less greedy --- packages/mermaid/src/diagrams/flowchart/elk/detector.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts index 6688ffd8c..f0b2ac8ff 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts +++ b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts @@ -11,7 +11,7 @@ const detector: DiagramDetector = (txt, config = {}): boolean => { // If diagram explicitly states flowchart-elk /^\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk - (/^\s*flowchart|graph/.test(txt) && config?.flowchart?.defaultRenderer === 'elk') + (/^\s*(flowchart|graph)/.test(txt) && config?.flowchart?.defaultRenderer === 'elk') ) { config.layout = 'elk'; return true; From ac04172cf8a5145af25713cb558b0d7235bda927 Mon Sep 17 00:00:00 2001 From: Hashan Chandika Date: Sun, 27 Jul 2025 14:53:28 +0530 Subject: [PATCH 2/5] add tests for #6795 --- .../integration/rendering/classDiagram.spec.js | 17 +++++++++++++++++ cypress/integration/rendering/erDiagram.spec.js | 15 +++++++++++++++ cypress/integration/rendering/mindmap.spec.ts | 17 +++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/cypress/integration/rendering/classDiagram.spec.js b/cypress/integration/rendering/classDiagram.spec.js index e7d201b5d..f66a2d6f3 100644 --- a/cypress/integration/rendering/classDiagram.spec.js +++ b/cypress/integration/rendering/classDiagram.spec.js @@ -495,4 +495,21 @@ describe('Class diagram', () => { cy.get('a').should('have.attr', 'target', '_blank').should('have.attr', 'rel', 'noopener'); }); }); + + describe('Include char sequence "graph" in text (#6795)', () => { + it('has a label with char sequence "graph"', () => { + imgSnapshotTest( + ` + classDiagram + class Person { + +String name + -Int id + #double age + +Text demographicProfile + } + `, + { flowchart: { defaultRenderer: 'elk' } } + ); + }); + }); }); diff --git a/cypress/integration/rendering/erDiagram.spec.js b/cypress/integration/rendering/erDiagram.spec.js index cbfec8218..8f6193f96 100644 --- a/cypress/integration/rendering/erDiagram.spec.js +++ b/cypress/integration/rendering/erDiagram.spec.js @@ -354,4 +354,19 @@ ORDER ||--|{ LINE-ITEM : contains { logLevel: 1 } ); }); + + describe('Include char sequence "graph" in text (#6795)', () => { + it('has a label with char sequence "graph"', () => { + imgSnapshotTest( + ` + erDiagram + p[Photograph] { + varchar(12) jobId + date dateCreated + } + `, + { flowchart: { defaultRenderer: 'elk' } } + ); + }); + }); }); diff --git a/cypress/integration/rendering/mindmap.spec.ts b/cypress/integration/rendering/mindmap.spec.ts index 731f861ee..d76e58c56 100644 --- a/cypress/integration/rendering/mindmap.spec.ts +++ b/cypress/integration/rendering/mindmap.spec.ts @@ -246,5 +246,22 @@ Word!\`] ); }); }); + describe('Include char sequence "graph" in text (#6795)', () => { + it('has a label with char sequence "graph"', () => { + imgSnapshotTest( + ` + mindmap + root + Photograph + Waterfall + Landscape + Geography + Mountains + Rocks + `, + { flowchart: { defaultRenderer: 'elk' } } + ); + }); + }); /* The end */ }); From 5e8aa2dccf6d25ce4f0fe7726ab2a53011a421b2 Mon Sep 17 00:00:00 2001 From: Hashan Chandika Date: Sun, 27 Jul 2025 15:21:46 +0530 Subject: [PATCH 3/5] add unit tests for coverage #6795 --- .../diagram-api/diagram-orchestration.spec.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.spec.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.spec.ts index 3ec2d861f..f4f7c58bc 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.spec.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.spec.ts @@ -78,5 +78,41 @@ describe('diagram-orchestration', () => { flowchart: 1 "pie" pie: 2 "pie"`) ).toBe('pie'); }); + + it('should detect proper diagram when defaultRenderer is elk for flowchart', () => { + expect( + detectType('mindmap\n root\n Photograph\n Waterfall', { + flowchart: { defaultRenderer: 'elk' }, + }) + ).toBe('mindmap'); + expect( + detectType( + ` + classDiagram + class Person { + +String name + -Int id + #double age + +Text demographicProfile + } + `, + { flowchart: { defaultRenderer: 'elk' } } + ) + ).toBe('class'); + expect( + detectType( + ` + erDiagram + p[Photograph] { + varchar(12) jobId + date dateCreated + } + `, + { + flowchart: { defaultRenderer: 'elk' }, + } + ) + ).toBe('er'); + }); }); }); From c36cd05c45ac3090181152b4dae41f8d7b569bd6 Mon Sep 17 00:00:00 2001 From: shubham-mermaid Date: Tue, 29 Jul 2025 13:10:10 +0530 Subject: [PATCH 4/5] Create light-flowers-judge.md --- .changeset/light-flowers-judge.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/light-flowers-judge.md diff --git a/.changeset/light-flowers-judge.md b/.changeset/light-flowers-judge.md new file mode 100644 index 000000000..0fd27ef1c --- /dev/null +++ b/.changeset/light-flowers-judge.md @@ -0,0 +1,5 @@ +--- +"mermaid": patch +--- + +fix: Make flowchart elk detector regex match less greedy From 1be16200002f72592961c95d1773e7c2e4178838 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:45:04 +0000 Subject: [PATCH 5/5] [autofix.ci] apply automated fixes --- .changeset/light-flowers-judge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/light-flowers-judge.md b/.changeset/light-flowers-judge.md index 0fd27ef1c..6378a9b0a 100644 --- a/.changeset/light-flowers-judge.md +++ b/.changeset/light-flowers-judge.md @@ -1,5 +1,5 @@ --- -"mermaid": patch +'mermaid': patch --- fix: Make flowchart elk detector regex match less greedy