From c99bce6bab4c7ce0b81b66d44f44853ce4aeb1c3 Mon Sep 17 00:00:00 2001 From: Krishna Upadhyay <24423580+kriss-u@users.noreply.github.com> Date: Mon, 4 Aug 2025 16:56:55 -0500 Subject: [PATCH] fix: add classLiteral to the language for class diagram namespace --- .changeset/rare-women-fly.md | 5 +++++ cypress/integration/rendering/classDiagram.spec.js | 13 +++++++++++++ .../mermaid/src/diagrams/class/parser/class.spec.js | 8 ++++++++ .../src/diagrams/class/parser/classDiagram.jison | 1 + 4 files changed, 27 insertions(+) create mode 100644 .changeset/rare-women-fly.md diff --git a/.changeset/rare-women-fly.md b/.changeset/rare-women-fly.md new file mode 100644 index 000000000..46d08dd10 --- /dev/null +++ b/.changeset/rare-women-fly.md @@ -0,0 +1,5 @@ +--- +'mermaid': patch +--- + +fix: Add escaped class literal name on namespace diff --git a/cypress/integration/rendering/classDiagram.spec.js b/cypress/integration/rendering/classDiagram.spec.js index f66a2d6f3..bd2a96b34 100644 --- a/cypress/integration/rendering/classDiagram.spec.js +++ b/cypress/integration/rendering/classDiagram.spec.js @@ -512,4 +512,17 @@ describe('Class diagram', () => { ); }); }); + + it('should handle backticks for namespace and class names', () => { + imgSnapshotTest( + ` + classDiagram + namespace \`A::B\` { + class \`IPC::Sender\` + } + RenderProcessHost --|> \`IPC::Sender\` + `, + {} + ); + }); }); diff --git a/packages/mermaid/src/diagrams/class/parser/class.spec.js b/packages/mermaid/src/diagrams/class/parser/class.spec.js index fe0077a29..7d4922561 100644 --- a/packages/mermaid/src/diagrams/class/parser/class.spec.js +++ b/packages/mermaid/src/diagrams/class/parser/class.spec.js @@ -15,4 +15,12 @@ describe('class diagram', function () { expect(() => parser.parse(`classDiagram\nnamespace ${prop} {\n\tclass A\n}`)).not.toThrow(); }); }); + + describe('backtick escaping', function () { + it('should handle backtick-quoted namespace names', function () { + expect(() => + parser.parse(`classDiagram\nnamespace \`A::B\` {\n\tclass \`IPC::Sender\`\n}`) + ).not.toThrow(); + }); + }); }); diff --git a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison index 83d9bd48e..0f971c8b9 100644 --- a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison +++ b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison @@ -242,6 +242,7 @@ classLabel namespaceName : alphaNumToken { $$=$1; } + | classLiteralName { $$=$1; } | alphaNumToken DOT namespaceName { $$=$1+'.'+$3; } | alphaNumToken namespaceName { $$=$1+$2; } ;