From 59fbf1e1223e270aebdcaf6d3c31b0bbd371c0e2 Mon Sep 17 00:00:00 2001 From: knsv Date: Sun, 16 Nov 2014 09:02:03 +0100 Subject: [PATCH] Meddling with ids and minus signs --- dist/mermaid.full.js | 133 ++++++++++++++++++++------------------- dist/mermaid.slim.js | 133 ++++++++++++++++++++------------------- dist/mermaid.slim.min.js | 2 +- src/parser/flow.jison | 18 +++--- src/parser/flow.js | 36 +++++------ src/parser/flow.spec.js | 28 ++++----- test/web.html | 28 ++++----- 7 files changed, 192 insertions(+), 186 deletions(-) diff --git a/dist/mermaid.full.js b/dist/mermaid.full.js index 3c1098886..82f03df5b 100644 --- a/dist/mermaid.full.js +++ b/dist/mermaid.full.js @@ -104,12 +104,12 @@ module.exports={graphlib:require("./lib/graphlib"),dagre:require("./lib/dagre"), } */ 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,7],$V1=[2,10],$V2=[1,12],$V3=[1,11],$V4=[6,9],$V5=[11,17,32],$V6=[11,27],$V7=[1,37],$V8=[20,22,24,31],$V9=[17,31],$Va=[1,62],$Vb=[1,57],$Vc=[1,59],$Vd=[1,63],$Ve=[1,58],$Vf=[1,60],$Vg=[1,61],$Vh=[1,67],$Vi=[11,36],$Vj=[9,11,17,27,34,36,38,39,40]; +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,7],$V1=[2,10],$V2=[1,14],$V3=[1,15],$V4=[1,11],$V5=[6,9],$V6=[11,26,27,36],$V7=[11,30,31,32,33],$V8=[11,18,21,23,30,31,32,33],$V9=[11,18,21,23,26,27,30,31,32,33],$Va=[26,27],$Vb=[26,27,34],$Vc=[1,43],$Vd=[20,22,24,34],$Ve=[1,64],$Vf=[1,59],$Vg=[1,62],$Vh=[1,61],$Vi=[1,65],$Vj=[1,60],$Vk=[1,63],$Vl=[1,69],$Vm=[11,40],$Vn=[9,11,26,27,35,38,40,42,43]; var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"expressions":3,"graphConfig":4,"statements":5,"EOF":6,"spaceList":7,"GRAPH":8,"SPACE":9,"DIR":10,"SEMI":11,"statement":12,"verticeStatement":13,"styleStatement":14,"vertex":15,"link":16,"ALPHA":17,"SQS":18,"text":19,"SQE":20,"PS":21,"PE":22,"DIAMOND_START":23,"DIAMOND_STOP":24,"linkStatement":25,"arrowText":26,"MINUS":27,"ARROW_POINT":28,"ARROW_CIRCLE":29,"ARROW_CROSS":30,"PIPE":31,"STYLE":32,"stylesOpt":33,"HEX":34,"style":35,"COMMA":36,"styleComponent":37,"COLON":38,"NUM":39,"UNIT":40,"$accept":0,"$end":1}, -terminals_: {2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",17:"ALPHA",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",27:"MINUS",28:"ARROW_POINT",29:"ARROW_CIRCLE",30:"ARROW_CROSS",31:"PIPE",32:"STYLE",34:"HEX",36:"COMMA",38:"COLON",39:"NUM",40:"UNIT"}, -productions_: [0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[16,2],[16,1],[25,3],[25,3],[25,3],[25,3],[26,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[33,1],[33,3],[35,1],[35,2],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1]], +symbols_: {"error":2,"expressions":3,"graphConfig":4,"statements":5,"EOF":6,"spaceList":7,"GRAPH":8,"SPACE":9,"DIR":10,"SEMI":11,"statement":12,"verticeStatement":13,"styleStatement":14,"vertex":15,"link":16,"alphaNum":17,"SQS":18,"text":19,"SQE":20,"PS":21,"PE":22,"DIAMOND_START":23,"DIAMOND_STOP":24,"alphaNumToken":25,"ALPHA":26,"NUM":27,"linkStatement":28,"arrowText":29,"ARROW_POINT":30,"ARROW_CIRCLE":31,"ARROW_CROSS":32,"ARROW_OPEN":33,"PIPE":34,"MINUS":35,"STYLE":36,"stylesOpt":37,"HEX":38,"style":39,"COMMA":40,"styleComponent":41,"COLON":42,"UNIT":43,"$accept":0,"$end":1}, +terminals_: {2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",26:"ALPHA",27:"NUM",30:"ARROW_POINT",31:"ARROW_CIRCLE",32:"ARROW_CROSS",33:"ARROW_OPEN",34:"PIPE",35:"MINUS",36:"STYLE",38:"HEX",40:"COMMA",42:"COLON",43:"UNIT"}, +productions_: [0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[17,1],[17,2],[25,1],[25,1],[16,2],[16,1],[28,1],[28,1],[28,1],[28,1],[29,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[37,1],[37,3],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -139,61 +139,64 @@ break; case 16: console.log('In vertex'); this.$ = $$[$0];yy.addVertex($$[$0]); break; -case 17: -$$[$0-1].text = $$[$0];this.$ = $$[$0-1]; -break; -case 18: case 27: -this.$ = $$[$0]; -break; -case 19: -this.$ = {"type":"arrow"}; -break; -case 20: -this.$ = {"type":"arrow_circle"}; -break; -case 21: -this.$ = {"type":"arrow_cross"}; -break; -case 22: -this.$ = {"type":"arrow_open"}; -break; -case 23: -console.log('Nice link text here: '+$$[$0-1]);this.$ = $$[$0-1]; -break; -case 24: -this.$ = $$[$0-2] + ' ' +$$[$0]; -break; -case 25: -this.$ = $$[$0-2] + '-' +$$[$0]; -break; -case 26: -this.$ = $$[$0-1]; -break; -case 28: -this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]); -break; -case 29: -console.log('In parser - style: '+$$[$0]);this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]); -break; -case 30: -this.$ = [$$[$0]] -break; -case 31: -$$[$0-2].push($$[$0]);this.$ = $$[$0-2]; -break; -case 32: +case 17: case 19: case 20: case 36: this.$=$$[$0]; break; +case 18: +this.$=$$[$0-1]+''+$$[$0]; +break; +case 21: +$$[$0-1].text = $$[$0];this.$ = $$[$0-1]; +break; +case 22: case 31: +this.$ = $$[$0]; +break; +case 23: +this.$ = {"type":"arrow"}; +break; +case 24: +this.$ = {"type":"arrow_circle"}; +break; +case 25: +this.$ = {"type":"arrow_cross"}; +break; +case 26: +this.$ = {"type":"arrow_open"}; +break; +case 27: +console.log('Nice link text here: '+$$[$0-1]);this.$ = $$[$0-1]; +break; +case 28: +this.$ = $$[$0-2] + ' ' +$$[$0]; +break; +case 29: +this.$ = $$[$0-2] + '-' +$$[$0]; +break; +case 30: +this.$ = $$[$0-1]; +break; +case 32: +this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]); +break; case 33: +console.log('In parser - style: '+$$[$0]);this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]); +break; +case 34: +this.$ = [$$[$0]] +break; +case 35: +$$[$0-2].push($$[$0]);this.$ = $$[$0-2]; +break; +case 37: this.$ = $$[$0-1] + $$[$0]; break; -case 34: case 35: case 36: case 37: case 38: case 39: case 40: +case 38: case 39: case 40: case 41: case 42: case 43: case 44: this.$=$$[$0] break; } }, -table: [{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:$V0,11:$V1,12:6,13:8,14:9,15:10,17:$V2,32:$V3},{9:[1,13]},{6:[1,14],7:15,9:$V0},{5:16,11:$V1,12:6,13:8,14:9,15:10,17:$V2,32:$V3},o($V4,[2,5]),o($V5,[2,7],{7:17,9:$V0}),{11:[1,18]},{11:[1,19]},{11:[2,12],16:20,25:21,27:[1,22]},{9:[1,23]},o($V6,[2,16],{18:[1,24],21:[1,25],23:[1,26]}),{10:[1,27]},{1:[2,1]},{11:$V1,12:28,13:8,14:9,15:10,17:$V2,32:$V3},{6:[1,29],7:15,9:$V0},o($V5,[2,6]),o($V4,[2,8]),o($V4,[2,9]),{15:30,17:$V2},{17:[2,18],26:31,31:[1,32]},{27:[1,33]},{17:[1,34],34:[1,35]},{17:$V7,19:36},{17:$V7,19:38},{17:$V7,19:39},{11:[1,40]},o($V4,[2,4]),{1:[2,2]},{11:[2,11]},{17:[2,17]},{17:$V7,19:41},{27:[1,45],28:[1,42],29:[1,43],30:[1,44]},{9:[1,46]},{9:[1,47]},{20:[1,48]},o($V8,[2,27],{9:[1,49],27:[1,50]}),{22:[1,51]},{24:[1,52]},o([9,11,17,32],[2,3]),{31:[1,53]},o($V9,[2,19]),o($V9,[2,20]),o($V9,[2,21]),o($V9,[2,22]),{9:$Va,17:$Vb,27:$Vc,33:54,34:$Vd,35:55,37:56,38:$Ve,39:$Vf,40:$Vg},{9:$Va,17:$Vb,27:$Vc,33:64,34:$Vd,35:55,37:56,38:$Ve,39:$Vf,40:$Vg},o($V6,[2,13]),o($V8,[2,26],{19:65,17:$V7}),{17:$V7,19:66},o($V6,[2,14]),o($V6,[2,15]),{17:[2,23]},{11:[2,28],36:$Vh},o($Vi,[2,30],{37:68,9:$Va,17:$Vb,27:$Vc,34:$Vd,38:$Ve,39:$Vf,40:$Vg}),o($Vj,[2,32]),o($Vj,[2,34]),o($Vj,[2,35]),o($Vj,[2,36]),o($Vj,[2,37]),o($Vj,[2,38]),o($Vj,[2,39]),o($Vj,[2,40]),{11:[2,29],36:$Vh},o($V8,[2,24]),o($V8,[2,25]),{9:$Va,17:$Vb,27:$Vc,34:$Vd,35:69,37:56,38:$Ve,39:$Vf,40:$Vg},o($Vj,[2,33]),o($Vi,[2,31],{37:68,9:$Va,17:$Vb,27:$Vc,34:$Vd,38:$Ve,39:$Vf,40:$Vg})], -defaultActions: {14:[2,1],29:[2,2],30:[2,11],31:[2,17],53:[2,23]}, +table: [{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:$V0,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},{9:[1,16]},{6:[1,17],7:18,9:$V0},{5:19,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},o($V5,[2,5]),o($V6,[2,7],{7:20,9:$V0}),{11:[1,21]},{11:[1,22]},{11:[2,12],16:23,28:24,30:[1,25],31:[1,26],32:[1,27],33:[1,28]},{9:[1,29]},o($V7,[2,16],{18:[1,30],21:[1,31],23:[1,32]}),o($V8,[2,17],{25:13,17:33,26:$V2,27:$V3}),o($V9,[2,19]),o($V9,[2,20]),{10:[1,34]},{1:[2,1]},{11:$V1,12:35,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},{6:[1,36],7:18,9:$V0},o($V6,[2,6]),o($V5,[2,8]),o($V5,[2,9]),{15:37,17:12,25:13,26:$V2,27:$V3},o($Va,[2,22],{29:38,34:[1,39]}),o($Vb,[2,23]),o($Vb,[2,24]),o($Vb,[2,25]),o($Vb,[2,26]),{26:[1,40],38:[1,41]},{19:42,26:$Vc},{19:44,26:$Vc},{19:45,26:$Vc},o($V8,[2,18]),{11:[1,46]},o($V5,[2,4]),{1:[2,2]},{11:[2,11]},o($Va,[2,21]),{19:47,26:$Vc},{9:[1,48]},{9:[1,49]},{20:[1,50]},o($Vd,[2,31],{9:[1,51],35:[1,52]}),{22:[1,53]},{24:[1,54]},o([9,11,26,27,36],[2,3]),{34:[1,55]},{9:$Ve,26:$Vf,27:$Vg,35:$Vh,37:56,38:$Vi,39:57,41:58,42:$Vj,43:$Vk},{9:$Ve,26:$Vf,27:$Vg,35:$Vh,37:66,38:$Vi,39:57,41:58,42:$Vj,43:$Vk},o($V7,[2,13]),o($Vd,[2,30],{19:67,26:$Vc}),{19:68,26:$Vc},o($V7,[2,14]),o($V7,[2,15]),o($Va,[2,27]),{11:[2,32],40:$Vl},o($Vm,[2,34],{41:70,9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,42:$Vj,43:$Vk}),o($Vn,[2,36]),o($Vn,[2,38]),o($Vn,[2,39]),o($Vn,[2,40]),o($Vn,[2,41]),o($Vn,[2,42]),o($Vn,[2,43]),o($Vn,[2,44]),{11:[2,33],40:$Vl},o($Vd,[2,28]),o($Vd,[2,29]),{9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,39:71,41:58,42:$Vj,43:$Vk},o($Vn,[2,37]),o($Vm,[2,35],{41:70,9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,42:$Vj,43:$Vk})], +defaultActions: {17:[2,1],36:[2,2],37:[2,11]}, parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); @@ -669,7 +672,7 @@ options: {}, performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { var YYSTATE=YY_START; switch($avoiding_name_collisions) { -case 0:return 32; +case 0:return 36; break; case 1:return 8; break; @@ -677,35 +680,35 @@ case 2:return 10; break; case 3:return 10; break; -case 4:return 34; +case 4:return 38; break; -case 5:return 39; +case 5:return 27; break; case 6:return 'BRKT'; break; -case 7:return 40; +case 7:return 43; break; -case 8:return 40; +case 8:return 43; break; -case 9:return 40; +case 9:return 43; break; -case 10:return 38; +case 10:return 42; break; -case 11:return 27; +case 11:return 11; break; -case 12:return 11; +case 12:return 40; break; -case 13:return 36; +case 13:return 32; break; case 14:return 30; break; -case 15:return 28; +case 15:return 31; break; -case 16:return 29; +case 16:return 33; break; -case 17:return 17; +case 17:return 26; break; -case 18:return 31; +case 18:return 34; break; case 19:return 21; break; @@ -727,7 +730,7 @@ case 27:return 6; break; } }, -rules: [/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:-)/,/^(?:;)/,/^(?:,)/,/^(?:[x])/,/^(?:>)/,/^(?:[o])/,/^(?:[a-zåäöæøA-ZÅÄÖÆØ]+)/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:\s)/,/^(?:\n)/,/^(?:$)/], +rules: [/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:==[x])/,/^(?:==>)/,/^(?:==[o])/,/^(?:===)/,/^(?:[a-zåäöæøA-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],"inclusive":true}} }); return lexer; diff --git a/dist/mermaid.slim.js b/dist/mermaid.slim.js index bd9679014..810e122d5 100644 --- a/dist/mermaid.slim.js +++ b/dist/mermaid.slim.js @@ -72,12 +72,12 @@ } */ 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,7],$V1=[2,10],$V2=[1,12],$V3=[1,11],$V4=[6,9],$V5=[11,17,32],$V6=[11,27],$V7=[1,37],$V8=[20,22,24,31],$V9=[17,31],$Va=[1,62],$Vb=[1,57],$Vc=[1,59],$Vd=[1,63],$Ve=[1,58],$Vf=[1,60],$Vg=[1,61],$Vh=[1,67],$Vi=[11,36],$Vj=[9,11,17,27,34,36,38,39,40]; +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,7],$V1=[2,10],$V2=[1,14],$V3=[1,15],$V4=[1,11],$V5=[6,9],$V6=[11,26,27,36],$V7=[11,30,31,32,33],$V8=[11,18,21,23,30,31,32,33],$V9=[11,18,21,23,26,27,30,31,32,33],$Va=[26,27],$Vb=[26,27,34],$Vc=[1,43],$Vd=[20,22,24,34],$Ve=[1,64],$Vf=[1,59],$Vg=[1,62],$Vh=[1,61],$Vi=[1,65],$Vj=[1,60],$Vk=[1,63],$Vl=[1,69],$Vm=[11,40],$Vn=[9,11,26,27,35,38,40,42,43]; var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"expressions":3,"graphConfig":4,"statements":5,"EOF":6,"spaceList":7,"GRAPH":8,"SPACE":9,"DIR":10,"SEMI":11,"statement":12,"verticeStatement":13,"styleStatement":14,"vertex":15,"link":16,"ALPHA":17,"SQS":18,"text":19,"SQE":20,"PS":21,"PE":22,"DIAMOND_START":23,"DIAMOND_STOP":24,"linkStatement":25,"arrowText":26,"MINUS":27,"ARROW_POINT":28,"ARROW_CIRCLE":29,"ARROW_CROSS":30,"PIPE":31,"STYLE":32,"stylesOpt":33,"HEX":34,"style":35,"COMMA":36,"styleComponent":37,"COLON":38,"NUM":39,"UNIT":40,"$accept":0,"$end":1}, -terminals_: {2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",17:"ALPHA",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",27:"MINUS",28:"ARROW_POINT",29:"ARROW_CIRCLE",30:"ARROW_CROSS",31:"PIPE",32:"STYLE",34:"HEX",36:"COMMA",38:"COLON",39:"NUM",40:"UNIT"}, -productions_: [0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[16,2],[16,1],[25,3],[25,3],[25,3],[25,3],[26,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[33,1],[33,3],[35,1],[35,2],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1]], +symbols_: {"error":2,"expressions":3,"graphConfig":4,"statements":5,"EOF":6,"spaceList":7,"GRAPH":8,"SPACE":9,"DIR":10,"SEMI":11,"statement":12,"verticeStatement":13,"styleStatement":14,"vertex":15,"link":16,"alphaNum":17,"SQS":18,"text":19,"SQE":20,"PS":21,"PE":22,"DIAMOND_START":23,"DIAMOND_STOP":24,"alphaNumToken":25,"ALPHA":26,"NUM":27,"linkStatement":28,"arrowText":29,"ARROW_POINT":30,"ARROW_CIRCLE":31,"ARROW_CROSS":32,"ARROW_OPEN":33,"PIPE":34,"MINUS":35,"STYLE":36,"stylesOpt":37,"HEX":38,"style":39,"COMMA":40,"styleComponent":41,"COLON":42,"UNIT":43,"$accept":0,"$end":1}, +terminals_: {2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",26:"ALPHA",27:"NUM",30:"ARROW_POINT",31:"ARROW_CIRCLE",32:"ARROW_CROSS",33:"ARROW_OPEN",34:"PIPE",35:"MINUS",36:"STYLE",38:"HEX",40:"COMMA",42:"COLON",43:"UNIT"}, +productions_: [0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[17,1],[17,2],[25,1],[25,1],[16,2],[16,1],[28,1],[28,1],[28,1],[28,1],[29,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[37,1],[37,3],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -107,61 +107,64 @@ break; case 16: console.log('In vertex'); this.$ = $$[$0];yy.addVertex($$[$0]); break; -case 17: -$$[$0-1].text = $$[$0];this.$ = $$[$0-1]; -break; -case 18: case 27: -this.$ = $$[$0]; -break; -case 19: -this.$ = {"type":"arrow"}; -break; -case 20: -this.$ = {"type":"arrow_circle"}; -break; -case 21: -this.$ = {"type":"arrow_cross"}; -break; -case 22: -this.$ = {"type":"arrow_open"}; -break; -case 23: -console.log('Nice link text here: '+$$[$0-1]);this.$ = $$[$0-1]; -break; -case 24: -this.$ = $$[$0-2] + ' ' +$$[$0]; -break; -case 25: -this.$ = $$[$0-2] + '-' +$$[$0]; -break; -case 26: -this.$ = $$[$0-1]; -break; -case 28: -this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]); -break; -case 29: -console.log('In parser - style: '+$$[$0]);this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]); -break; -case 30: -this.$ = [$$[$0]] -break; -case 31: -$$[$0-2].push($$[$0]);this.$ = $$[$0-2]; -break; -case 32: +case 17: case 19: case 20: case 36: this.$=$$[$0]; break; +case 18: +this.$=$$[$0-1]+''+$$[$0]; +break; +case 21: +$$[$0-1].text = $$[$0];this.$ = $$[$0-1]; +break; +case 22: case 31: +this.$ = $$[$0]; +break; +case 23: +this.$ = {"type":"arrow"}; +break; +case 24: +this.$ = {"type":"arrow_circle"}; +break; +case 25: +this.$ = {"type":"arrow_cross"}; +break; +case 26: +this.$ = {"type":"arrow_open"}; +break; +case 27: +console.log('Nice link text here: '+$$[$0-1]);this.$ = $$[$0-1]; +break; +case 28: +this.$ = $$[$0-2] + ' ' +$$[$0]; +break; +case 29: +this.$ = $$[$0-2] + '-' +$$[$0]; +break; +case 30: +this.$ = $$[$0-1]; +break; +case 32: +this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]); +break; case 33: +console.log('In parser - style: '+$$[$0]);this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]); +break; +case 34: +this.$ = [$$[$0]] +break; +case 35: +$$[$0-2].push($$[$0]);this.$ = $$[$0-2]; +break; +case 37: this.$ = $$[$0-1] + $$[$0]; break; -case 34: case 35: case 36: case 37: case 38: case 39: case 40: +case 38: case 39: case 40: case 41: case 42: case 43: case 44: this.$=$$[$0] break; } }, -table: [{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:$V0,11:$V1,12:6,13:8,14:9,15:10,17:$V2,32:$V3},{9:[1,13]},{6:[1,14],7:15,9:$V0},{5:16,11:$V1,12:6,13:8,14:9,15:10,17:$V2,32:$V3},o($V4,[2,5]),o($V5,[2,7],{7:17,9:$V0}),{11:[1,18]},{11:[1,19]},{11:[2,12],16:20,25:21,27:[1,22]},{9:[1,23]},o($V6,[2,16],{18:[1,24],21:[1,25],23:[1,26]}),{10:[1,27]},{1:[2,1]},{11:$V1,12:28,13:8,14:9,15:10,17:$V2,32:$V3},{6:[1,29],7:15,9:$V0},o($V5,[2,6]),o($V4,[2,8]),o($V4,[2,9]),{15:30,17:$V2},{17:[2,18],26:31,31:[1,32]},{27:[1,33]},{17:[1,34],34:[1,35]},{17:$V7,19:36},{17:$V7,19:38},{17:$V7,19:39},{11:[1,40]},o($V4,[2,4]),{1:[2,2]},{11:[2,11]},{17:[2,17]},{17:$V7,19:41},{27:[1,45],28:[1,42],29:[1,43],30:[1,44]},{9:[1,46]},{9:[1,47]},{20:[1,48]},o($V8,[2,27],{9:[1,49],27:[1,50]}),{22:[1,51]},{24:[1,52]},o([9,11,17,32],[2,3]),{31:[1,53]},o($V9,[2,19]),o($V9,[2,20]),o($V9,[2,21]),o($V9,[2,22]),{9:$Va,17:$Vb,27:$Vc,33:54,34:$Vd,35:55,37:56,38:$Ve,39:$Vf,40:$Vg},{9:$Va,17:$Vb,27:$Vc,33:64,34:$Vd,35:55,37:56,38:$Ve,39:$Vf,40:$Vg},o($V6,[2,13]),o($V8,[2,26],{19:65,17:$V7}),{17:$V7,19:66},o($V6,[2,14]),o($V6,[2,15]),{17:[2,23]},{11:[2,28],36:$Vh},o($Vi,[2,30],{37:68,9:$Va,17:$Vb,27:$Vc,34:$Vd,38:$Ve,39:$Vf,40:$Vg}),o($Vj,[2,32]),o($Vj,[2,34]),o($Vj,[2,35]),o($Vj,[2,36]),o($Vj,[2,37]),o($Vj,[2,38]),o($Vj,[2,39]),o($Vj,[2,40]),{11:[2,29],36:$Vh},o($V8,[2,24]),o($V8,[2,25]),{9:$Va,17:$Vb,27:$Vc,34:$Vd,35:69,37:56,38:$Ve,39:$Vf,40:$Vg},o($Vj,[2,33]),o($Vi,[2,31],{37:68,9:$Va,17:$Vb,27:$Vc,34:$Vd,38:$Ve,39:$Vf,40:$Vg})], -defaultActions: {14:[2,1],29:[2,2],30:[2,11],31:[2,17],53:[2,23]}, +table: [{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:$V0,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},{9:[1,16]},{6:[1,17],7:18,9:$V0},{5:19,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},o($V5,[2,5]),o($V6,[2,7],{7:20,9:$V0}),{11:[1,21]},{11:[1,22]},{11:[2,12],16:23,28:24,30:[1,25],31:[1,26],32:[1,27],33:[1,28]},{9:[1,29]},o($V7,[2,16],{18:[1,30],21:[1,31],23:[1,32]}),o($V8,[2,17],{25:13,17:33,26:$V2,27:$V3}),o($V9,[2,19]),o($V9,[2,20]),{10:[1,34]},{1:[2,1]},{11:$V1,12:35,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},{6:[1,36],7:18,9:$V0},o($V6,[2,6]),o($V5,[2,8]),o($V5,[2,9]),{15:37,17:12,25:13,26:$V2,27:$V3},o($Va,[2,22],{29:38,34:[1,39]}),o($Vb,[2,23]),o($Vb,[2,24]),o($Vb,[2,25]),o($Vb,[2,26]),{26:[1,40],38:[1,41]},{19:42,26:$Vc},{19:44,26:$Vc},{19:45,26:$Vc},o($V8,[2,18]),{11:[1,46]},o($V5,[2,4]),{1:[2,2]},{11:[2,11]},o($Va,[2,21]),{19:47,26:$Vc},{9:[1,48]},{9:[1,49]},{20:[1,50]},o($Vd,[2,31],{9:[1,51],35:[1,52]}),{22:[1,53]},{24:[1,54]},o([9,11,26,27,36],[2,3]),{34:[1,55]},{9:$Ve,26:$Vf,27:$Vg,35:$Vh,37:56,38:$Vi,39:57,41:58,42:$Vj,43:$Vk},{9:$Ve,26:$Vf,27:$Vg,35:$Vh,37:66,38:$Vi,39:57,41:58,42:$Vj,43:$Vk},o($V7,[2,13]),o($Vd,[2,30],{19:67,26:$Vc}),{19:68,26:$Vc},o($V7,[2,14]),o($V7,[2,15]),o($Va,[2,27]),{11:[2,32],40:$Vl},o($Vm,[2,34],{41:70,9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,42:$Vj,43:$Vk}),o($Vn,[2,36]),o($Vn,[2,38]),o($Vn,[2,39]),o($Vn,[2,40]),o($Vn,[2,41]),o($Vn,[2,42]),o($Vn,[2,43]),o($Vn,[2,44]),{11:[2,33],40:$Vl},o($Vd,[2,28]),o($Vd,[2,29]),{9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,39:71,41:58,42:$Vj,43:$Vk},o($Vn,[2,37]),o($Vm,[2,35],{41:70,9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,42:$Vj,43:$Vk})], +defaultActions: {17:[2,1],36:[2,2],37:[2,11]}, parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); @@ -637,7 +640,7 @@ options: {}, performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { var YYSTATE=YY_START; switch($avoiding_name_collisions) { -case 0:return 32; +case 0:return 36; break; case 1:return 8; break; @@ -645,35 +648,35 @@ case 2:return 10; break; case 3:return 10; break; -case 4:return 34; +case 4:return 38; break; -case 5:return 39; +case 5:return 27; break; case 6:return 'BRKT'; break; -case 7:return 40; +case 7:return 43; break; -case 8:return 40; +case 8:return 43; break; -case 9:return 40; +case 9:return 43; break; -case 10:return 38; +case 10:return 42; break; -case 11:return 27; +case 11:return 11; break; -case 12:return 11; +case 12:return 40; break; -case 13:return 36; +case 13:return 32; break; case 14:return 30; break; -case 15:return 28; +case 15:return 31; break; -case 16:return 29; +case 16:return 33; break; -case 17:return 17; +case 17:return 26; break; -case 18:return 31; +case 18:return 34; break; case 19:return 21; break; @@ -695,7 +698,7 @@ case 27:return 6; break; } }, -rules: [/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:-)/,/^(?:;)/,/^(?:,)/,/^(?:[x])/,/^(?:>)/,/^(?:[o])/,/^(?:[a-zåäöæøA-ZÅÄÖÆØ]+)/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:\s)/,/^(?:\n)/,/^(?:$)/], +rules: [/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:==[x])/,/^(?:==>)/,/^(?:==[o])/,/^(?:===)/,/^(?:[a-zåäöæøA-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],"inclusive":true}} }); return lexer; diff --git a/dist/mermaid.slim.min.js b/dist/mermaid.slim.min.js index ead722631..b1c872780 100644 --- a/dist/mermaid.slim.min.js +++ b/dist/mermaid.slim.min.js @@ -1 +1 @@ -var parser=function(){function t(){this.yy={}}var e=function(t,e,n,s){for(n=n||{},s=t.length;s--;n[t[s]]=e);return n},n=[1,7],s=[2,10],i=[1,12],r=[1,11],a=[6,9],o=[11,17,32],l=[11,27],h=[1,37],c=[20,22,24,31],y=[17,31],u=[1,62],d=[1,57],p=[1,59],f=[1,63],g=[1,58],m=[1,60],_=[1,61],k=[1,67],x=[11,36],b=[9,11,17,27,34,36,38,39,40],v={trace:function(){},yy:{},symbols_:{error:2,expressions:3,graphConfig:4,statements:5,EOF:6,spaceList:7,GRAPH:8,SPACE:9,DIR:10,SEMI:11,statement:12,verticeStatement:13,styleStatement:14,vertex:15,link:16,ALPHA:17,SQS:18,text:19,SQE:20,PS:21,PE:22,DIAMOND_START:23,DIAMOND_STOP:24,linkStatement:25,arrowText:26,MINUS:27,ARROW_POINT:28,ARROW_CIRCLE:29,ARROW_CROSS:30,PIPE:31,STYLE:32,stylesOpt:33,HEX:34,style:35,COMMA:36,styleComponent:37,COLON:38,NUM:39,UNIT:40,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",17:"ALPHA",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",27:"MINUS",28:"ARROW_POINT",29:"ARROW_CIRCLE",30:"ARROW_CROSS",31:"PIPE",32:"STYLE",34:"HEX",36:"COMMA",38:"COLON",39:"NUM",40:"UNIT"},productions_:[0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[16,2],[16,1],[25,3],[25,3],[25,3],[25,3],[26,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[33,1],[33,3],[35,1],[35,2],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1]],performAction:function(t,e,n,s,i,r){var a=r.length-1;switch(i){case 2:this.$=r[a-3];break;case 3:console.log("In graph config"),s.setDirection(r[a-1]),this.$=r[a-1];break;case 11:console.log("In vertexStatement"),s.addLink(r[a-2],r[a],r[a-1]),this.$="oy";break;case 12:console.log("In vertexStatement ... "),this.$="yo";break;case 13:this.$=r[a-3],s.addVertex(r[a-3],r[a-1],"square");break;case 14:this.$=r[a-3],s.addVertex(r[a-3],r[a-1],"round");break;case 15:this.$=r[a-3],s.addVertex(r[a-3],r[a-1],"diamond");break;case 16:console.log("In vertex"),this.$=r[a],s.addVertex(r[a]);break;case 17:r[a-1].text=r[a],this.$=r[a-1];break;case 18:case 27:this.$=r[a];break;case 19:this.$={type:"arrow"};break;case 20:this.$={type:"arrow_circle"};break;case 21:this.$={type:"arrow_cross"};break;case 22:this.$={type:"arrow_open"};break;case 23:console.log("Nice link text here: "+r[a-1]),this.$=r[a-1];break;case 24:this.$=r[a-2]+" "+r[a];break;case 25:this.$=r[a-2]+"-"+r[a];break;case 26:this.$=r[a-1];break;case 28:this.$=r[a-4],s.addVertex(r[a-2],void 0,void 0,r[a]);break;case 29:console.log("In parser - style: "+r[a]),this.$=r[a-4],s.updateLink(r[a-2],r[a]);break;case 30:this.$=[r[a]];break;case 31:r[a-2].push(r[a]),this.$=r[a-2];break;case 32:this.$=r[a];break;case 33:this.$=r[a-1]+r[a];break;case 34:case 35:case 36:case 37:case 38:case 39:case 40:this.$=r[a]}},table:[{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:n,11:s,12:6,13:8,14:9,15:10,17:i,32:r},{9:[1,13]},{6:[1,14],7:15,9:n},{5:16,11:s,12:6,13:8,14:9,15:10,17:i,32:r},e(a,[2,5]),e(o,[2,7],{7:17,9:n}),{11:[1,18]},{11:[1,19]},{11:[2,12],16:20,25:21,27:[1,22]},{9:[1,23]},e(l,[2,16],{18:[1,24],21:[1,25],23:[1,26]}),{10:[1,27]},{1:[2,1]},{11:s,12:28,13:8,14:9,15:10,17:i,32:r},{6:[1,29],7:15,9:n},e(o,[2,6]),e(a,[2,8]),e(a,[2,9]),{15:30,17:i},{17:[2,18],26:31,31:[1,32]},{27:[1,33]},{17:[1,34],34:[1,35]},{17:h,19:36},{17:h,19:38},{17:h,19:39},{11:[1,40]},e(a,[2,4]),{1:[2,2]},{11:[2,11]},{17:[2,17]},{17:h,19:41},{27:[1,45],28:[1,42],29:[1,43],30:[1,44]},{9:[1,46]},{9:[1,47]},{20:[1,48]},e(c,[2,27],{9:[1,49],27:[1,50]}),{22:[1,51]},{24:[1,52]},e([9,11,17,32],[2,3]),{31:[1,53]},e(y,[2,19]),e(y,[2,20]),e(y,[2,21]),e(y,[2,22]),{9:u,17:d,27:p,33:54,34:f,35:55,37:56,38:g,39:m,40:_},{9:u,17:d,27:p,33:64,34:f,35:55,37:56,38:g,39:m,40:_},e(l,[2,13]),e(c,[2,26],{19:65,17:h}),{17:h,19:66},e(l,[2,14]),e(l,[2,15]),{17:[2,23]},{11:[2,28],36:k},e(x,[2,30],{37:68,9:u,17:d,27:p,34:f,38:g,39:m,40:_}),e(b,[2,32]),e(b,[2,34]),e(b,[2,35]),e(b,[2,36]),e(b,[2,37]),e(b,[2,38]),e(b,[2,39]),e(b,[2,40]),{11:[2,29],36:k},e(c,[2,24]),e(c,[2,25]),{9:u,17:d,27:p,34:f,35:69,37:56,38:g,39:m,40:_},e(b,[2,33]),e(x,[2,31],{37:68,9:u,17:d,27:p,34:f,38:g,39:m,40:_})],defaultActions:{14:[2,1],29:[2,2],30:[2,11],31:[2,17],53:[2,23]},parseError:function(t,e){if(!e.recoverable)throw new Error(t);this.trace(t)},parse:function(t){function e(){var t;return t=p.lex()||u,"number"!=typeof t&&(t=n.symbols_[t]||t),t}var n=this,s=[0],i=[null],r=[],a=this.table,o="",l=0,h=0,c=0,y=2,u=1,d=r.slice.call(arguments,1),p=Object.create(this.lexer),f={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(f.yy[g]=this.yy[g]);p.setInput(t,f.yy),f.yy.lexer=p,f.yy.parser=this,"undefined"==typeof p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var _=p.options&&p.options.ranges;this.parseError="function"==typeof f.yy.parseError?f.yy.parseError:Object.getPrototypeOf(this).parseError;for(var k,x,b,v,S,E,I,w,A,O={};;){if(b=s[s.length-1],this.defaultActions[b]?v=this.defaultActions[b]:((null===k||"undefined"==typeof k)&&(k=e()),v=a[b]&&a[b][k]),"undefined"==typeof v||!v.length||!v[0]){var $="";A=[];for(E in a[b])this.terminals_[E]&&E>y&&A.push("'"+this.terminals_[E]+"'");$=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(l+1)+": Unexpected "+(k==u?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError($,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:m,expected:A})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+k);switch(v[0]){case 1:s.push(k),i.push(p.yytext),r.push(p.yylloc),s.push(v[1]),k=null,x?(k=x,x=null):(h=p.yyleng,o=p.yytext,l=p.yylineno,m=p.yylloc,c>0&&c--);break;case 2:if(I=this.productions_[v[1]][1],O.$=i[i.length-I],O._$={first_line:r[r.length-(I||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(I||1)].first_column,last_column:r[r.length-1].last_column},_&&(O._$.range=[r[r.length-(I||1)].range[0],r[r.length-1].range[1]]),S=this.performAction.apply(O,[o,h,l,f.yy,v[1],i,r].concat(d)),"undefined"!=typeof S)return S;I&&(s=s.slice(0,-1*I*2),i=i.slice(0,-1*I),r=r.slice(0,-1*I)),s.push(this.productions_[v[1]][0]),i.push(O.$),r.push(O._$),w=a[s[s.length-2]][s[s.length-1]],s.push(w);break;case 3:return!0}}return!0}},S=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,s,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),s=t[0].match(/(?:\r\n?|\n).*/g),s&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,e,n,s;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;re[0].length)){if(e=n,s=r,this.options.backtrack_lexer){if(t=this.test_match(n,i[r]),t!==!1)return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?(t=this.test_match(e,i[s]),t!==!1?t:!1):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){var t=this.conditionStack.length-1;return t>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return t=this.conditionStack.length-1-Math.abs(t||0),t>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,s){switch(n){case 0:return 32;case 1:return 8;case 2:return 10;case 3:return 10;case 4:return 34;case 5:return 39;case 6:return"BRKT";case 7:return 40;case 8:return 40;case 9:return 40;case 10:return 38;case 11:return 27;case 12:return 11;case 13:return 36;case 14:return 30;case 15:return 28;case 16:return 29;case 17:return 17;case 18:return 31;case 19:return 21;case 20:return 22;case 21:return 18;case 22:return 20;case 23:return 23;case 24:return 24;case 25:return 9;case 26:return"NEWLINE";case 27:return 6}},rules:[/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:-)/,/^(?:;)/,/^(?:,)/,/^(?:[x])/,/^(?:>)/,/^(?:[o])/,/^(?:[a-zåäöæøA-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],inclusive:!0}}};return t}();return v.lexer=S,t.prototype=v,v.Parser=t,new t}();"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var e=require("fs").readFileSync(require("path").normalize(t[1]),"utf8");return exports.parser.parse(e)},"undefined"!=typeof module&&require.main===module&&exports.main(process.argv.slice(1)));var mermaid;"undefined"==typeof mermaid&&(mermaid={}),mermaid.vertices={},mermaid.edges=[],mermaid.graph={addVertex:function(t,e,n,s){console.log("Got node "+t+" "+n+" "+e+" styles: "+JSON.stringify(s)),"undefined"==typeof mermaid.vertices[t]&&(mermaid.vertices[t]={id:t,styles:[]}),"undefined"!=typeof e&&(mermaid.vertices[t].text=e),"undefined"!=typeof n&&(mermaid.vertices[t].type=n),"undefined"!=typeof s&&null!==s&&(console.log("Adding style: "+s),s.forEach(function(e){mermaid.vertices[t].styles.push(e)}))},getVertices:function(){return mermaid.vertices},addLink:function(t,e,n,s){var i={start:t,end:e,type:void 0,text:""},s=n.text;"undefined"!=typeof s&&(i.text=s),"undefined"!=typeof n&&(i.type=n.type),mermaid.edges.push(i)},updateLink:function(t,e){var n=t.substr(1);console.log("Got link style for "+n+" style "+e),mermaid.edges[n].style=e},setDirection:function(t){mermaid.direction=t},getEdges:function(){return mermaid.edges},clear:function(){mermaid.vertices={},mermaid.edges=[]},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}};var mermaid;"undefined"==typeof mermaid&&(mermaid={}),mermaid.addVertices=function(t,e){var n=Object.keys(t);n.forEach(function(n){var s,i=t[n];console.log(i.styles.length);var r,a="";for(r=0;r',this.drawChart(r,n)}},mermaid.init(); \ No newline at end of file +var parser=function(){function t(){this.yy={}}var e=function(t,e,s,n){for(s=s||{},n=t.length;n--;s[t[n]]=e);return s},s=[1,7],n=[2,10],i=[1,14],r=[1,15],a=[1,11],o=[6,9],l=[11,26,27,36],h=[11,30,31,32,33],c=[11,18,21,23,30,31,32,33],y=[11,18,21,23,26,27,30,31,32,33],u=[26,27],d=[26,27,34],p=[1,43],f=[20,22,24,34],g=[1,64],m=[1,59],_=[1,62],k=[1,61],x=[1,65],b=[1,60],v=[1,63],S=[1,69],E=[11,40],I=[9,11,26,27,35,38,40,42,43],w={trace:function(){},yy:{},symbols_:{error:2,expressions:3,graphConfig:4,statements:5,EOF:6,spaceList:7,GRAPH:8,SPACE:9,DIR:10,SEMI:11,statement:12,verticeStatement:13,styleStatement:14,vertex:15,link:16,alphaNum:17,SQS:18,text:19,SQE:20,PS:21,PE:22,DIAMOND_START:23,DIAMOND_STOP:24,alphaNumToken:25,ALPHA:26,NUM:27,linkStatement:28,arrowText:29,ARROW_POINT:30,ARROW_CIRCLE:31,ARROW_CROSS:32,ARROW_OPEN:33,PIPE:34,MINUS:35,STYLE:36,stylesOpt:37,HEX:38,style:39,COMMA:40,styleComponent:41,COLON:42,UNIT:43,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",26:"ALPHA",27:"NUM",30:"ARROW_POINT",31:"ARROW_CIRCLE",32:"ARROW_CROSS",33:"ARROW_OPEN",34:"PIPE",35:"MINUS",36:"STYLE",38:"HEX",40:"COMMA",42:"COLON",43:"UNIT"},productions_:[0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[17,1],[17,2],[25,1],[25,1],[16,2],[16,1],[28,1],[28,1],[28,1],[28,1],[29,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[37,1],[37,3],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]],performAction:function(t,e,s,n,i,r){var a=r.length-1;switch(i){case 2:this.$=r[a-3];break;case 3:console.log("In graph config"),n.setDirection(r[a-1]),this.$=r[a-1];break;case 11:console.log("In vertexStatement"),n.addLink(r[a-2],r[a],r[a-1]),this.$="oy";break;case 12:console.log("In vertexStatement ... "),this.$="yo";break;case 13:this.$=r[a-3],n.addVertex(r[a-3],r[a-1],"square");break;case 14:this.$=r[a-3],n.addVertex(r[a-3],r[a-1],"round");break;case 15:this.$=r[a-3],n.addVertex(r[a-3],r[a-1],"diamond");break;case 16:console.log("In vertex"),this.$=r[a],n.addVertex(r[a]);break;case 17:case 19:case 20:case 36:this.$=r[a];break;case 18:this.$=r[a-1]+""+r[a];break;case 21:r[a-1].text=r[a],this.$=r[a-1];break;case 22:case 31:this.$=r[a];break;case 23:this.$={type:"arrow"};break;case 24:this.$={type:"arrow_circle"};break;case 25:this.$={type:"arrow_cross"};break;case 26:this.$={type:"arrow_open"};break;case 27:console.log("Nice link text here: "+r[a-1]),this.$=r[a-1];break;case 28:this.$=r[a-2]+" "+r[a];break;case 29:this.$=r[a-2]+"-"+r[a];break;case 30:this.$=r[a-1];break;case 32:this.$=r[a-4],n.addVertex(r[a-2],void 0,void 0,r[a]);break;case 33:console.log("In parser - style: "+r[a]),this.$=r[a-4],n.updateLink(r[a-2],r[a]);break;case 34:this.$=[r[a]];break;case 35:r[a-2].push(r[a]),this.$=r[a-2];break;case 37:this.$=r[a-1]+r[a];break;case 38:case 39:case 40:case 41:case 42:case 43:case 44:this.$=r[a]}},table:[{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:s,11:n,12:6,13:8,14:9,15:10,17:12,25:13,26:i,27:r,36:a},{9:[1,16]},{6:[1,17],7:18,9:s},{5:19,11:n,12:6,13:8,14:9,15:10,17:12,25:13,26:i,27:r,36:a},e(o,[2,5]),e(l,[2,7],{7:20,9:s}),{11:[1,21]},{11:[1,22]},{11:[2,12],16:23,28:24,30:[1,25],31:[1,26],32:[1,27],33:[1,28]},{9:[1,29]},e(h,[2,16],{18:[1,30],21:[1,31],23:[1,32]}),e(c,[2,17],{25:13,17:33,26:i,27:r}),e(y,[2,19]),e(y,[2,20]),{10:[1,34]},{1:[2,1]},{11:n,12:35,13:8,14:9,15:10,17:12,25:13,26:i,27:r,36:a},{6:[1,36],7:18,9:s},e(l,[2,6]),e(o,[2,8]),e(o,[2,9]),{15:37,17:12,25:13,26:i,27:r},e(u,[2,22],{29:38,34:[1,39]}),e(d,[2,23]),e(d,[2,24]),e(d,[2,25]),e(d,[2,26]),{26:[1,40],38:[1,41]},{19:42,26:p},{19:44,26:p},{19:45,26:p},e(c,[2,18]),{11:[1,46]},e(o,[2,4]),{1:[2,2]},{11:[2,11]},e(u,[2,21]),{19:47,26:p},{9:[1,48]},{9:[1,49]},{20:[1,50]},e(f,[2,31],{9:[1,51],35:[1,52]}),{22:[1,53]},{24:[1,54]},e([9,11,26,27,36],[2,3]),{34:[1,55]},{9:g,26:m,27:_,35:k,37:56,38:x,39:57,41:58,42:b,43:v},{9:g,26:m,27:_,35:k,37:66,38:x,39:57,41:58,42:b,43:v},e(h,[2,13]),e(f,[2,30],{19:67,26:p}),{19:68,26:p},e(h,[2,14]),e(h,[2,15]),e(u,[2,27]),{11:[2,32],40:S},e(E,[2,34],{41:70,9:g,26:m,27:_,35:k,38:x,42:b,43:v}),e(I,[2,36]),e(I,[2,38]),e(I,[2,39]),e(I,[2,40]),e(I,[2,41]),e(I,[2,42]),e(I,[2,43]),e(I,[2,44]),{11:[2,33],40:S},e(f,[2,28]),e(f,[2,29]),{9:g,26:m,27:_,35:k,38:x,39:71,41:58,42:b,43:v},e(I,[2,37]),e(E,[2,35],{41:70,9:g,26:m,27:_,35:k,38:x,42:b,43:v})],defaultActions:{17:[2,1],36:[2,2],37:[2,11]},parseError:function(t,e){if(!e.recoverable)throw new Error(t);this.trace(t)},parse:function(t){function e(){var t;return t=p.lex()||u,"number"!=typeof t&&(t=s.symbols_[t]||t),t}var s=this,n=[0],i=[null],r=[],a=this.table,o="",l=0,h=0,c=0,y=2,u=1,d=r.slice.call(arguments,1),p=Object.create(this.lexer),f={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(f.yy[g]=this.yy[g]);p.setInput(t,f.yy),f.yy.lexer=p,f.yy.parser=this,"undefined"==typeof p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var _=p.options&&p.options.ranges;this.parseError="function"==typeof f.yy.parseError?f.yy.parseError:Object.getPrototypeOf(this).parseError;for(var k,x,b,v,S,E,I,w,A,O={};;){if(b=n[n.length-1],this.defaultActions[b]?v=this.defaultActions[b]:((null===k||"undefined"==typeof k)&&(k=e()),v=a[b]&&a[b][k]),"undefined"==typeof v||!v.length||!v[0]){var $="";A=[];for(E in a[b])this.terminals_[E]&&E>y&&A.push("'"+this.terminals_[E]+"'");$=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(l+1)+": Unexpected "+(k==u?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError($,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:m,expected:A})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+k);switch(v[0]){case 1:n.push(k),i.push(p.yytext),r.push(p.yylloc),n.push(v[1]),k=null,x?(k=x,x=null):(h=p.yyleng,o=p.yytext,l=p.yylineno,m=p.yylloc,c>0&&c--);break;case 2:if(I=this.productions_[v[1]][1],O.$=i[i.length-I],O._$={first_line:r[r.length-(I||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(I||1)].first_column,last_column:r[r.length-1].last_column},_&&(O._$.range=[r[r.length-(I||1)].range[0],r[r.length-1].range[1]]),S=this.performAction.apply(O,[o,h,l,f.yy,v[1],i,r].concat(d)),"undefined"!=typeof S)return S;I&&(n=n.slice(0,-1*I*2),i=i.slice(0,-1*I),r=r.slice(0,-1*I)),n.push(this.productions_[v[1]][0]),i.push(O.$),r.push(O._$),w=a[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},A=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===n.length?this.yylloc.first_column:0)+n[n.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var s,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),n=t[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,e,s,n;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;re[0].length)){if(e=s,n=r,this.options.backtrack_lexer){if(t=this.test_match(s,i[r]),t!==!1)return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?(t=this.test_match(e,i[n]),t!==!1?t:!1):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){var t=this.conditionStack.length-1;return t>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return t=this.conditionStack.length-1-Math.abs(t||0),t>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,s,n){switch(s){case 0:return 36;case 1:return 8;case 2:return 10;case 3:return 10;case 4:return 38;case 5:return 27;case 6:return"BRKT";case 7:return 43;case 8:return 43;case 9:return 43;case 10:return 42;case 11:return 11;case 12:return 40;case 13:return 32;case 14:return 30;case 15:return 31;case 16:return 33;case 17:return 26;case 18:return 34;case 19:return 21;case 20:return 22;case 21:return 18;case 22:return 20;case 23:return 23;case 24:return 24;case 25:return 9;case 26:return"NEWLINE";case 27:return 6}},rules:[/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:==[x])/,/^(?:==>)/,/^(?:==[o])/,/^(?:===)/,/^(?:[a-zåäöæøA-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],inclusive:!0}}};return t}();return w.lexer=A,t.prototype=w,w.Parser=t,new t}();"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var e=require("fs").readFileSync(require("path").normalize(t[1]),"utf8");return exports.parser.parse(e)},"undefined"!=typeof module&&require.main===module&&exports.main(process.argv.slice(1)));var mermaid;"undefined"==typeof mermaid&&(mermaid={}),mermaid.vertices={},mermaid.edges=[],mermaid.graph={addVertex:function(t,e,s,n){console.log("Got node "+t+" "+s+" "+e+" styles: "+JSON.stringify(n)),"undefined"==typeof mermaid.vertices[t]&&(mermaid.vertices[t]={id:t,styles:[]}),"undefined"!=typeof e&&(mermaid.vertices[t].text=e),"undefined"!=typeof s&&(mermaid.vertices[t].type=s),"undefined"!=typeof n&&null!==n&&(console.log("Adding style: "+n),n.forEach(function(e){mermaid.vertices[t].styles.push(e)}))},getVertices:function(){return mermaid.vertices},addLink:function(t,e,s,n){var i={start:t,end:e,type:void 0,text:""},n=s.text;"undefined"!=typeof n&&(i.text=n),"undefined"!=typeof s&&(i.type=s.type),mermaid.edges.push(i)},updateLink:function(t,e){var s=t.substr(1);console.log("Got link style for "+s+" style "+e),mermaid.edges[s].style=e},setDirection:function(t){mermaid.direction=t},getEdges:function(){return mermaid.edges},clear:function(){mermaid.vertices={},mermaid.edges=[]},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}};var mermaid;"undefined"==typeof mermaid&&(mermaid={}),mermaid.addVertices=function(t,e){var s=Object.keys(t);s.forEach(function(s){var n,i=t[s];console.log(i.styles.length);var r,a="";for(r=0;r',this.drawChart(r,s)}},mermaid.init(); \ No newline at end of file diff --git a/src/parser/flow.jison b/src/parser/flow.jison index 9fec4c066..b50a089f7 100644 --- a/src/parser/flow.jison +++ b/src/parser/flow.jison @@ -15,13 +15,13 @@ "pt" return 'UNIT'; "dot" return 'UNIT'; ":" return 'COLON'; -\- return 'MINUS'; ";" return 'SEMI'; "," return 'COMMA'; -[x] return 'ARROW_CROSS'; -">" return 'ARROW_POINT'; -[o] return 'ARROW_CIRCLE'; -[a-zåäöæøA-ZÅÄÖÆØ]+ return 'ALPHA'; +\=\=[x] return 'ARROW_CROSS'; +\=\=\> return 'ARROW_POINT'; +\=\=[o] return 'ARROW_CIRCLE'; +\=\=\= return 'ARROW_OPEN'; +[a-zåäöæøA-ZÅÄÖÆØ\-]+ return 'ALPHA'; "|" return 'PIPE'; "(" return 'PS'; ")" return 'PE'; @@ -105,13 +105,13 @@ link: linkStatement arrowText {$$ = $1;} ; -linkStatement: MINUS MINUS ARROW_POINT +linkStatement: ARROW_POINT {$$ = {"type":"arrow"};} - | MINUS MINUS ARROW_CIRCLE + | ARROW_CIRCLE {$$ = {"type":"arrow_circle"};} - | MINUS MINUS ARROW_CROSS + | ARROW_CROSS {$$ = {"type":"arrow_cross"};} - | MINUS MINUS MINUS + | ARROW_OPEN {$$ = {"type":"arrow_open"};} ; diff --git a/src/parser/flow.js b/src/parser/flow.js index 4219658a2..d6c4161da 100644 --- a/src/parser/flow.js +++ b/src/parser/flow.js @@ -72,12 +72,12 @@ } */ 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,7],$V1=[2,10],$V2=[1,14],$V3=[1,15],$V4=[1,11],$V5=[6,9],$V6=[11,26,27,35],$V7=[11,30],$V8=[11,18,21,23,30],$V9=[11,18,21,23,26,27,30],$Va=[26,27],$Vb=[1,41],$Vc=[20,22,24,34],$Vd=[26,27,34],$Ve=[1,66],$Vf=[1,61],$Vg=[1,64],$Vh=[1,63],$Vi=[1,67],$Vj=[1,62],$Vk=[1,65],$Vl=[1,71],$Vm=[11,39],$Vn=[9,11,26,27,30,37,39,41,42]; +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,7],$V1=[2,10],$V2=[1,14],$V3=[1,15],$V4=[1,11],$V5=[6,9],$V6=[11,26,27,36],$V7=[11,30,31,32,33],$V8=[11,18,21,23,30,31,32,33],$V9=[11,18,21,23,26,27,30,31,32,33],$Va=[26,27],$Vb=[26,27,34],$Vc=[1,43],$Vd=[20,22,24,34],$Ve=[1,64],$Vf=[1,59],$Vg=[1,62],$Vh=[1,61],$Vi=[1,65],$Vj=[1,60],$Vk=[1,63],$Vl=[1,69],$Vm=[11,40],$Vn=[9,11,26,27,35,38,40,42,43]; var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"expressions":3,"graphConfig":4,"statements":5,"EOF":6,"spaceList":7,"GRAPH":8,"SPACE":9,"DIR":10,"SEMI":11,"statement":12,"verticeStatement":13,"styleStatement":14,"vertex":15,"link":16,"alphaNum":17,"SQS":18,"text":19,"SQE":20,"PS":21,"PE":22,"DIAMOND_START":23,"DIAMOND_STOP":24,"alphaNumToken":25,"ALPHA":26,"NUM":27,"linkStatement":28,"arrowText":29,"MINUS":30,"ARROW_POINT":31,"ARROW_CIRCLE":32,"ARROW_CROSS":33,"PIPE":34,"STYLE":35,"stylesOpt":36,"HEX":37,"style":38,"COMMA":39,"styleComponent":40,"COLON":41,"UNIT":42,"$accept":0,"$end":1}, -terminals_: {2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",26:"ALPHA",27:"NUM",30:"MINUS",31:"ARROW_POINT",32:"ARROW_CIRCLE",33:"ARROW_CROSS",34:"PIPE",35:"STYLE",37:"HEX",39:"COMMA",41:"COLON",42:"UNIT"}, -productions_: [0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[17,1],[17,2],[25,1],[25,1],[16,2],[16,1],[28,3],[28,3],[28,3],[28,3],[29,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[36,1],[36,3],[38,1],[38,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]], +symbols_: {"error":2,"expressions":3,"graphConfig":4,"statements":5,"EOF":6,"spaceList":7,"GRAPH":8,"SPACE":9,"DIR":10,"SEMI":11,"statement":12,"verticeStatement":13,"styleStatement":14,"vertex":15,"link":16,"alphaNum":17,"SQS":18,"text":19,"SQE":20,"PS":21,"PE":22,"DIAMOND_START":23,"DIAMOND_STOP":24,"alphaNumToken":25,"ALPHA":26,"NUM":27,"linkStatement":28,"arrowText":29,"ARROW_POINT":30,"ARROW_CIRCLE":31,"ARROW_CROSS":32,"ARROW_OPEN":33,"PIPE":34,"MINUS":35,"STYLE":36,"stylesOpt":37,"HEX":38,"style":39,"COMMA":40,"styleComponent":41,"COLON":42,"UNIT":43,"$accept":0,"$end":1}, +terminals_: {2:"error",6:"EOF",8:"GRAPH",9:"SPACE",10:"DIR",11:"SEMI",18:"SQS",20:"SQE",21:"PS",22:"PE",23:"DIAMOND_START",24:"DIAMOND_STOP",26:"ALPHA",27:"NUM",30:"ARROW_POINT",31:"ARROW_CIRCLE",32:"ARROW_CROSS",33:"ARROW_OPEN",34:"PIPE",35:"MINUS",36:"STYLE",38:"HEX",40:"COMMA",42:"COLON",43:"UNIT"}, +productions_: [0,[3,3],[3,4],[4,4],[5,3],[5,1],[7,2],[7,1],[12,2],[12,2],[13,0],[13,3],[13,1],[15,4],[15,4],[15,4],[15,1],[17,1],[17,2],[25,1],[25,1],[16,2],[16,1],[28,1],[28,1],[28,1],[28,1],[29,3],[19,3],[19,3],[19,2],[19,1],[14,5],[14,5],[37,1],[37,3],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -163,8 +163,8 @@ this.$=$$[$0] break; } }, -table: [{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:$V0,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,35:$V4},{9:[1,16]},{6:[1,17],7:18,9:$V0},{5:19,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,35:$V4},o($V5,[2,5]),o($V6,[2,7],{7:20,9:$V0}),{11:[1,21]},{11:[1,22]},{11:[2,12],16:23,28:24,30:[1,25]},{9:[1,26]},o($V7,[2,16],{18:[1,27],21:[1,28],23:[1,29]}),o($V8,[2,17],{25:13,17:30,26:$V2,27:$V3}),o($V9,[2,19]),o($V9,[2,20]),{10:[1,31]},{1:[2,1]},{11:$V1,12:32,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,35:$V4},{6:[1,33],7:18,9:$V0},o($V6,[2,6]),o($V5,[2,8]),o($V5,[2,9]),{15:34,17:12,25:13,26:$V2,27:$V3},o($Va,[2,22],{29:35,34:[1,36]}),{30:[1,37]},{26:[1,38],37:[1,39]},{19:40,26:$Vb},{19:42,26:$Vb},{19:43,26:$Vb},o($V8,[2,18]),{11:[1,44]},o($V5,[2,4]),{1:[2,2]},{11:[2,11]},o($Va,[2,21]),{19:45,26:$Vb},{30:[1,49],31:[1,46],32:[1,47],33:[1,48]},{9:[1,50]},{9:[1,51]},{20:[1,52]},o($Vc,[2,31],{9:[1,53],30:[1,54]}),{22:[1,55]},{24:[1,56]},o([9,11,26,27,35],[2,3]),{34:[1,57]},o($Vd,[2,23]),o($Vd,[2,24]),o($Vd,[2,25]),o($Vd,[2,26]),{9:$Ve,26:$Vf,27:$Vg,30:$Vh,36:58,37:$Vi,38:59,40:60,41:$Vj,42:$Vk},{9:$Ve,26:$Vf,27:$Vg,30:$Vh,36:68,37:$Vi,38:59,40:60,41:$Vj,42:$Vk},o($V7,[2,13]),o($Vc,[2,30],{19:69,26:$Vb}),{19:70,26:$Vb},o($V7,[2,14]),o($V7,[2,15]),o($Va,[2,27]),{11:[2,32],39:$Vl},o($Vm,[2,34],{40:72,9:$Ve,26:$Vf,27:$Vg,30:$Vh,37:$Vi,41:$Vj,42:$Vk}),o($Vn,[2,36]),o($Vn,[2,38]),o($Vn,[2,39]),o($Vn,[2,40]),o($Vn,[2,41]),o($Vn,[2,42]),o($Vn,[2,43]),o($Vn,[2,44]),{11:[2,33],39:$Vl},o($Vc,[2,28]),o($Vc,[2,29]),{9:$Ve,26:$Vf,27:$Vg,30:$Vh,37:$Vi,38:73,40:60,41:$Vj,42:$Vk},o($Vn,[2,37]),o($Vm,[2,35],{40:72,9:$Ve,26:$Vf,27:$Vg,30:$Vh,37:$Vi,41:$Vj,42:$Vk})], -defaultActions: {17:[2,1],33:[2,2],34:[2,11]}, +table: [{3:1,4:2,8:[1,3]},{1:[3]},{5:4,7:5,9:$V0,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},{9:[1,16]},{6:[1,17],7:18,9:$V0},{5:19,11:$V1,12:6,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},o($V5,[2,5]),o($V6,[2,7],{7:20,9:$V0}),{11:[1,21]},{11:[1,22]},{11:[2,12],16:23,28:24,30:[1,25],31:[1,26],32:[1,27],33:[1,28]},{9:[1,29]},o($V7,[2,16],{18:[1,30],21:[1,31],23:[1,32]}),o($V8,[2,17],{25:13,17:33,26:$V2,27:$V3}),o($V9,[2,19]),o($V9,[2,20]),{10:[1,34]},{1:[2,1]},{11:$V1,12:35,13:8,14:9,15:10,17:12,25:13,26:$V2,27:$V3,36:$V4},{6:[1,36],7:18,9:$V0},o($V6,[2,6]),o($V5,[2,8]),o($V5,[2,9]),{15:37,17:12,25:13,26:$V2,27:$V3},o($Va,[2,22],{29:38,34:[1,39]}),o($Vb,[2,23]),o($Vb,[2,24]),o($Vb,[2,25]),o($Vb,[2,26]),{26:[1,40],38:[1,41]},{19:42,26:$Vc},{19:44,26:$Vc},{19:45,26:$Vc},o($V8,[2,18]),{11:[1,46]},o($V5,[2,4]),{1:[2,2]},{11:[2,11]},o($Va,[2,21]),{19:47,26:$Vc},{9:[1,48]},{9:[1,49]},{20:[1,50]},o($Vd,[2,31],{9:[1,51],35:[1,52]}),{22:[1,53]},{24:[1,54]},o([9,11,26,27,36],[2,3]),{34:[1,55]},{9:$Ve,26:$Vf,27:$Vg,35:$Vh,37:56,38:$Vi,39:57,41:58,42:$Vj,43:$Vk},{9:$Ve,26:$Vf,27:$Vg,35:$Vh,37:66,38:$Vi,39:57,41:58,42:$Vj,43:$Vk},o($V7,[2,13]),o($Vd,[2,30],{19:67,26:$Vc}),{19:68,26:$Vc},o($V7,[2,14]),o($V7,[2,15]),o($Va,[2,27]),{11:[2,32],40:$Vl},o($Vm,[2,34],{41:70,9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,42:$Vj,43:$Vk}),o($Vn,[2,36]),o($Vn,[2,38]),o($Vn,[2,39]),o($Vn,[2,40]),o($Vn,[2,41]),o($Vn,[2,42]),o($Vn,[2,43]),o($Vn,[2,44]),{11:[2,33],40:$Vl},o($Vd,[2,28]),o($Vd,[2,29]),{9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,39:71,41:58,42:$Vj,43:$Vk},o($Vn,[2,37]),o($Vm,[2,35],{41:70,9:$Ve,26:$Vf,27:$Vg,35:$Vh,38:$Vi,42:$Vj,43:$Vk})], +defaultActions: {17:[2,1],36:[2,2],37:[2,11]}, parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); @@ -640,7 +640,7 @@ options: {}, performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { var YYSTATE=YY_START; switch($avoiding_name_collisions) { -case 0:return 35; +case 0:return 36; break; case 1:return 8; break; @@ -648,31 +648,31 @@ case 2:return 10; break; case 3:return 10; break; -case 4:return 37; +case 4:return 38; break; case 5:return 27; break; case 6:return 'BRKT'; break; -case 7:return 42; +case 7:return 43; break; -case 8:return 42; +case 8:return 43; break; -case 9:return 42; +case 9:return 43; break; -case 10:return 41; +case 10:return 42; break; -case 11:return 30; +case 11:return 11; break; -case 12:return 11; +case 12:return 40; break; -case 13:return 39; +case 13:return 32; break; -case 14:return 33; +case 14:return 30; break; case 15:return 31; break; -case 16:return 32; +case 16:return 33; break; case 17:return 26; break; @@ -698,7 +698,7 @@ case 27:return 6; break; } }, -rules: [/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:-)/,/^(?:;)/,/^(?:,)/,/^(?:[x])/,/^(?:>)/,/^(?:[o])/,/^(?:[a-zåäöæøA-ZÅÄÖÆØ]+)/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:\s)/,/^(?:\n)/,/^(?:$)/], +rules: [/^(?:style\b)/,/^(?:graph\b)/,/^(?:LR\b)/,/^(?:TD\b)/,/^(?:#[a-f0-9]+)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?:px\b)/,/^(?:pt\b)/,/^(?:dot\b)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:==[x])/,/^(?:==>)/,/^(?:==[o])/,/^(?:===)/,/^(?:[a-zåäöæøA-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],"inclusive":true}} }); return lexer; diff --git a/src/parser/flow.spec.js b/src/parser/flow.spec.js index 3f2b24946..04893bae5 100644 --- a/src/parser/flow.spec.js +++ b/src/parser/flow.spec.js @@ -12,7 +12,7 @@ describe('when parsing ',function(){ }); it('should handle a nodes and edges',function(){ - var res = parser.parse('graph TD;A-->B;'); + var res = parser.parse('graph TD;A==>B;'); var vert = parser.yy.getVertices(); @@ -28,7 +28,7 @@ describe('when parsing ',function(){ }); it('should handle open ended edges',function(){ - var res = parser.parse('graph TD;A---B;'); + var res = parser.parse('graph TD;A===B;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -38,7 +38,7 @@ describe('when parsing ',function(){ }); it('should handle cross ended edges',function(){ - var res = parser.parse('graph TD;A--xB;'); + var res = parser.parse('graph TD;A==xB;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -48,7 +48,7 @@ describe('when parsing ',function(){ }); it('should handle open ended edges',function(){ - var res = parser.parse('graph TD;A--oB;'); + var res = parser.parse('graph TD;A==oB;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -58,7 +58,7 @@ describe('when parsing ',function(){ }); it('should handle text on edges without space',function(){ - var res = parser.parse('graph TD;A--x|textNoSpace|B;'); + var res = parser.parse('graph TD;A==x|textNoSpace|B;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -68,7 +68,7 @@ describe('when parsing ',function(){ }); it('should handle text on edges with space',function(){ - var res = parser.parse('graph TD;A--x|text including space|B;'); + var res = parser.parse('graph TD;A==x|text including space|B;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -78,7 +78,7 @@ describe('when parsing ',function(){ }); it('should handle multi-line text',function(){ - var res = parser.parse('graph TD;A--o|text space|B;\n B-->|more text with space|C;'); + var res = parser.parse('graph TD;A==o|text space|B;\n B==>|more text with space|C;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -98,7 +98,7 @@ describe('when parsing ',function(){ }); it('should handle text in vertices with space',function(){ - var res = parser.parse('graph TD;A[chimpansen hoppar]-->C;'); + var res = parser.parse('graph TD;A[chimpansen hoppar]==>C;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -108,7 +108,7 @@ describe('when parsing ',function(){ }); it('should handle text in vertices with space',function(){ - var res = parser.parse('graph TD;A(chimpansen hoppar)-->C;'); + var res = parser.parse('graph TD;A(chimpansen hoppar)==>C;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -118,7 +118,7 @@ describe('when parsing ',function(){ }); it('should handle text in vertices with space',function(){ - var res = parser.parse('graph TD;A{chimpansen hoppar}-->C;'); + var res = parser.parse('graph TD;A{chimpansen hoppar}==>C;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -127,7 +127,7 @@ describe('when parsing ',function(){ expect(vert['A'].text).toBe('chimpansen hoppar'); }); it('should handle text in vertices with space',function(){ - var res = parser.parse('graph TD;A-->C{Chimpansen hoppar};'); + var res = parser.parse('graph TD;A==>C{Chimpansen hoppar};'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -137,7 +137,7 @@ describe('when parsing ',function(){ }); it('should handle text in vertices with åäö and minus',function(){ - var res = parser.parse('graph TD;A-->C{Chimpansen hoppar åäö-ÅÄÖ};'); + var res = parser.parse('graph TD;A==>C{Chimpansen hoppar åäö-ÅÄÖ};'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); @@ -191,7 +191,7 @@ describe('when parsing ',function(){ //console.log(parser.parse('graph TD;style Q background:#fff;')); it('should handle styles for edges',function(){ - var res = parser.parse('graph TD;a-->b;\nstyle #0 stroke: #f66;'); + var res = parser.parse('graph TD;a==>b;\nstyle #0 stroke: #f66;'); var edges = parser.yy.getEdges(); @@ -223,7 +223,7 @@ describe('when parsing ',function(){ }); it('should handle styles and graph definitons in a graph',function(){ - var res = parser.parse('graph TD;S-->T;\nstyle S background:#aaa;\nstyle T background:#bbb,border:1px solid red;'); + var res = parser.parse('graph TD;S==>T;\nstyle S background:#aaa;\nstyle T background:#bbb,border:1px solid red;'); var vert = parser.yy.getVertices(); var edges = parser.yy.getEdges(); diff --git a/test/web.html b/test/web.html index a316ffee8..f5f39ff61 100644 --- a/test/web.html +++ b/test/web.html @@ -31,24 +31,24 @@
- graph TD;A(Astrid)-->B[Irene]; - A-->C[Christer]; - B-->D[Micke]; - B-->E[Maria]; - E-->F[Hjalte]; - E-->G[Embla]; - E-->J[Vidar]; - E-->H[Bjarke]; - E-->I[Ingvild]; + graph TD;A(Astrid)==>B[Irene]; + A==>C[Christer]; + B==>D[Micke]; + B==>E[Maria]; + E==>F[Hjalte]; + E==>G[Embla]; + E==>J[Vidar]; + E==>H[Bjarke]; + E==>I[Ingvild];
graph TD; - a[Lasa bok]-->b; - b{Fundera}-->|Klocka|c(Vidar); - b-->|Lego text|d(Bjarke går); - e(Orphan); + eag-book[Läsa bok]==>b; + b{Fundera}==>|Klocka|c(Vidar); + b==>|Lego text|d(Bjarke går); + e(orphan); - style a fill:#6ff,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5; + style eag-book fill:#6ff,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5; style #2 stroke:#0f0;