Styles in place for boxes

This commit is contained in:
knsv
2014-11-11 08:12:03 +01:00
parent c23a185b98
commit d158a13566
9 changed files with 163 additions and 127 deletions

View File

@@ -23,6 +23,11 @@
], ],
"devDependencies": { "devDependencies": {
"jasmine": "~2.0.4", "jasmine": "~2.0.4",
"requirejs": "~2.1.15" "requirejs": "~2.1.15",
"raphael": "~2.1.2",
"snap": "*",
"Snap.svg": "~0.3.0",
"dagre": "~0.6.4",
"dagre-d3": "~0.3.2"
} }
} }

View File

@@ -2,14 +2,13 @@ var gulp = require('gulp');
var jison = require('gulp-jison'); var jison = require('gulp-jison');
var shell = require('gulp-shell') var shell = require('gulp-shell')
gulp.task('jison', function() { gulp.task('jison2', function() {
return gulp.src('./src/*.jison') return gulp.src('./src/*.jison')
.pipe(jison({ moduleType: 'amd' })) .pipe(jison({ moduleType: 'amd' }))
.pipe(gulp.dest('./src/')); .pipe(gulp.dest('./src/'));
}); });
gulp.task('shorthand', shell.task([ gulp.task('jison', shell.task([
'echo hello', 'jison src/parser/mermaid.jison -o src/parser/mermaid.js',
'echo world', 'source scripts/compileJison.sh'
'jison src/parser/mermaid.jison -o src/parser/mermaid.js'
])) ]))

View File

@@ -40,7 +40,7 @@
a[Lasa bok]-->b; a[Lasa bok]-->b;
b{Fundera}-->c(Vidar)|Klocka; b{Fundera}-->c(Vidar)|Klocka;
b-->d(Bjarke)|Lego; b-->d(Bjarke)|Lego;
style a background:#aaa; style a fill:#6ff,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5;
</div> </div>
</body> </body>
</html> </html>

View File

@@ -2,28 +2,46 @@
* Created by knut on 14-11-06. * Created by knut on 14-11-06.
*/ */
// Now we're ready to require JointJS and write our application code. // Now we're ready to require JointJS and write our application code.
define(['parser/graph','parser/mermaid'],function(graph,parser){ define('mermaid',['parser/graph','parser/mermaid'],function(graph,parser){
var addVertices = function(vert,g){ var addVertices = function(vert,g){
var keys = Object.keys(vert); var keys = Object.keys(vert);
keys.forEach(function(id){ keys.forEach(function(id){
var vertice = vert[id]; var vertice = vert[id];
var verticeText; var verticeText;
//console.log(vertice);
console.log(vertice.styles.length);
var i;
var style='';
for(i=0;i<vertice.styles.length;i++){
if(typeof vertice.styles[i] !== 'undefined'){
style=style+vertice.styles[i]+';';
}
}
if(vertice.text === undefined){ if(vertice.text === undefined){
verticeText = vertice.id; verticeText = vertice.id;
} }
else{ else{
verticeText = vertice.text; verticeText = vertice.text;
} }
if(style === ''){
style = graph.defaultStyle();
}
console.log('g.setNode("'+vertice.id+'", { label: "'+verticeText+'" });'); console.log('g.setNode("'+vertice.id+'", { label: "'+verticeText+'" });');
if(vertice.type==='round'){ if(vertice.type==='round'){
g.setNode(vertice.id, { label: verticeText,rx:5,ry:5 }); g.setNode(vertice.id, { label: verticeText,rx:5,ry:5,style:style });
}else{ }else{
if(vertice.type==='diamond'){ if(vertice.type==='diamond'){
g.setNode(vertice.id, {shape: "house", label: verticeText,rx:0,ry:0,style: "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;" }); //g.setNode(vertice.id, {shape: "house", label: verticeText,rx:0,ry:0,style: "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;" });
g.setNode(vertice.id, {shape: "house", label: verticeText,rx:0,ry:0,style: style });
}else{ }else{
g.setNode(vertice.id, { label: verticeText,rx:0,ry:0 }); g.setNode(vertice.id, { label: verticeText,rx:0,ry:0,style:style });
} }
} }
}); });

View File

@@ -18,7 +18,7 @@ define('parser/graph',function() {
} }
if(typeof style !== 'undefined'){ if(typeof style !== 'undefined'){
if(style !== null){ if(style !== null){
//console.log('Adding style: '+style[0]); console.log('Adding style: '+style);
style.forEach(function(s){ style.forEach(function(s){
vertices[id].styles.push(s); vertices[id].styles.push(s);
}); });
@@ -42,6 +42,9 @@ define('parser/graph',function() {
clear:function(){ clear:function(){
vertices = {}; vertices = {};
edges = []; edges = [];
},
defaultStyle:function(){
return "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;";
} }
}; };

View File

@@ -5,26 +5,18 @@
%% %%
"style" return 'STYLE'; "style" return 'STYLE';
"background" return 'BKG';
"red" return 'COLOR';
"blue" return 'COLOR';
"black" return 'COLOR';
\#[a-f0-9]+ return 'HEX'; \#[a-f0-9]+ return 'HEX';
[0-9]+ return 'NUM'; [0-9]+ return 'NUM';
"border" return 'BORDER';
"dotted" return 'BORDER_STYLE';
"dashed" return 'BORDER_STYLE';
"solid" return 'BORDER_STYLE';
"px" return 'UNIT'; "px" return 'UNIT';
"pt" return 'UNIT'; "pt" return 'UNIT';
"dot" return 'UNIT'; "dot" return 'UNIT';
":" return 'COLON'; ":" return 'COLON';
\- return 'MINUS';
";" return ';'; ";" return ';';
"," return 'COMMA'; "," return 'COMMA';
\-\-[x] return 'ARROW_CROSS'; [x] return 'ARROW_CROSS';
\-\-">" return 'ARROW_POINT'; ">" return 'ARROW_POINT';
\-\-[o] return 'ARROW_CIRCLE'; [o] return 'ARROW_CIRCLE';
\-\-\- return 'ARROW_OPEN';
[a-zA-Z]+ return 'ALPHA'; [a-zA-Z]+ return 'ALPHA';
"|" return 'PIPE'; "|" return 'PIPE';
"(" return 'PS'; "(" return 'PS';
@@ -61,7 +53,9 @@ graph
{ $$ = $1;} { $$ = $1;}
; ;
edge: vertex link vertex PIPE text edge: styleStatement
{$$ = 'ya';}
| vertex link vertex PIPE text
{ yy.addLink($1,$3,$2,$5);$$ = 'oy'} { yy.addLink($1,$3,$2,$5);$$ = 'oy'}
| vertex link vertex | vertex link vertex
{ yy.addLink($1,$3,$2);$$ = 'oy'} { yy.addLink($1,$3,$2);$$ = 'oy'}
@@ -69,10 +63,11 @@ edge: vertex link vertex PIPE text
{$$ = 'yo';} {$$ = 'yo';}
; ;
styleStatement:STYLE SPACE ALPHA SPACE stylesOpt
{console.log('a4');$$ = $1;yy.addVertex($3,undefined,undefined,$5);}
;
vertex: STYLE SPACE ALPHA SPACE styles vertex: ALPHA SQS text SQE
{$$ = $1;yy.addVertex($3,undefined,undefined,$5);}
| ALPHA SQS text SQE
{$$ = $1;yy.addVertex($1,$3,'square');} {$$ = $1;yy.addVertex($1,$3,'square');}
| ALPHA PS text PE | ALPHA PS text PE
{$$ = $1;yy.addVertex($1,$3,'round');} {$$ = $1;yy.addVertex($1,$3,'round');}
@@ -90,27 +85,42 @@ text: ALPHA SPACE text
{$$ = $1;} {$$ = $1;}
; ;
link: ARROW_POINT link: MINUS MINUS ARROW_POINT
{$$ = {"type":"arrow"};} {$$ = {"type":"arrow"};}
| ARROW_CIRCLE | MINUS MINUS ARROW_CIRCLE
{$$ = {"type":"arrow_circle"};} {$$ = {"type":"arrow_circle"};}
| ARROW_CROSS | MINUS MINUS ARROW_CROSS
{$$ = {"type":"arrow_cross"};} {$$ = {"type":"arrow_cross"};}
| ARROW_OPEN | MINUS MINUS MINUS
{$$ = {"type":"arrow_open"};} {$$ = {"type":"arrow_open"};}
; ;
styles:
styledef stylesOpt: style
{$$ = [$1];} {console.log('a:'+$1);$$ = [$1]}
| styles COMMA styledef | stylesOpt COMMA style
{$1.push($3);$$ = $1;} {console.log('a3:'+$1.length+','+$3);$1.push($3);$$ = $1;}
; ;
styledef: BKG COLON colordef
{$$={"background":$3}} style: styleComponent
| COL COLON COLORDEF {$$=$1;}
{$$={"color":$3}} |style styleComponent
| BORDER COLON borderWidth SPACE borderStyle SPACE colordef {console.log('b1:');$$ = $1 + $2;}
{$$={"border":$3+' '+$5+' '+$7}} ;
styleComponent: ALPHA
{$$=$1}
| COLON
{$$=$1}
| MINUS
{$$=$1}
| NUM
{$$=$1}
| UNIT
{$$=$1}
| SPACE
{$$=$1}
| HEX
{$$=$1}
; ;
colordef: COLOR colordef: COLOR
@@ -129,5 +139,6 @@ borderStyle: BORDER_STYLE
%% %%
define('parser/mermaid',function(){ define('parser/mermaid',function(){
console.log('abc123'+parser.parseError);
return parser; return parser;
}); });

View File

@@ -72,12 +72,12 @@
} }
*/ */
var parser = (function(){ var parser = (function(){
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,6],$V2=[1,7],$V3=[8,11,22,23,24,25],$V4=[13,14],$V5=[1,24],$V6=[8,17,19,21],$V7=[1,36],$V8=[1,37],$V9=[1,38],$Va=[8,11,22,23,24,25,27],$Vb=[1,46],$Vc=[1,47]; var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,7],$V2=[1,8],$V3=[8,12,23],$V4=[1,23],$V5=[8,18,20,22],$V6=[1,45],$V7=[1,40],$V8=[1,42],$V9=[1,41],$Va=[1,43],$Vb=[1,44],$Vc=[1,46],$Vd=[8,28],$Ve=[6,8,15,23,28,30,31,32,33];
var parser = {trace: function trace() { }, var parser = {trace: function trace() { },
yy: {}, yy: {},
symbols_: {"error":2,"expressions":3,"graph":4,"EOF":5,"SPACE":6,"edge":7,";":8,"vertex":9,"link":10,"PIPE":11,"text":12,"STYLE":13,"ALPHA":14,"styles":15,"SQS":16,"SQE":17,"PS":18,"PE":19,"DIAMOND_START":20,"DIAMOND_STOP":21,"ARROW_POINT":22,"ARROW_CIRCLE":23,"ARROW_CROSS":24,"ARROW_OPEN":25,"styledef":26,"COMMA":27,"BKG":28,"COLON":29,"colordef":30,"COL":31,"COLORDEF":32,"BORDER":33,"borderWidth":34,"borderStyle":35,"COLOR":36,"HEX":37,"NUM":38,"UNIT":39,"BORDER_STYLE":40,"$accept":0,"$end":1}, symbols_: {"error":2,"expressions":3,"graph":4,"EOF":5,"SPACE":6,"edge":7,";":8,"styleStatement":9,"vertex":10,"link":11,"PIPE":12,"text":13,"STYLE":14,"ALPHA":15,"stylesOpt":16,"SQS":17,"SQE":18,"PS":19,"PE":20,"DIAMOND_START":21,"DIAMOND_STOP":22,"MINUS":23,"ARROW_POINT":24,"ARROW_CIRCLE":25,"ARROW_CROSS":26,"style":27,"COMMA":28,"styleComponent":29,"COLON":30,"NUM":31,"UNIT":32,"HEX":33,"colordef":34,"COLOR":35,"borderWidth":36,"borderStyle":37,"BORDER_STYLE":38,"$accept":0,"$end":1},
terminals_: {2:"error",5:"EOF",6:"SPACE",8:";",11:"PIPE",13:"STYLE",14:"ALPHA",16:"SQS",17:"SQE",18:"PS",19:"PE",20:"DIAMOND_START",21:"DIAMOND_STOP",22:"ARROW_POINT",23:"ARROW_CIRCLE",24:"ARROW_CROSS",25:"ARROW_OPEN",27:"COMMA",28:"BKG",29:"COLON",31:"COL",32:"COLORDEF",33:"BORDER",36:"COLOR",37:"HEX",38:"NUM",39:"UNIT",40:"BORDER_STYLE"}, terminals_: {2:"error",5:"EOF",6:"SPACE",8:";",12:"PIPE",14:"STYLE",15:"ALPHA",17:"SQS",18:"SQE",19:"PS",20:"PE",21:"DIAMOND_START",22:"DIAMOND_STOP",23:"MINUS",24:"ARROW_POINT",25:"ARROW_CIRCLE",26:"ARROW_CROSS",28:"COMMA",30:"COLON",31:"NUM",32:"UNIT",33:"HEX",35:"COLOR",38:"BORDER_STYLE"},
productions_: [0,[3,2],[4,2],[4,3],[4,2],[7,5],[7,3],[7,1],[9,5],[9,4],[9,4],[9,4],[9,1],[12,3],[12,2],[12,1],[10,1],[10,1],[10,1],[10,1],[15,1],[15,3],[26,3],[26,3],[26,7],[30,1],[30,1],[34,2],[35,1]], productions_: [0,[3,2],[4,2],[4,3],[4,2],[7,1],[7,5],[7,3],[7,1],[9,5],[10,4],[10,4],[10,4],[10,1],[13,3],[13,2],[13,1],[11,3],[11,3],[11,3],[11,3],[16,1],[16,3],[27,1],[27,2],[29,1],[29,1],[29,1],[29,1],[29,1],[29,1],[29,1],[34,1],[34,1],[36,2],[37,1]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
/* this == yyval */ /* this == yyval */
@@ -93,75 +93,78 @@ case 4:
this.$ = $$[$0-1]; this.$ = $$[$0-1];
break; break;
case 5: case 5:
yy.addLink($$[$0-4],$$[$0-2],$$[$0-3],$$[$0]);this.$ = 'oy' this.$ = 'ya';
break; break;
case 6: case 6:
yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = 'oy' yy.addLink($$[$0-4],$$[$0-2],$$[$0-3],$$[$0]);this.$ = 'oy'
break; break;
case 7: case 7:
this.$ = 'yo'; yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = 'oy'
break; break;
case 8: case 8:
this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]); this.$ = 'yo';
break; break;
case 9: case 9:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square'); console.log('a4');this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);
break; break;
case 10: case 10:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round'); this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');
break; break;
case 11: case 11:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond'); this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');
break; break;
case 12: case 12:
this.$ = $$[$0];yy.addVertex($$[$0]); this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');
break; break;
case 13: case 13:
this.$ = $$[$0-2] + ' ' +$$[$0]; this.$ = $$[$0];yy.addVertex($$[$0]);
break; break;
case 14: case 14:
this.$ = $$[$0-2] + ' ' +$$[$0];
break;
case 15:
this.$ = $$[$0-1]; this.$ = $$[$0-1];
break; break;
case 15: case 28: case 16: case 35:
this.$ = $$[$0]; this.$ = $$[$0];
break; break;
case 16: case 17:
this.$ = {"type":"arrow"}; this.$ = {"type":"arrow"};
break; break;
case 17: case 18:
this.$ = {"type":"arrow_circle"}; this.$ = {"type":"arrow_circle"};
break; break;
case 18: case 19:
this.$ = {"type":"arrow_cross"}; this.$ = {"type":"arrow_cross"};
break; break;
case 19: case 20:
this.$ = {"type":"arrow_open"}; this.$ = {"type":"arrow_open"};
break; break;
case 20:
this.$ = [$$[$0]];
break;
case 21: case 21:
$$[$0-2].push($$[$0]);this.$ = $$[$0-2]; console.log('a:'+$$[$0]);this.$ = [$$[$0]]
break; break;
case 22: case 22:
this.$={"background":$$[$0]} console.log('a3:'+$$[$0-2].length+','+$$[$0]);$$[$0-2].push($$[$0]);this.$ = $$[$0-2];
break; break;
case 23: case 23:
this.$={"color":$$[$0]} this.$=$$[$0];
break; break;
case 24: case 24:
this.$={"border":$$[$0-4]+' '+$$[$0-2]+' '+$$[$0]} console.log('b1:');this.$ = $$[$0-1] + $$[$0];
break; break;
case 25: case 26: case 25: case 26: case 27: case 28: case 29: case 30: case 31:
this.$=$$[$0]
break;
case 32: case 33:
this.$ = yytext; this.$ = yytext;
break; break;
case 27: case 34:
this.$ = $$[$0-1]+''+$$[$0]; this.$ = $$[$0-1]+''+$$[$0];
break; break;
} }
}, },
table: [{3:1,4:2,6:$V0,7:4,9:5,13:$V1,14:$V2},{1:[3]},{5:[1,8]},{4:9,6:$V0,7:4,9:5,13:$V1,14:$V2},{8:[1,10]},{8:[2,7],10:11,22:[1,12],23:[1,13],24:[1,14],25:[1,15]},{6:[1,16]},o($V3,[2,12],{16:[1,17],18:[1,18],20:[1,19]}),{1:[2,1]},{5:[2,2]},{4:20,5:[2,4],6:$V0,7:4,9:5,13:$V1,14:$V2},{9:21,13:$V1,14:$V2},o($V4,[2,16]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{14:[1,22]},{12:23,14:$V5},{12:25,14:$V5},{12:26,14:$V5},{5:[2,3]},{8:[2,6],11:[1,27]},{6:[1,28]},{17:[1,29]},o($V6,[2,15],{6:[1,30]}),{19:[1,31]},{21:[1,32]},{12:33,14:$V5},{15:34,26:35,28:$V7,31:$V8,33:$V9},o($V3,[2,9]),o($V6,[2,14],{12:39,14:$V5}),o($V3,[2,10]),o($V3,[2,11]),{8:[2,5]},o($V3,[2,8],{27:[1,40]}),o($Va,[2,20]),{29:[1,41]},{29:[1,42]},{29:[1,43]},o($V6,[2,13]),{26:44,28:$V7,31:$V8,33:$V9},{30:45,36:$Vb,37:$Vc},{32:[1,48]},{34:49,38:[1,50]},o($Va,[2,21]),o($Va,[2,22]),o($Va,[2,25]),o($Va,[2,26]),o($Va,[2,23]),{6:[1,51]},{39:[1,52]},{35:53,40:[1,54]},{6:[2,27]},{6:[1,55]},{6:[2,28]},{30:56,36:$Vb,37:$Vc},o($Va,[2,24])], table: [{3:1,4:2,6:$V0,7:4,9:5,10:6,14:$V1,15:$V2},{1:[3]},{5:[1,9]},{4:10,6:$V0,7:4,9:5,10:6,14:$V1,15:$V2},{8:[1,11]},{8:[2,5]},{8:[2,8],11:12,23:[1,13]},{6:[1,14]},o($V3,[2,13],{17:[1,15],19:[1,16],21:[1,17]}),{1:[2,1]},{5:[2,2]},{4:18,5:[2,4],6:$V0,7:4,9:5,10:6,14:$V1,15:$V2},{10:19,15:$V2},{23:[1,20]},{15:[1,21]},{13:22,15:$V4},{13:24,15:$V4},{13:25,15:$V4},{5:[2,3]},{8:[2,7],12:[1,26]},{23:[1,30],24:[1,27],25:[1,28],26:[1,29]},{6:[1,31]},{18:[1,32]},o($V5,[2,16],{6:[1,33]}),{20:[1,34]},{22:[1,35]},{13:36,15:$V4},{15:[2,17]},{15:[2,18]},{15:[2,19]},{15:[2,20]},{6:$V6,15:$V7,16:37,23:$V8,27:38,29:39,30:$V9,31:$Va,32:$Vb,33:$Vc},o($V3,[2,10]),o($V5,[2,15],{13:47,15:$V4}),o($V3,[2,11]),o($V3,[2,12]),{8:[2,6]},{8:[2,9],28:[1,48]},o($Vd,[2,21],{29:49,6:$V6,15:$V7,23:$V8,30:$V9,31:$Va,32:$Vb,33:$Vc}),o($Ve,[2,23]),o($Ve,[2,25]),o($Ve,[2,26]),o($Ve,[2,27]),o($Ve,[2,28]),o($Ve,[2,29]),o($Ve,[2,30]),o($Ve,[2,31]),o($V5,[2,14]),{6:$V6,15:$V7,23:$V8,27:50,29:39,30:$V9,31:$Va,32:$Vb,33:$Vc},o($Ve,[2,24]),o($Vd,[2,22],{29:49,6:$V6,15:$V7,23:$V8,30:$V9,31:$Va,32:$Vb,33:$Vc})],
defaultActions: {8:[2,1],9:[2,2],20:[2,3],33:[2,5],52:[2,27],54:[2,28]}, defaultActions: {5:[2,5],9:[2,1],10:[2,2],18:[2,3],27:[2,17],28:[2,18],29:[2,19],30:[2,20],36:[2,6]},
parseError: function parseError(str, hash) { parseError: function parseError(str, hash) {
if (hash.recoverable) { if (hash.recoverable) {
this.trace(str); this.trace(str);
@@ -231,7 +234,7 @@ parse: function parse(input) {
} else { } else {
errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
} }
this.parseError(errStr, { console.log(errStr, {
text: lexer.match, text: lexer.match,
token: this.terminals_[symbol] || symbol, token: this.terminals_[symbol] || symbol,
line: lexer.yylineno, line: lexer.yylineno,
@@ -308,6 +311,7 @@ parse: function parse(input) {
}}; }};
define('parser/mermaid',function(){ define('parser/mermaid',function(){
console.log('abc123'+parser.parseError);
return parser; return parser;
});/* generated by jison-lex 0.3.4 */ });/* generated by jison-lex 0.3.4 */
var lexer = (function(){ var lexer = (function(){
@@ -637,74 +641,58 @@ options: {},
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
var YYSTATE=YY_START; var YYSTATE=YY_START;
switch($avoiding_name_collisions) { switch($avoiding_name_collisions) {
case 0:return 13; case 0:return 14;
break; break;
case 1:return 28; case 1:return 33;
break; break;
case 2:return 36; case 2:return 31;
break; break;
case 3:return 36; case 3:return 32;
break; break;
case 4:return 36; case 4:return 32;
break; break;
case 5:return 37; case 5:return 32;
break; break;
case 6:return 38; case 6:return 30;
break; break;
case 7:return 33; case 7:return 23;
break; break;
case 8:return 40; case 8:return 8;
break; break;
case 9:return 40; case 9:return 28;
break; break;
case 10:return 40; case 10:return 26;
break; break;
case 11:return 39; case 11:return 24;
break; break;
case 12:return 39; case 12:return 25;
break; break;
case 13:return 39; case 13:return 15;
break; break;
case 14:return 29; case 14:return 12;
break; break;
case 15:return 8; case 15:return 19;
break; break;
case 16:return 27; case 16:return 20;
break; break;
case 17:return 24; case 17:return 17;
break; break;
case 18:return 22; case 18:return 18;
break; break;
case 19:return 23; case 19:return 21
break; break;
case 20:return 25; case 20:return 22
break; break;
case 21:return 14; case 21:return 6;
break; break;
case 22:return 11; case 22:return 'NEWLINE';
break; break;
case 23:return 18; case 23:return 5;
break;
case 24:return 19;
break;
case 25:return 16;
break;
case 26:return 17;
break;
case 27:return 20
break;
case 28:return 21
break;
case 29:return 6;
break;
case 30:return 'NEWLINE';
break;
case 31:return 5;
break; break;
} }
}, },
rules: [/^(?:style\b)/,/^(?:background\b)/,/^(?:red\b)/,/^(?:blue\b)/,/^(?:black\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:border\b)/,/^(?:dotted\b)/,/^(?:dashed\b)/,/^(?:solid\b)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:--[x])/,/^(?:-->)/,/^(?:--[o])/,/^(?:---)/,/^(?:[a-zA-Z]+)/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:\s)/,/^(?:\n)/,/^(?:$)/], rules: [/^(?:style\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:-)/,/^(?:;)/,/^(?:,)/,/^(?:[x])/,/^(?:>)/,/^(?:[o])/,/^(?:[a-zA-Z]+)/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:\s)/,/^(?:\n)/,/^(?:$)/],
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],"inclusive":true}} conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],"inclusive":true}}
}); });
return lexer; return lexer;
})(); })();

View File

@@ -7,6 +7,9 @@ define('parser/mermaid.spec',['parser/graph','parser/mermaid'],function(graph, p
beforeEach(function(){ beforeEach(function(){
graph.clear(); graph.clear();
p.yy = graph; p.yy = graph;
/*p.parse.parseError= function parseError(str, hash) {
console.log(str);
}*/
}); });
it('should handle a nodes and edges',function(){ it('should handle a nodes and edges',function(){
@@ -145,7 +148,7 @@ define('parser/mermaid.spec',['parser/graph','parser/mermaid'],function(graph, p
var style = vert['Q'].styles[0]; var style = vert['Q'].styles[0];
expect(vert['Q'].styles.length).toBe(1); expect(vert['Q'].styles.length).toBe(1);
expect(vert['Q'].styles[0].background).toBe('#fff'); expect(vert['Q'].styles[0]).toBe('background:#fff');
}); });
it('should handle multiple styles for a vortex',function(){ it('should handle multiple styles for a vortex',function(){
var res = p.parse('style R background:#fff,border:1px solid red;'); var res = p.parse('style R background:#fff,border:1px solid red;');
@@ -154,8 +157,8 @@ define('parser/mermaid.spec',['parser/graph','parser/mermaid'],function(graph, p
var edges = p.yy.getEdges(); var edges = p.yy.getEdges();
expect(vert['R'].styles.length).toBe(2); expect(vert['R'].styles.length).toBe(2);
expect(vert['R'].styles[0].background).toBe('#fff'); expect(vert['R'].styles[0]).toBe('background:#fff');
expect(vert['R'].styles[1].border).toBe('1px solid red'); expect(vert['R'].styles[1]).toBe('border:1px solid red');
}); });
it('should handle multiple styles in a graph',function(){ it('should handle multiple styles in a graph',function(){
@@ -166,9 +169,9 @@ define('parser/mermaid.spec',['parser/graph','parser/mermaid'],function(graph, p
expect(vert['S'].styles.length).toBe(1); expect(vert['S'].styles.length).toBe(1);
expect(vert['T'].styles.length).toBe(2); expect(vert['T'].styles.length).toBe(2);
expect(vert['S'].styles[0].background).toBe('#aaa'); expect(vert['S'].styles[0]).toBe('background:#aaa');
expect(vert['T'].styles[0].background).toBe('#bbb'); expect(vert['T'].styles[0]).toBe('background:#bbb');
expect(vert['T'].styles[1].border).toBe('1px solid red'); expect(vert['T'].styles[1]).toBe('border:1px solid red');
}); });
it('should handle styles and graph definitons in a graph',function(){ it('should handle styles and graph definitons in a graph',function(){
@@ -179,11 +182,20 @@ define('parser/mermaid.spec',['parser/graph','parser/mermaid'],function(graph, p
expect(vert['S'].styles.length).toBe(1); expect(vert['S'].styles.length).toBe(1);
expect(vert['T'].styles.length).toBe(2); expect(vert['T'].styles.length).toBe(2);
expect(vert['S'].styles[0].background).toBe('#aaa'); expect(vert['S'].styles[0]).toBe('background:#aaa');
expect(vert['T'].styles[0].background).toBe('#bbb'); expect(vert['T'].styles[0]).toBe('background:#bbb');
expect(vert['T'].styles[1].border).toBe('1px solid red'); expect(vert['T'].styles[1]).toBe('border:1px solid red');
}); });
it('should handle styles and graph definitons in a graph',function(){
var res = p.parse('style T background:#bbb,border:1px solid red;');
//var res = p.parse('style T background: #bbb;');
var vert = p.yy.getVertices();
expect(vert['T'].styles.length).toBe(2);
expect(vert['T'].styles[0]).toBe('background:#bbb');
expect(vert['T'].styles[1]).toBe('border:1px solid red');
});
//console.log(p.parse('style S background:#aaa;\nstyle T background:#bbb,border:1px solid red;')); //console.log(p.parse('style S background:#aaa;\nstyle T background:#bbb,border:1px solid red;'));
}); });