Skip to content

Commit

Permalink
Allow end as a substring of vertex id
Browse files Browse the repository at this point in the history
Jison adds \b (word boundary) to literal string patterns by default.
It does so, because it doesn't follow traditional match-longest
approach, but does match-first instead. Without including word
boundaries, it'd be hard to distinguish between a keyword and
identifier.

The pattern for `end` keyword is not a simple string literal - it
swallows trailing whitespace, so we have to add \b manually.

This partially fixes #184 - at least now `end` behaves the same as other
keywords: it can be used as a prefix and infix, but not as a suffix.

To solve this issue completely, ALPHA pattern would have to match
multiple letters, which is a much bigger change.
  • Loading branch information
spect88 committed Oct 14, 2015
1 parent ed65e6d commit b87764e
Show file tree
Hide file tree
Showing 10 changed files with 42 additions and 22 deletions.
10 changes: 6 additions & 4 deletions dist/mermaid.js
Original file line number Diff line number Diff line change
Expand Up @@ -32062,9 +32062,15 @@ exports.addVertices = function (vert, g) {
verticeText = vertice.text;
}



var labelTypeStr = '';
if(conf.htmlLabels) {
labelTypeStr = 'html';
verticeText = verticeText.replace(/fa:fa[\w\-]+/g,function(s,t,u){
return '<i class="fa '+ s.substring(3)+'">&nbsp';
});

} else {
verticeText = verticeText.replace(/<br>/g, "\n");
labelTypeStr = 'text';
Expand Down Expand Up @@ -38091,10 +38097,6 @@ exports.encodeEntities = function(text){

});

//txt = txt.replace(/fa:fa[\w\-]+/g,function(s,t,u){
// return 'fa:¢';
//});

return txt;
};

Expand Down
2 changes: 1 addition & 1 deletion dist/mermaid.min.js

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions dist/mermaid.slim.js
Original file line number Diff line number Diff line change
Expand Up @@ -22846,9 +22846,15 @@ exports.addVertices = function (vert, g) {
verticeText = vertice.text;
}



var labelTypeStr = '';
if(conf.htmlLabels) {
labelTypeStr = 'html';
verticeText = verticeText.replace(/fa:fa[\w\-]+/g,function(s,t,u){
return '<i class="fa '+ s.substring(3)+'">&nbsp';
});

} else {
verticeText = verticeText.replace(/<br>/g, "\n");
labelTypeStr = 'text';
Expand Down Expand Up @@ -28875,10 +28881,6 @@ exports.encodeEntities = function(text){

});

//txt = txt.replace(/fa:fa[\w\-]+/g,function(s,t,u){
// return 'fa:¢';
//});

return txt;
};

Expand Down
2 changes: 1 addition & 1 deletion dist/mermaid.slim.min.js

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions dist/mermaidAPI.js
Original file line number Diff line number Diff line change
Expand Up @@ -31729,9 +31729,15 @@ exports.addVertices = function (vert, g) {
verticeText = vertice.text;
}



var labelTypeStr = '';
if(conf.htmlLabels) {
labelTypeStr = 'html';
verticeText = verticeText.replace(/fa:fa[\w\-]+/g,function(s,t,u){
return '<i class="fa '+ s.substring(3)+'">&nbsp';
});

} else {
verticeText = verticeText.replace(/<br>/g, "\n");
labelTypeStr = 'text';
Expand Down Expand Up @@ -37376,10 +37382,6 @@ exports.encodeEntities = function(text){

});

//txt = txt.replace(/fa:fa[\w\-]+/g,function(s,t,u){
// return 'fa:¢';
//});

return txt;
};

Expand Down
12 changes: 7 additions & 5 deletions dist/mermaidAPI.slim.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/mermaidAPI.slim.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/diagrams/flowchart/parser/flow.jison
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"click" return 'CLICK';
"graph" return 'GRAPH';
"subgraph" return 'subgraph';
"end"\s* return 'end';
"end"\b\s* return 'end';
"LR" return 'DIR';
"RL" return 'DIR';
"TB" return 'DIR';
Expand Down
2 changes: 1 addition & 1 deletion src/diagrams/flowchart/parser/flow.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions src/diagrams/flowchart/parser/flow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,18 @@ describe('when parsing ',function(){
expect(edges[0].text).toBe('');
});

it('should handle node names with "end" substring',function(){
var res = flow.parser.parse('graph TD\nendpoint --> sender');

var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();

expect(vert['endpoint'].id).toBe('endpoint');
expect(vert['sender'].id).toBe('sender');
expect(edges[0].start).toBe('endpoint');
expect(edges[0].end).toBe('sender');
});

it('should handle open ended edges',function(){
var res = flow.parser.parse('graph TD;A---B;');

Expand Down

0 comments on commit b87764e

Please sign in to comment.