Options are working.

This commit is contained in:
Raghu Rajagopalan
2016-04-01 20:01:46 +05:30
parent a92e116a21
commit 59ef2b0d4f
7 changed files with 215 additions and 107 deletions

View File

@@ -53482,6 +53482,21 @@ function isReachableFrom(currentCommit, otherCommit) {
exports.setDirection = function (dir) { exports.setDirection = function (dir) {
direction = dir; direction = dir;
}; };
var options = {};
exports.setOptions = function (rawOptString) {
log.debug("options str", rawOptString);
rawOptString = rawOptString && rawOptString.trim();
rawOptString = rawOptString || "{}";
try {
options = JSON.parse(rawOptString);
} catch (e) {
log.error("error while parsing gitGraph options", e.message);
}
};
exports.getOptions = function () {
return options;
};
exports.commit = function (msg) { exports.commit = function (msg) {
var commit = { id: getId(), var commit = { id: getId(),
@@ -53640,7 +53655,10 @@ var config = {
lineColor: "grey", lineColor: "grey",
leftMargin: 50 leftMargin: 50
}; };
exports.setConf = function (config) {}; var apiConfig = {};
exports.setConf = function (c) {
apiConfig = c;
};
function svgCreateDefs(svg) { function svgCreateDefs(svg) {
svg.append("defs").append("g").attr("id", "def-commit").append("circle").attr("r", 15).attr("cx", 0).attr("cy", 0); svg.append("defs").append("g").attr("id", "def-commit").append("circle").attr("r", 15).attr("cx", 0).attr("cy", 0);
@@ -53763,6 +53781,9 @@ exports.draw = function (txt, id, ver) {
log.debug('in gitgraph renderer', txt, id, ver); log.debug('in gitgraph renderer', txt, id, ver);
// Parse the graph definition // Parse the graph definition
parser.parse(txt + "\n"); parser.parse(txt + "\n");
config = _.extend(config, apiConfig, db.getOptions());
log.debug("effective options", config);
var direction = db.getDirection(); var direction = db.getDirection();
allCommitsDict = db.getCommits(); allCommitsDict = db.getCommits();
var branches = db.getBranchesAsObjArray(); var branches = db.getBranchesAsObjArray();
@@ -53864,21 +53885,17 @@ var gitGraph = (function () {
var o = function o(k, v, _o, l) { var o = function o(k, v, _o, l) {
for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v);return _o; for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v);return _o;
}, },
$V0 = [7, 11, 12, 14, 16, 17, 18], $V0 = [2, 3],
$V1 = [2, 3], $V1 = [1, 7],
$V2 = [1, 10], $V2 = [7, 12, 15, 17, 19, 20, 21],
$V3 = [1, 11], $V3 = [7, 11, 12, 15, 17, 19, 20, 21];
$V4 = [1, 12],
$V5 = [1, 13],
$V6 = [1, 14],
$V7 = [1, 15];
var parser = { trace: function trace() { var parser = { trace: function trace() {
Jison.print.apply(null, arguments); Jison.print.apply(null, arguments);
}, },
yy: {}, yy: {},
symbols_: { "error": 2, "start": 3, "GG": 4, ":": 5, "document": 6, "EOF": 7, "DIR": 8, "line": 9, "statement": 10, "NL": 11, "COMMIT": 12, "commit_arg": 13, "BRANCH": 14, "ID": 15, "CHECKOUT": 16, "MERGE": 17, "RESET": 18, "reset_arg": 19, "STR": 20, "HEAD": 21, "$accept": 0, "$end": 1 }, symbols_: { "error": 2, "start": 3, "GG": 4, ":": 5, "document": 6, "EOF": 7, "DIR": 8, "options": 9, "body": 10, "OPT": 11, "NL": 12, "line": 13, "statement": 14, "COMMIT": 15, "commit_arg": 16, "BRANCH": 17, "ID": 18, "CHECKOUT": 19, "MERGE": 20, "RESET": 21, "reset_arg": 22, "STR": 23, "HEAD": 24, "$accept": 0, "$end": 1 },
terminals_: { 2: "error", 4: "GG", 5: ":", 7: "EOF", 8: "DIR", 11: "NL", 12: "COMMIT", 14: "BRANCH", 15: "ID", 16: "CHECKOUT", 17: "MERGE", 18: "RESET", 20: "STR", 21: "HEAD" }, terminals_: { 2: "error", 4: "GG", 5: ":", 7: "EOF", 8: "DIR", 11: "OPT", 12: "NL", 15: "COMMIT", 17: "BRANCH", 18: "ID", 19: "CHECKOUT", 20: "MERGE", 21: "RESET", 23: "STR", 24: "HEAD" },
productions_: [0, [3, 4], [3, 5], [6, 0], [6, 2], [9, 2], [9, 1], [10, 2], [10, 2], [10, 2], [10, 2], [10, 2], [13, 0], [13, 1], [19, 1], [19, 1]], productions_: [0, [3, 4], [3, 5], [6, 0], [6, 2], [9, 2], [9, 1], [10, 0], [10, 2], [13, 2], [13, 1], [14, 2], [14, 2], [14, 2], [14, 2], [14, 2], [16, 0], [16, 1], [22, 1], [22, 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 */
@@ -53890,40 +53907,46 @@ var gitGraph = (function () {
case 2: case 2:
yy.setDirection($$[$0 - 3]);return $$[$0 - 1]; yy.setDirection($$[$0 - 3]);return $$[$0 - 1];
break; break;
case 3:
this.$ = [];
break;
case 4: case 4:
$$[$0 - 1].push($$[$0]);this.$ = $$[$0 - 1]; yy.setOptions($$[$0 - 1]);this.$ = $$[$0];
break; break;
case 5: case 5:
this.$ = $$[$0 - 1]; $$[$0 - 1] += $$[$0];this.$ = $$[$0 - 1];
break; break;
case 7: case 7:
yy.commit($$[$0]); this.$ = [];
break; break;
case 8: case 8:
yy.branch($$[$0]); $$[$0 - 1].push($$[$0]);this.$ = $$[$0 - 1];
break; break;
case 9: case 9:
yy.checkout($$[$0]); this.$ = $$[$0 - 1];
break;
case 10:
yy.merge($$[$0]);
break; break;
case 11: case 11:
yy.reset($$[$0]); yy.commit($$[$0]);
break; break;
case 12: case 12:
this.$ = ""; yy.branch($$[$0]);
break; break;
case 13: case 13:
yy.checkout($$[$0]);
break;
case 14:
yy.merge($$[$0]);
break;
case 15:
yy.reset($$[$0]);
break;
case 16:
this.$ = "";
break;
case 17:
this.$ = $$[$0]; this.$ = $$[$0];
break; break;
} }
}, },
table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, { 5: [1, 3], 8: [1, 4] }, o($V0, $V1, { 6: 5 }), { 5: [1, 6] }, { 7: [1, 7], 9: 8, 10: 9, 11: $V2, 12: $V3, 14: $V4, 16: $V5, 17: $V6, 18: $V7 }, o($V0, $V1, { 6: 16 }), { 1: [2, 1] }, o($V0, [2, 4]), { 11: [1, 17] }, o($V0, [2, 6]), { 11: [2, 12], 13: 18, 20: [1, 19] }, { 15: [1, 20] }, { 15: [1, 21] }, { 15: [1, 22] }, { 15: [1, 25], 19: 23, 21: [1, 24] }, { 7: [1, 26], 9: 8, 10: 9, 11: $V2, 12: $V3, 14: $V4, 16: $V5, 17: $V6, 18: $V7 }, o($V0, [2, 5]), { 11: [2, 7] }, { 11: [2, 13] }, { 11: [2, 8] }, { 11: [2, 9] }, { 11: [2, 10] }, { 11: [2, 11] }, { 11: [2, 14] }, { 11: [2, 15] }, { 1: [2, 2] }], table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, { 5: [1, 3], 8: [1, 4] }, { 6: 5, 7: $V0, 9: 6, 12: $V1 }, { 5: [1, 8] }, { 7: [1, 9] }, o($V2, [2, 7], { 10: 10, 11: [1, 11] }), o($V3, [2, 6]), { 6: 12, 7: $V0, 9: 6, 12: $V1 }, { 1: [2, 1] }, { 7: [2, 4], 12: [1, 15], 13: 13, 14: 14, 15: [1, 16], 17: [1, 17], 19: [1, 18], 20: [1, 19], 21: [1, 20] }, o($V3, [2, 5]), { 7: [1, 21] }, o($V2, [2, 8]), { 12: [1, 22] }, o($V2, [2, 10]), { 12: [2, 16], 16: 23, 23: [1, 24] }, { 18: [1, 25] }, { 18: [1, 26] }, { 18: [1, 27] }, { 18: [1, 30], 22: 28, 24: [1, 29] }, { 1: [2, 2] }, o($V2, [2, 9]), { 12: [2, 11] }, { 12: [2, 17] }, { 12: [2, 12] }, { 12: [2, 13] }, { 12: [2, 14] }, { 12: [2, 15] }, { 12: [2, 18] }, { 12: [2, 19] }],
defaultActions: { 7: [2, 1], 18: [2, 7], 19: [2, 13], 20: [2, 8], 21: [2, 9], 22: [2, 10], 23: [2, 11], 24: [2, 14], 25: [2, 15], 26: [2, 2] }, defaultActions: { 9: [2, 1], 21: [2, 2], 23: [2, 11], 24: [2, 17], 25: [2, 12], 26: [2, 13], 27: [2, 14], 28: [2, 15], 29: [2, 18], 30: [2, 19] },
parseError: function parseError(str, hash) { parseError: function parseError(str, hash) {
if (hash.recoverable) { if (hash.recoverable) {
this.trace(str); this.trace(str);
@@ -54402,7 +54425,7 @@ var gitGraph = (function () {
var YYSTATE = YY_START; var YYSTATE = YY_START;
switch ($avoiding_name_collisions) { switch ($avoiding_name_collisions) {
case 0: case 0:
return 11; return 12;
break; break;
case 1: case 1:
/* skip all whitespace */ /* skip all whitespace */
@@ -54417,19 +54440,19 @@ var gitGraph = (function () {
return 4; return 4;
break; break;
case 5: case 5:
return 12; return 15;
break; break;
case 6: case 6:
return 14;
break;
case 7:
return 17; return 17;
break; break;
case 7:
return 20;
break;
case 8: case 8:
return 18; return 21;
break; break;
case 9: case 9:
return 16; return 19;
break; break;
case 10: case 10:
return 8; return 8;
@@ -54444,24 +54467,33 @@ var gitGraph = (function () {
return 5; return 5;
break; break;
case 14: case 14:
this.begin("string"); this.begin("options");
break; break;
case 15: case 15:
this.popState(); this.popState();
break; break;
case 16: case 16:
return 20; return 11;
break; break;
case 17: case 17:
return 15; this.begin("string");
break; break;
case 18: case 18:
this.popState();
break;
case 19:
return 23;
break;
case 20:
return 18;
break;
case 21:
return 7; return 7;
break; break;
} }
}, },
rules: [/^(?:[\n|\r\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gitGraph\b)/i, /^(?:commit\b)/i, /^(?:branch\b)/i, /^(?:merge\b)/i, /^(?:reset\b)/i, /^(?:checkout\b)/i, /^(?:LR\b)/i, /^(?:TB\b)/i, /^(?:BT\b)/i, /^(?::)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[a-zA-Z][a-zA-Z0-9_]+)/i, /^(?:$)/i], rules: [/^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gitGraph\b)/i, /^(?:commit\b)/i, /^(?:branch\b)/i, /^(?:merge\b)/i, /^(?:reset\b)/i, /^(?:checkout\b)/i, /^(?:LR\b)/i, /^(?:TB\b)/i, /^(?:BT\b)/i, /^(?::)/i, /^(?:options\r?\n)/i, /^(?:end\r?\n)/i, /^(?:[^\n]+\r?\n)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[a-zA-Z][a-zA-Z0-9_]+)/i, /^(?:$)/i],
conditions: { "string": { "rules": [15, 16], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18], "inclusive": true } } conditions: { "options": { "rules": [15, 16], "inclusive": false }, "string": { "rules": [18, 19], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21], "inclusive": true } }
}; };
return lexer; return lexer;
})(); })();

View File

@@ -51,6 +51,21 @@ function isReachableFrom(currentCommit, otherCommit) {
exports.setDirection = function(dir) { exports.setDirection = function(dir) {
direction = dir; direction = dir;
} }
var options = {};
exports.setOptions = function(rawOptString) {
log.debug("options str", rawOptString);
rawOptString = rawOptString && rawOptString.trim();
rawOptString = rawOptString || "{}";
try {
options = JSON.parse(rawOptString)
} catch(e) {
log.error("error while parsing gitGraph options", e.message);
}
}
exports.getOptions = function() {
return options;
}
exports.commit = function(msg) { exports.commit = function(msg) {
var commit = { id: getId(), var commit = { id: getId(),

View File

@@ -12,7 +12,7 @@ describe('when parsing a gitGraph',function() {
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(1); expect(Object.keys(commits).length).toBe(1);
expect(parser.yy.getCurrentBranch()).toBe("master"); expect(parser.yy.getCurrentBranch()).toBe("master");
@@ -20,13 +20,64 @@ describe('when parsing a gitGraph',function() {
expect(Object.keys(parser.yy.getBranches()).length).toBe(1); expect(Object.keys(parser.yy.getBranches()).length).toBe(1);
}); });
it('should handle a gitGraph defintion with empty options', function () {
var str = 'gitGraph:\n' +
'options\n' +
'end\n' +
'commit\n';
parser.parse(str);
var commits = parser.yy.getCommits();
//console.log(commits);
expect(parser.yy.getOptions()).toEqual({});
expect(Object.keys(commits).length).toBe(1);
expect(parser.yy.getCurrentBranch()).toBe("master");
expect(parser.yy.getDirection()).toBe("LR");
expect(Object.keys(parser.yy.getBranches()).length).toBe(1);
});
it('should handle a gitGraph defintion with valid options', function () {
var str = 'gitGraph:\n' +
'options\n' +
'{"key": "value"}\n' +
'end\n' +
'commit\n';
parser.parse(str);
var commits = parser.yy.getCommits();
//console.log(commits);
console.log("options object", parser.yy.getOptions());
expect(parser.yy.getOptions()["key"]).toBe("value");
expect(Object.keys(commits).length).toBe(1);
expect(parser.yy.getCurrentBranch()).toBe("master");
expect(parser.yy.getDirection()).toBe("LR");
expect(Object.keys(parser.yy.getBranches()).length).toBe(1);
});
it('should not fail on a gitGraph with malformed json', function () {
var str = 'gitGraph:\n' +
'options\n' +
'{"key": "value"\n' +
'end\n' +
'commit\n';
parser.parse(str);
var commits = parser.yy.getCommits();
//console.log(commits);
expect(Object.keys(commits).length).toBe(1);
expect(parser.yy.getCurrentBranch()).toBe("master");
expect(parser.yy.getDirection()).toBe("LR");
expect(Object.keys(parser.yy.getBranches()).length).toBe(1);
});
it('should handle set direction', function () { it('should handle set direction', function () {
var str = 'gitGraph TB:\n' + var str = 'gitGraph TB:\n' +
'commit\n'; 'commit\n';
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(1); expect(Object.keys(commits).length).toBe(1);
expect(parser.yy.getCurrentBranch()).toBe("master"); expect(parser.yy.getCurrentBranch()).toBe("master");
@@ -68,7 +119,7 @@ describe('when parsing a gitGraph',function() {
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(1); expect(Object.keys(commits).length).toBe(1);
var key = Object.keys(commits)[0]; var key = Object.keys(commits)[0];
@@ -107,7 +158,7 @@ describe('when parsing a gitGraph',function() {
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(3); expect(Object.keys(commits).length).toBe(3);
expect(parser.yy.getCurrentBranch()).toBe("master"); expect(parser.yy.getCurrentBranch()).toBe("master");
expect(parser.yy.getBranches()["newbranch"]).toEqual(parser.yy.getBranches()["master"]); expect(parser.yy.getBranches()["newbranch"]).toEqual(parser.yy.getBranches()["master"]);
@@ -126,7 +177,7 @@ describe('when parsing a gitGraph',function() {
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(3); expect(Object.keys(commits).length).toBe(3);
expect(parser.yy.getCurrentBranch()).toBe("newbranch"); expect(parser.yy.getCurrentBranch()).toBe("newbranch");
expect(parser.yy.getBranches()["newbranch"]).not.toEqual(parser.yy.getBranches()["master"]); expect(parser.yy.getBranches()["newbranch"]).not.toEqual(parser.yy.getBranches()["master"]);
@@ -147,7 +198,7 @@ describe('when parsing a gitGraph',function() {
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(5); expect(Object.keys(commits).length).toBe(5);
expect(parser.yy.getCurrentBranch()).toBe("master"); expect(parser.yy.getCurrentBranch()).toBe("master");
expect(parser.yy.getBranches()["newbranch"]).not.toEqual(parser.yy.getBranches()["master"]); expect(parser.yy.getBranches()["newbranch"]).not.toEqual(parser.yy.getBranches()["master"]);
@@ -171,7 +222,7 @@ describe('when parsing a gitGraph',function() {
parser.parse(str); parser.parse(str);
var commits = parser.yy.getCommits(); var commits = parser.yy.getCommits();
console.log(commits); //console.log(commits);
expect(Object.keys(commits).length).toBe(6); expect(Object.keys(commits).length).toBe(6);
expect(parser.yy.getCurrentBranch()).toBe("newbranch"); expect(parser.yy.getCurrentBranch()).toBe("newbranch");
expect(parser.yy.getBranches()["newbranch"]).toEqual(parser.yy.getBranches()["master"]); expect(parser.yy.getBranches()["newbranch"]).toEqual(parser.yy.getBranches()["master"]);

View File

@@ -14,8 +14,9 @@ var config = {
lineColor: "grey", lineColor: "grey",
leftMargin: 50 leftMargin: 50
} }
exports.setConf = function(config) { var apiConfig = {};
exports.setConf = function(c) {
apiConfig = c;
} }
@@ -175,6 +176,9 @@ exports.draw = function(txt, id, ver) {
log.debug('in gitgraph renderer', txt, id, ver); log.debug('in gitgraph renderer', txt, id, ver);
// Parse the graph definition // Parse the graph definition
parser.parse(txt + "\n"); parser.parse(txt + "\n");
config = _.extend(config, apiConfig, db.getOptions());
log.debug("effective options", config);
var direction = db.getDirection(); var direction = db.getDirection();
allCommitsDict = db.getCommits(); allCommitsDict = db.getCommits();
var branches = db.getBranchesAsObjArray(); var branches = db.getBranchesAsObjArray();

View File

@@ -9,11 +9,12 @@
%lex %lex
%x string %x string
%x options
%options case-insensitive %options case-insensitive
%% %%
[\n|\r\n]+ return 'NL'; (\r?\n)+ return 'NL';
\s+ /* skip all whitespace */ \s+ /* skip all whitespace */
\#[^\n]* /* skip comments */ \#[^\n]* /* skip comments */
\%%[^\n]* /* skip comments */ \%%[^\n]* /* skip comments */
@@ -27,6 +28,9 @@
"TB" return 'DIR'; "TB" return 'DIR';
"BT" return 'DIR'; "BT" return 'DIR';
":" return ':'; ":" return ':';
"options"\r?\n this.begin("options");
<options>"end"\r?\n this.popState();
<options>[^\n]+\r?\n return 'OPT';
["] this.begin("string"); ["] this.begin("string");
<string>["] this.popState(); <string>["] this.popState();
<string>[^"]* return 'STR'; <string>[^"]* return 'STR';
@@ -46,11 +50,20 @@ start
| GG DIR ':' document EOF {yy.setDirection($2); return $4;} | GG DIR ':' document EOF {yy.setDirection($2); return $4;}
; ;
document document
: /* empty */ {$$ =[]} : /*empty*/
| document line {$1.push($2); $$ = $1} | options body { yy.setOptions($1); $$ = $2}
; ;
options
: options OPT {$1 +=$2; $$=$1}
| NL
;
body
: /*emmpty*/ {$$ = []}
| body line {$1.push($2); $$=$1;}
;
line line
: statement NL{$$ =$1} : statement NL{$$ =$1}
| NL | NL

View File

@@ -72,14 +72,14 @@
} }
*/ */
var gitGraph = (function(){ var gitGraph = (function(){
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[7,11,12,14,16,17,18],$V1=[2,3],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,14],$V7=[1,15]; var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21];
var parser = {trace: function trace() { var parser = {trace: function trace() {
Jison.print.apply(null, arguments); Jison.print.apply(null, arguments);
}, },
yy: {}, yy: {},
symbols_: {"error":2,"start":3,"GG":4,":":5,"document":6,"EOF":7,"DIR":8,"line":9,"statement":10,"NL":11,"COMMIT":12,"commit_arg":13,"BRANCH":14,"ID":15,"CHECKOUT":16,"MERGE":17,"RESET":18,"reset_arg":19,"STR":20,"HEAD":21,"$accept":0,"$end":1}, symbols_: {"error":2,"start":3,"GG":4,":":5,"document":6,"EOF":7,"DIR":8,"options":9,"body":10,"OPT":11,"NL":12,"line":13,"statement":14,"COMMIT":15,"commit_arg":16,"BRANCH":17,"ID":18,"CHECKOUT":19,"MERGE":20,"RESET":21,"reset_arg":22,"STR":23,"HEAD":24,"$accept":0,"$end":1},
terminals_: {2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"NL",12:"COMMIT",14:"BRANCH",15:"ID",16:"CHECKOUT",17:"MERGE",18:"RESET",20:"STR",21:"HEAD"}, terminals_: {2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD"},
productions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,2],[10,2],[10,2],[10,2],[10,2],[13,0],[13,1],[19,1],[19,1]], productions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,1],[22,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 */
@@ -91,40 +91,46 @@ break;
case 2: case 2:
yy.setDirection($$[$0-3]); return $$[$0-1]; yy.setDirection($$[$0-3]); return $$[$0-1];
break; break;
case 3:
this.$ =[]
break;
case 4: case 4:
$$[$0-1].push($$[$0]); this.$ = $$[$0-1] yy.setOptions($$[$0-1]); this.$ = $$[$0]
break; break;
case 5: case 5:
this.$ =$$[$0-1] $$[$0-1] +=$$[$0]; this.$=$$[$0-1]
break; break;
case 7: case 7:
yy.commit($$[$0]) this.$ = []
break; break;
case 8: case 8:
yy.branch($$[$0]) $$[$0-1].push($$[$0]); this.$=$$[$0-1];
break; break;
case 9: case 9:
yy.checkout($$[$0]) this.$ =$$[$0-1]
break;
case 10:
yy.merge($$[$0])
break; break;
case 11: case 11:
yy.reset($$[$0]) yy.commit($$[$0])
break; break;
case 12: case 12:
this.$ = "" yy.branch($$[$0])
break; break;
case 13: case 13:
yy.checkout($$[$0])
break;
case 14:
yy.merge($$[$0])
break;
case 15:
yy.reset($$[$0])
break;
case 16:
this.$ = ""
break;
case 17:
this.$=$$[$0] this.$=$$[$0]
break; break;
} }
}, },
table: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},o($V0,$V1,{6:5}),{5:[1,6]},{7:[1,7],9:8,10:9,11:$V2,12:$V3,14:$V4,16:$V5,17:$V6,18:$V7},o($V0,$V1,{6:16}),{1:[2,1]},o($V0,[2,4]),{11:[1,17]},o($V0,[2,6]),{11:[2,12],13:18,20:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,25],19:23,21:[1,24]},{7:[1,26],9:8,10:9,11:$V2,12:$V3,14:$V4,16:$V5,17:$V6,18:$V7},o($V0,[2,5]),{11:[2,7]},{11:[2,13]},{11:[2,8]},{11:[2,9]},{11:[2,10]},{11:[2,11]},{11:[2,14]},{11:[2,15]},{1:[2,2]}], table: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:[2,18]},{12:[2,19]}],
defaultActions: {7:[2,1],18:[2,7],19:[2,13],20:[2,8],21:[2,9],22:[2,10],23:[2,11],24:[2,14],25:[2,15],26:[2,2]}, defaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],29:[2,18],30:[2,19]},
parseError: function parseError(str, hash) { parseError: function parseError(str, hash) {
if (hash.recoverable) { if (hash.recoverable) {
this.trace(str); this.trace(str);
@@ -603,7 +609,7 @@ options: {"case-insensitive":true},
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 11; case 0:return 12;
break; break;
case 1:/* skip all whitespace */ case 1:/* skip all whitespace */
break; break;
@@ -613,15 +619,15 @@ case 3:/* skip comments */
break; break;
case 4:return 4; case 4:return 4;
break; break;
case 5:return 12; case 5:return 15;
break; break;
case 6:return 14; case 6:return 17;
break; break;
case 7:return 17; case 7:return 20;
break; break;
case 8:return 18; case 8:return 21;
break; break;
case 9:return 16; case 9:return 19;
break; break;
case 10:return 8; case 10:return 8;
break; break;
@@ -631,20 +637,26 @@ case 12:return 8;
break; break;
case 13:return 5; case 13:return 5;
break; break;
case 14:this.begin("string"); case 14:this.begin("options");
break; break;
case 15:this.popState(); case 15:this.popState();
break; break;
case 16:return 20; case 16:return 11;
break; break;
case 17:return 15; case 17:this.begin("string");
break; break;
case 18:return 7; case 18:this.popState();
break;
case 19:return 23;
break;
case 20:return 18;
break;
case 21:return 7;
break; break;
} }
}, },
rules: [/^(?:[\n|\r\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:TB\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i], rules: [/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:TB\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i],
conditions: {"string":{"rules":[15,16],"inclusive":false},"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18],"inclusive":true}} conditions: {"options":{"rules":[15,16],"inclusive":false},"string":{"rules":[18,19],"inclusive":false},"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],"inclusive":true}}
}); });
return lexer; return lexer;
})(); })();

View File

@@ -1,26 +1,7 @@
gitGraph : gitGraph :
options
{"key": "value",
"nodeWidth": 100
}
end
commit commit
commit
branch newbranch
checkout newbranch
commit
commit
branch other
checkout other
commit
commit
commit
checkout master
commit
merge newbranch
commit
merge other
commit
branch bug
checkout bug
commit
commit
checkout master
commit
checkout bug
merge master