From e29d2b29a9e5c2197abf10bcb1ce28620155bad0 Mon Sep 17 00:00:00 2001 From: Justin Greywolf Date: Mon, 3 Jul 2023 09:40:25 -0700 Subject: [PATCH] apply suggesitons --- demos/classchart.html | 2 +- .../src/diagrams/class/classTypes.spec.ts | 53 +++++++++++++++++++ .../mermaid/src/diagrams/common/common.ts | 2 +- 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/demos/classchart.html b/demos/classchart.html index 736c2e001..98162697e 100644 --- a/demos/classchart.html +++ b/demos/classchart.html @@ -43,7 +43,7 @@ } class Zebra{ +bool is_wild - +run() + +run(List~T~, List~OT~) } diff --git a/packages/mermaid/src/diagrams/class/classTypes.spec.ts b/packages/mermaid/src/diagrams/class/classTypes.spec.ts index 7ae6ae831..4a3493e0a 100644 --- a/packages/mermaid/src/diagrams/class/classTypes.spec.ts +++ b/packages/mermaid/src/diagrams/class/classTypes.spec.ts @@ -377,6 +377,59 @@ describe('given text representing a method, ', function () { }); }); + describe('when method parameter contains two generic', function () { + it('should parse correctly', function () { + const str = `getTimes(List~T~, List~OT~)`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('getTimes(List, List'); + }); + + it('should handle public visibility', function () { + const str = `+getTimes(List~T~, List~OT~)`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('+getTimes(List, List'); + }); + + it('should handle private visibility', function () { + const str = `-getTimes(List~T~, List~OT~)`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('-getTimes(List, List'); + }); + + it('should handle protected visibility', function () { + const str = `#getTimes(List~T~, List~OT~)`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('#getTimes(List, List'); + }); + + it('should handle internal visibility', function () { + const str = `~getTimes(List~T~, List~OT~)`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('~getTimes(List, List'); + }); + + it('should return correct css for static classifier', function () { + const str = `getTimes(List~T~, List~OT~)$`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('getTimes(List, List'); + expect(classMember.getDisplayDetails().cssStyle).toBe(staticCssStyle); + }); + + it('should return correct css for abstract classifier', function () { + const str = `getTimes(List~T~, List~OT~)*`; + + const classMember = new ClassMember(str, 'method'); + expect(classMember.getDisplayDetails().displayText).toBe('getTimes(List, List)'); + expect(classMember.getDisplayDetails().cssStyle).toBe(abstractCssStyle); + }); + }); + describe('when method parameter is a nested generic', function () { it('should parse correctly', function () { const str = `getTimetableList(List~List~T~~)`; diff --git a/packages/mermaid/src/diagrams/common/common.ts b/packages/mermaid/src/diagrams/common/common.ts index cf6f8cb32..d2792b3f4 100644 --- a/packages/mermaid/src/diagrams/common/common.ts +++ b/packages/mermaid/src/diagrams/common/common.ts @@ -189,7 +189,7 @@ export const parseGenericTypes = function (text: string): string { do { cleanedText = newCleanedText; - newCleanedText = cleanedText.replace(/~([^:;]+)~/, '<$1>'); + newCleanedText = cleanedText.replace(/~([^\s:;]+)~/, '<$1>'); } while (newCleanedText != cleanedText); return parseGenericTypes(newCleanedText);