diff --git a/src/diagrams/flowchart/parser/flow.jison b/src/diagrams/flowchart/parser/flow.jison index ff02bb4e1..27ac0c9de 100644 --- a/src/diagrams/flowchart/parser/flow.jison +++ b/src/diagrams/flowchart/parser/flow.jison @@ -552,7 +552,7 @@ alphaNumStatement {$$='-';} ; -alphaNumToken : PUNCTUATION | UNICODE_TEXT | NUM| ALPHA | COLON | COMMA | PLUS | EQUALS | MULT | DOT | BRKT ; +alphaNumToken : PUNCTUATION | UNICODE_TEXT | NUM| ALPHA | COLON | COMMA | PLUS | EQUALS | MULT | DOT | BRKT| UNDERSCORE ; idStringToken : ALPHA|UNDERSCORE |UNICODE_TEXT | NUM| COLON | COMMA | PLUS | MINUS | DOWN |EQUALS | MULT | BRKT | DOT | PUNCTUATION; diff --git a/src/diagrams/flowchart/parser/flow.spec.js b/src/diagrams/flowchart/parser/flow.spec.js index de2f71f8e..217a2a4c8 100644 --- a/src/diagrams/flowchart/parser/flow.spec.js +++ b/src/diagrams/flowchart/parser/flow.spec.js @@ -1158,6 +1158,15 @@ describe('when parsing ', function () { expect(vert['A'].type).toBe('square') expect(vert['A'].text).toBe('chimpansen hoppar') }) + it('should handle text including _ in vertices', function () { + const res = flow.parser.parse('graph TD;A[chimpansen_hoppar] --> C;') + + const vert = flow.parser.yy.getVertices() + const edges = flow.parser.yy.getEdges() + + expect(vert['A'].type).toBe('square') + expect(vert['A'].text).toBe('chimpansen_hoppar') + }) it('should handle quoted text in vertices ', function () { const res = flow.parser.parse('graph TD;A["chimpansen hoppar ()[]"] --> C;') @@ -1613,6 +1622,22 @@ describe('when parsing ', function () { expect(classes['exClass'].styles[0]).toBe('background:#bbb') expect(classes['exClass'].styles[1]).toBe('border:1px solid red') }) + it('should be possible to apply a class to a vertex with an id containing _', function () { + let statement = '' + + statement = statement + 'graph TD;' + '\n' + statement = statement + 'classDef exClass background:#bbb,border:1px solid red;' + '\n' + statement = statement + 'a_a-->b_b;' + '\n' + statement = statement + 'class a_a exClass;' + + const res = flow.parser.parse(statement) + + const classes = flow.parser.yy.getClasses() + + expect(classes['exClass'].styles.length).toBe(2) + expect(classes['exClass'].styles[0]).toBe('background:#bbb') + expect(classes['exClass'].styles[1]).toBe('border:1px solid red') + }) it('should be possible to apply a class to a vertex directly', function () { let statement = ''