mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-14 06:43:25 +08:00
Allow end
as a substring of vertex id
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.
This commit is contained in:
parent
ed65e6df3b
commit
b87764ed94
10
dist/mermaid.js
vendored
10
dist/mermaid.js
vendored
@ -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)+'"> ';
|
||||
});
|
||||
|
||||
} else {
|
||||
verticeText = verticeText.replace(/<br>/g, "\n");
|
||||
labelTypeStr = 'text';
|
||||
@ -38091,10 +38097,6 @@ exports.encodeEntities = function(text){
|
||||
|
||||
});
|
||||
|
||||
//txt = txt.replace(/fa:fa[\w\-]+/g,function(s,t,u){
|
||||
// return 'fa:¢';
|
||||
//});
|
||||
|
||||
return txt;
|
||||
};
|
||||
|
||||
|
2
dist/mermaid.min.js
vendored
2
dist/mermaid.min.js
vendored
File diff suppressed because one or more lines are too long
10
dist/mermaid.slim.js
vendored
10
dist/mermaid.slim.js
vendored
@ -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)+'"> ';
|
||||
});
|
||||
|
||||
} else {
|
||||
verticeText = verticeText.replace(/<br>/g, "\n");
|
||||
labelTypeStr = 'text';
|
||||
@ -28875,10 +28881,6 @@ exports.encodeEntities = function(text){
|
||||
|
||||
});
|
||||
|
||||
//txt = txt.replace(/fa:fa[\w\-]+/g,function(s,t,u){
|
||||
// return 'fa:¢';
|
||||
//});
|
||||
|
||||
return txt;
|
||||
};
|
||||
|
||||
|
2
dist/mermaid.slim.min.js
vendored
2
dist/mermaid.slim.min.js
vendored
File diff suppressed because one or more lines are too long
10
dist/mermaidAPI.js
vendored
10
dist/mermaidAPI.js
vendored
@ -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)+'"> ';
|
||||
});
|
||||
|
||||
} else {
|
||||
verticeText = verticeText.replace(/<br>/g, "\n");
|
||||
labelTypeStr = 'text';
|
||||
@ -37376,10 +37382,6 @@ exports.encodeEntities = function(text){
|
||||
|
||||
});
|
||||
|
||||
//txt = txt.replace(/fa:fa[\w\-]+/g,function(s,t,u){
|
||||
// return 'fa:¢';
|
||||
//});
|
||||
|
||||
return txt;
|
||||
};
|
||||
|
||||
|
12
dist/mermaidAPI.slim.js
vendored
12
dist/mermaidAPI.slim.js
vendored
File diff suppressed because one or more lines are too long
2
dist/mermaidAPI.slim.min.js
vendored
2
dist/mermaidAPI.slim.min.js
vendored
File diff suppressed because one or more lines are too long
@ -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';
|
||||
|
File diff suppressed because one or more lines are too long
@ -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;');
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user