From f8f7d94d5ad0295e11a0065d8197c27cffffe546 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 28 Feb 2023 19:34:54 +0530 Subject: [PATCH] fix: Class with members and styles --- .../src/diagrams/class/classDiagram.spec.ts | 33 +++++++++++++++++++ .../diagrams/class/parser/classDiagram.jison | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts index 5ff1931868..24fbc41ea3 100644 --- a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts +++ b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts @@ -190,6 +190,37 @@ describe('class diagram, ', function () { parser.parse(str); }); + it('should handle cssClass shorthand with members', () => { + parser.parse(`classDiagram-v2 + class Class10:::exClass2 { + int[] id + List~int~ ids + test(List~int~ ids) List~bool~ + testArray() bool[] + }`); + + expect(classDb.getClass('Class10')).toMatchInlineSnapshot(` + { + "annotations": [], + "cssClasses": [ + "exClass2", + ], + "domId": "classId-Class10-27", + "id": "Class10", + "label": "Class10", + "members": [ + "int[] id", + "List~int~ ids", + ], + "methods": [ + "test(List~int~ ids) List~bool~", + "testArray() bool[]", + ], + "type": "", + } + `); + }); + it('should handle method statements', function () { const str = 'classDiagram\n' + @@ -1023,6 +1054,7 @@ C1 --> C2 const c1 = classDb.getClass('C1'); expect(c1.label).toBe('Class 1 with text label'); expect(c1.cssClasses.length).toBe(1); + expect(c1.members[0]).toBe('+member1'); expect(c1.cssClasses[0]).toBe('styleClass'); }); @@ -1038,6 +1070,7 @@ cssClass "C1" styleClass const c1 = classDb.getClass('C1'); expect(c1.label).toBe('Class 1 with text label'); expect(c1.cssClasses.length).toBe(1); + expect(c1.members[0]).toBe('+member1'); expect(c1.cssClasses[0]).toBe('styleClass'); }); diff --git a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison index e98b0253b2..0c9ad2f2a6 100644 --- a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison +++ b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison @@ -283,7 +283,7 @@ classStatement : classIdentifier | classIdentifier STYLE_SEPARATOR alphaNumToken {yy.setCssClass($1, $3);} | classIdentifier STRUCT_START members STRUCT_STOP {yy.addMembers($1,$3);} - | classIdentifier STYLE_SEPARATOR alphaNumToken STRUCT_START members STRUCT_STOP {yy.setCssClass($1, $3);yy.addMembers($1,$3);} + | classIdentifier STYLE_SEPARATOR alphaNumToken STRUCT_START members STRUCT_STOP {yy.setCssClass($1, $3);yy.addMembers($1,$5);} ; classIdentifier