From b120c34177726ec6fe97e87bac6a0c7d7c6f2631 Mon Sep 17 00:00:00 2001 From: Carlos Blanco Date: Thu, 23 Jul 2020 20:15:52 -0600 Subject: [PATCH] Support dashes in actor names in sequence diagrams --- .../sequence/parser/sequenceDiagram.jison | 4 ++-- src/diagrams/sequence/sequenceDiagram.spec.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/diagrams/sequence/parser/sequenceDiagram.jison b/src/diagrams/sequence/parser/sequenceDiagram.jison index 677103db3..f8928d671 100644 --- a/src/diagrams/sequence/parser/sequenceDiagram.jison +++ b/src/diagrams/sequence/parser/sequenceDiagram.jison @@ -58,10 +58,10 @@ "deactivate" { this.begin('ID'); return 'deactivate'; } "title" return 'title'; "sequenceDiagram" return 'SD'; -"autonumber" return 'autonumber'; +"autonumber" return 'autonumber'; "," return ','; ";" return 'NL'; -[^\+\->:\n,;]+ { yytext = yytext.trim(); return 'ACTOR'; } +[^\+\->:\n,;]+((?!(\-x|\-\-x))[\-]*[^\+\->:\n,;]+)* { yytext = yytext.trim(); return 'ACTOR'; } "->>" return 'SOLID_ARROW'; "-->>" return 'DOTTED_ARROW'; "->" return 'SOLID_OPEN_ARROW'; diff --git a/src/diagrams/sequence/sequenceDiagram.spec.js b/src/diagrams/sequence/sequenceDiagram.spec.js index a80c921d3..349f3e469 100644 --- a/src/diagrams/sequence/sequenceDiagram.spec.js +++ b/src/diagrams/sequence/sequenceDiagram.spec.js @@ -93,6 +93,23 @@ Bob-->Alice: I am good thanks!`; expect(messages[0].from).toBe('Alice'); expect(messages[1].from).toBe('Bob'); }); + it('it should handle dashes in actor names', function() { + const str = ` +sequenceDiagram +Alice-in-Wonderland->Bob:Hello Bob, how are - you? +Bob-->Alice-in-Wonderland:I am good thanks!`; + + mermaidAPI.parse(str); + const actors = parser.yy.getActors(); + expect(actors["Alice-in-Wonderland"].description).toBe('Alice-in-Wonderland'); + actors.Bob.description = 'Bob'; + + const messages = parser.yy.getMessages(); + + expect(messages.length).toBe(2); + expect(messages[0].from).toBe('Alice-in-Wonderland'); + expect(messages[1].from).toBe('Bob'); + }); it('it should alias participants', function() { const str = ` sequenceDiagram