diff --git a/.babelrc b/.babelrc
index d01cc43..85bbda5 100644
--- a/.babelrc
+++ b/.babelrc
@@ -9,8 +9,9 @@
"chrome": "67",
"safari": "11.1"
},
- "useBuiltIns": "usage"
+ "useBuiltIns": "usage",
+ "corejs": 3
}
]
]
-}
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index bb1d683..3c01ce1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,3 @@
-
/node_modules
/node_modules/*
/coverage
@@ -8,3 +7,5 @@
npm-debug.log
.DS_Store
.coveralls.yml
+.nyc_output
+.nyc_output/*
diff --git a/test/index.js b/__tests__/index.js
similarity index 88%
rename from test/index.js
rename to __tests__/index.js
index f166627..f66dc62 100644
--- a/test/index.js
+++ b/__tests__/index.js
@@ -1,5 +1,4 @@
var RuleEngine = require('../index');
-var expect = require("chai").expect;
describe("Rules", function() {
describe(".init()", function() {
it("should empty the existing rule array", function() {
@@ -13,7 +12,7 @@ describe("Rules", function() {
}];
var R = new RuleEngine(rules);
R.init();
- expect(R.rules).to.eql([]);
+ expect(R.rules).toEqual([]);
});
});
describe(".register()", function() {
@@ -27,7 +26,7 @@ describe("Rules", function() {
}
}];
var R = new RuleEngine(rules);
- expect(R.rules[0].on).to.eql(true);
+ expect(R.rules[0].on).toEqual(true);
});
it("Rule can be passed to register as both arrays and individual objects", function() {
var rule = {
@@ -40,7 +39,7 @@ describe("Rules", function() {
};
var R1 = new RuleEngine(rule);
var R2 = new RuleEngine([rule]);
- expect(R1.rules).to.eql(R2.rules);
+ expect(R1.rules).toEqual(R2.rules);
});
it("Rules can be appended multiple times via register after creating rule engine instance", function() {
var rules = [{
@@ -62,9 +61,9 @@ describe("Rules", function() {
var R2 = new RuleEngine(rules[0]);
var R3 = new RuleEngine();
R2.register(rules[1]);
- expect(R1.rules).to.eql(R2.rules);
+ expect(R1.rules).toEqual(R2.rules);
R3.register(rules);
- expect(R1.rules).to.eql(R3.rules);
+ expect(R1.rules).toEqual(R3.rules);
});
});
describe(".sync()", function() {
@@ -90,7 +89,7 @@ describe("Rules", function() {
}];
var R = new RuleEngine();
R.register(rules);
- expect(R.activeRules).not.to.eql(R.rules);
+ expect(R.activeRules).not.toEqual(R.rules);
});
it("should sort the rules accroding to priority, if priority is present", function() {
var rules = [{
@@ -123,7 +122,7 @@ describe("Rules", function() {
}];
var R = new RuleEngine();
R.register(rules);
- expect(R.activeRules[2].index).to.eql(2);
+ expect(R.activeRules[2].index).toEqual(2);
});
});
describe(".exec()", function() {
@@ -141,7 +140,7 @@ describe("Rules", function() {
R.execute({
"transactionTotal": 200
}, function(result) {
- expect(result.result).to.eql(false);
+ expect(result.result).toEqual(false);
});
});
it("should chain rules and find result with next()", function() {
@@ -168,7 +167,7 @@ describe("Rules", function() {
"transactionTotal": 200,
"card": "VISA"
}, function(result) {
- expect(result.result).to.eql("Custom Result");
+ expect(result.result).toEqual("Custom Result");
});
});
it("should provide access to rule definition properties via rule()", function() {
@@ -189,8 +188,8 @@ describe("Rules", function() {
R.execute({
"input": true
}, function(result) {
- expect(result.ruleName).to.eql(rule.name);
- expect(result.ruleID).to.eql(rule.id);
+ expect(result.ruleName).toEqual(rule.name);
+ expect(result.ruleID).toEqual(rule.id);
});
});
it("should include the matched rule path", function() {
@@ -246,7 +245,7 @@ describe("Rules", function() {
"x": true,
"y": false
}, function(result) {
- expect(result.matchPath).to.eql([rules[0].name, rules[2].id, lastMatch]);
+ expect(result.matchPath).toEqual([rules[0].name, rules[2].id, lastMatch]);
});
});
@@ -264,7 +263,7 @@ describe("Rules", function() {
R.execute({
"transactionTotal": 200
}, function(result) {
- expect(result.result).to.eql(false);
+ expect(result.result).toEqual(false);
});
});
@@ -284,7 +283,7 @@ describe("Rules", function() {
R.execute({
"transactionTotal": 200
}, function(result) {
- expect(result.result).to.eql(false);
+ expect(result.result).toEqual(false);
});
});
@@ -311,21 +310,21 @@ describe("Rules", function() {
it("find selector function for rules should exact number of matches", function() {
expect(R.findRules({
"id": "one"
- }).length).to.eql(1);
+ }).length).toEqual(1);
});
it("find selector function for rules should give the correct match as result", function() {
expect(R.findRules({
"id": "one"
- })[0].id).to.eql("one");
+ })[0].id).toEqual("one");
});
it("find selector function should filter off undefined entries in the query if any", function() {
expect(R.findRules({
"id": "one",
"myMistake": undefined
- })[0].id).to.eql("one");
+ })[0].id).toEqual("one");
});
it("find without condition works fine", function() {
- expect(R.findRules().length).to.eql(2);
+ expect(R.findRules().length).toEqual(2);
});
});
describe(".turn()", function() {
@@ -354,7 +353,7 @@ describe("Rules", function() {
});
expect(R.findRules({
"id": "one"
- })[0].on).to.eql(false);
+ })[0].on).toEqual(false);
});
it("checking whether turn on rules work as expected", function() {
R.turn("ON", {
@@ -362,7 +361,7 @@ describe("Rules", function() {
});
expect(R.findRules({
"id": "two"
- })[0].on).to.eql(true);
+ })[0].on).toEqual(true);
});
});
describe(".prioritize()", function() {
@@ -401,13 +400,13 @@ describe("Rules", function() {
});
expect(R.findRules({
"id": "one"
- })[0].priority).to.eql(10);
+ })[0].priority).toEqual(10);
});
it("checking whether rules reorder after prioritize", function() {
R.prioritize(10, {
"id": "one"
});
- expect(R.activeRules[0].id).to.eql("one");
+ expect(R.activeRules[0].id).toEqual("one");
});
});
describe("ignoreFactChanges", function() {
@@ -432,7 +431,7 @@ describe("Rules", function() {
var R = new RuleEngine(rules, { ignoreFactChanges: true });
R.execute(fact, function(result) {
- expect(result.errors).to.have.length(1);
+ expect(result.errors).toHaveLength(1);
done();
});
});
@@ -444,11 +443,9 @@ describe("Rules", function() {
"priority": 4,
"on": true,
"condition": function(R) {
- console.log(`Executing rule 1 on ${this.name}`);
R.when(this.userCredibility && this.userCredibility > 5);
},
"consequence": function(R) {
- console.log(`Rule 1 matched for ${this.name} user credibility is more, then avoid further check. Accepting payment.`);
this.result = true;
R.stop();
}
@@ -457,11 +454,9 @@ describe("Rules", function() {
"name": "block guest payment above 10000",
"priority": 3,
"condition": function(R) {
- console.log(`Executing rule 2 on ${this.name}`);
R.when(this.customerType && this.transactionTotal > 10000 && this.customerType == "guest");
},
"consequence": function(R) {
- console.log(`Rule 2 matched for ${this.name} reject if above 10000 and customer type is guest. Rejecting payment.`);
this.result = false;
R.stop();
}
@@ -470,12 +465,9 @@ describe("Rules", function() {
"name": "is customer guest?",
"priority": 2,
"condition": function(R) {
- console.log(`Executing rule 3 on ${this.name}`);
R.when(!this.userLoggedIn);
},
"consequence": function(R) {
- console.log(`Rule 3 matched for ${this.name} support rule written for blocking payment above 10000 from guests.`);
- console.log("Process left to chain with rule 2.");
this.customerType = "guest";
// the fact has been altered above, so all rules will run again since ignoreFactChanges is not set.
R.next();
@@ -485,11 +477,9 @@ describe("Rules", function() {
"name": "block Cashcard Payment",
"priority": 1,
"condition": function(R) {
- console.log(`Executing rule 4 on ${this.name}`);
R.when(this.cardType == "Cash Card");
},
"consequence": function(R) {
- console.log(`Rule 4 matched for ${this.name} reject the payment if cash card. Rejecting payment.`);
this.result = false;
R.stop();
}
@@ -518,7 +508,7 @@ describe("Rules", function() {
var isStraightFactFast = false;
R.execute(chainedFact, function(result) {
- expect(isStraightFactFast).eql(true);
+ expect(isStraightFactFast).toBe(true);
done();
});
@@ -528,4 +518,4 @@ describe("Rules", function() {
});
});
-});
+});
\ No newline at end of file
diff --git a/coverage/coverage.json b/coverage/coverage.json
deleted file mode 100644
index 0ac12b2..0000000
--- a/coverage/coverage.json
+++ /dev/null
@@ -1 +0,0 @@
-{"/Users/smithun/Desktop/NodeRules/node-rules/index.js":{"path":"/Users/smithun/Desktop/NodeRules/node-rules/index.js","s":{"1":1,"2":1},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"(anonymous_1)","line":7,"loc":{"start":{"line":7,"column":1},"end":{"line":7,"column":12}}}},"statementMap":{"1":{"start":{"line":7,"column":0},"end":{"line":11,"column":19}},"2":{"start":{"line":10,"column":4},"end":{"line":10,"column":49}}},"branchMap":{}},"/Users/smithun/Desktop/NodeRules/node-rules/lib/node-rules.js":{"path":"/Users/smithun/Desktop/NodeRules/node-rules/lib/node-rules.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":20,"7":20,"8":17,"9":20,"10":1,"11":20,"12":1,"13":21,"14":21,"15":1,"16":21,"17":14,"18":7,"19":7,"20":21,"21":1,"22":25,"23":49,"24":29,"25":49,"26":44,"27":25,"28":24,"29":16,"30":8,"31":1,"32":9,"33":9,"34":9,"35":9,"36":9,"37":9,"38":9,"39":9,"40":9,"41":30,"42":2,"43":21,"44":13,"45":13,"46":13,"47":13,"48":13,"49":8,"50":8,"51":1,"52":7,"53":7,"54":14,"55":1,"56":1,"57":1,"58":13,"59":13,"60":30,"61":30,"62":21,"63":21,"64":9,"65":9,"66":9,"67":1,"68":44,"69":21,"70":23,"71":1,"72":11,"73":1,"74":10,"75":11,"76":10,"77":23,"78":23,"79":1,"80":2,"81":2,"82":2,"83":2,"84":2,"85":1,"86":2,"87":2,"88":2,"89":2,"90":2,"91":1},"b":{"1":[17,3],"2":[1,19],"3":[14,7],"4":[7,0],"5":[7,7],"6":[29,20],"7":[44,5],"8":[16,8],"9":[24,16],"10":[13,8],"11":[13,11,6],"12":[1,13],"13":[14,13],"14":[21,9],"15":[30,28],"16":[21,23],"17":[44,44],"18":[1,10],"19":[11,1],"20":[1,1],"21":[2,2]},"f":{"1":1,"2":20,"3":21,"4":21,"5":25,"6":49,"7":24,"8":9,"9":30,"10":2,"11":21,"12":13,"13":8,"14":1,"15":7,"16":14,"17":1,"18":13,"19":9,"20":44,"21":11,"22":23,"23":23,"24":2,"25":2},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":12}}},"2":{"name":"RuleEngine","line":8,"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":40}}},"3":{"name":"(anonymous_3)","line":18,"loc":{"start":{"line":18,"column":32},"end":{"line":18,"column":48}}},"4":{"name":"(anonymous_4)","line":22,"loc":{"start":{"line":22,"column":36},"end":{"line":22,"column":52}}},"5":{"name":"(anonymous_5)","line":30,"loc":{"start":{"line":30,"column":32},"end":{"line":30,"column":43}}},"6":{"name":"(anonymous_6)","line":31,"loc":{"start":{"line":31,"column":45},"end":{"line":31,"column":57}}},"7":{"name":"(anonymous_7)","line":39,"loc":{"start":{"line":39,"column":30},"end":{"line":39,"column":45}}},"8":{"name":"(anonymous_8)","line":47,"loc":{"start":{"line":47,"column":35},"end":{"line":47,"column":60}}},"9":{"name":"FnRuleLoop","line":58,"loc":{"start":{"line":58,"column":9},"end":{"line":58,"column":32}}},"10":{"name":"(anonymous_10)","line":60,"loc":{"start":{"line":60,"column":24},"end":{"line":60,"column":35}}},"11":{"name":"(anonymous_11)","line":61,"loc":{"start":{"line":61,"column":24},"end":{"line":61,"column":42}}},"12":{"name":"(anonymous_12)","line":65,"loc":{"start":{"line":65,"column":44},"end":{"line":65,"column":55}}},"13":{"name":"(anonymous_13)","line":70,"loc":{"start":{"line":70,"column":44},"end":{"line":70,"column":55}}},"14":{"name":"(anonymous_14)","line":75,"loc":{"start":{"line":75,"column":27},"end":{"line":75,"column":38}}},"15":{"name":"(anonymous_15)","line":78,"loc":{"start":{"line":78,"column":24},"end":{"line":78,"column":35}}},"16":{"name":"(anonymous_16)","line":82,"loc":{"start":{"line":82,"column":24},"end":{"line":82,"column":35}}},"17":{"name":"(anonymous_17)","line":85,"loc":{"start":{"line":85,"column":44},"end":{"line":85,"column":55}}},"18":{"name":"(anonymous_18)","line":89,"loc":{"start":{"line":89,"column":44},"end":{"line":89,"column":55}}},"19":{"name":"(anonymous_19)","line":100,"loc":{"start":{"line":100,"column":36},"end":{"line":100,"column":47}}},"20":{"name":"(anonymous_20)","line":107,"loc":{"start":{"line":107,"column":36},"end":{"line":107,"column":57}}},"21":{"name":"(anonymous_21)","line":114,"loc":{"start":{"line":114,"column":37},"end":{"line":114,"column":53}}},"22":{"name":"(anonymous_22)","line":121,"loc":{"start":{"line":121,"column":37},"end":{"line":121,"column":53}}},"23":{"name":"(anonymous_23)","line":122,"loc":{"start":{"line":122,"column":47},"end":{"line":122,"column":62}}},"24":{"name":"(anonymous_24)","line":128,"loc":{"start":{"line":128,"column":32},"end":{"line":128,"column":56}}},"25":{"name":"(anonymous_25)","line":136,"loc":{"start":{"line":136,"column":38},"end":{"line":136,"column":65}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":145,"column":19}},"2":{"start":{"line":3,"column":4},"end":{"line":3,"column":30}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":48}},"5":{"start":{"line":8,"column":4},"end":{"line":17,"column":5}},"6":{"start":{"line":9,"column":8},"end":{"line":9,"column":20}},"7":{"start":{"line":10,"column":8},"end":{"line":12,"column":9}},"8":{"start":{"line":11,"column":12},"end":{"line":11,"column":33}},"9":{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},"10":{"start":{"line":14,"column":12},"end":{"line":14,"column":63}},"11":{"start":{"line":16,"column":8},"end":{"line":16,"column":20}},"12":{"start":{"line":18,"column":4},"end":{"line":21,"column":6}},"13":{"start":{"line":19,"column":8},"end":{"line":19,"column":24}},"14":{"start":{"line":20,"column":8},"end":{"line":20,"column":30}},"15":{"start":{"line":22,"column":4},"end":{"line":29,"column":6}},"16":{"start":{"line":23,"column":8},"end":{"line":27,"column":9}},"17":{"start":{"line":24,"column":12},"end":{"line":24,"column":50}},"18":{"start":{"line":25,"column":15},"end":{"line":27,"column":9}},"19":{"start":{"line":26,"column":12},"end":{"line":26,"column":35}},"20":{"start":{"line":28,"column":8},"end":{"line":28,"column":20}},"21":{"start":{"line":30,"column":4},"end":{"line":46,"column":6}},"22":{"start":{"line":31,"column":8},"end":{"line":38,"column":11}},"23":{"start":{"line":32,"column":12},"end":{"line":34,"column":13}},"24":{"start":{"line":33,"column":16},"end":{"line":33,"column":28}},"25":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"26":{"start":{"line":36,"column":16},"end":{"line":36,"column":25}},"27":{"start":{"line":39,"column":8},"end":{"line":45,"column":11}},"28":{"start":{"line":40,"column":12},"end":{"line":44,"column":13}},"29":{"start":{"line":41,"column":16},"end":{"line":41,"column":47}},"30":{"start":{"line":43,"column":16},"end":{"line":43,"column":25}},"31":{"start":{"line":47,"column":4},"end":{"line":106,"column":6}},"32":{"start":{"line":50,"column":8},"end":{"line":50,"column":30}},"33":{"start":{"line":51,"column":8},"end":{"line":51,"column":29}},"34":{"start":{"line":52,"column":8},"end":{"line":52,"column":27}},"35":{"start":{"line":53,"column":8},"end":{"line":53,"column":38}},"36":{"start":{"line":54,"column":8},"end":{"line":54,"column":42}},"37":{"start":{"line":55,"column":8},"end":{"line":55,"column":38}},"38":{"start":{"line":56,"column":8},"end":{"line":56,"column":27}},"39":{"start":{"line":57,"column":8},"end":{"line":57,"column":55}},"40":{"start":{"line":58,"column":8},"end":{"line":105,"column":14}},"41":{"start":{"line":59,"column":12},"end":{"line":94,"column":14}},"42":{"start":{"line":60,"column":37},"end":{"line":60,"column":54}},"43":{"start":{"line":62,"column":20},"end":{"line":73,"column":21}},"44":{"start":{"line":63,"column":24},"end":{"line":63,"column":65}},"45":{"start":{"line":64,"column":24},"end":{"line":64,"column":92}},"46":{"start":{"line":65,"column":24},"end":{"line":68,"column":27}},"47":{"start":{"line":66,"column":28},"end":{"line":66,"column":65}},"48":{"start":{"line":67,"column":28},"end":{"line":67,"column":69}},"49":{"start":{"line":70,"column":24},"end":{"line":72,"column":27}},"50":{"start":{"line":71,"column":28},"end":{"line":71,"column":39}},"51":{"start":{"line":76,"column":20},"end":{"line":76,"column":41}},"52":{"start":{"line":79,"column":20},"end":{"line":79,"column":36}},"53":{"start":{"line":80,"column":20},"end":{"line":80,"column":41}},"54":{"start":{"line":83,"column":20},"end":{"line":92,"column":21}},"55":{"start":{"line":84,"column":24},"end":{"line":84,"column":57}},"56":{"start":{"line":85,"column":24},"end":{"line":87,"column":27}},"57":{"start":{"line":86,"column":28},"end":{"line":86,"column":42}},"58":{"start":{"line":89,"column":24},"end":{"line":91,"column":27}},"59":{"start":{"line":90,"column":28},"end":{"line":90,"column":53}},"60":{"start":{"line":95,"column":12},"end":{"line":95,"column":44}},"61":{"start":{"line":96,"column":12},"end":{"line":104,"column":13}},"62":{"start":{"line":97,"column":16},"end":{"line":97,"column":48}},"63":{"start":{"line":98,"column":16},"end":{"line":98,"column":50}},"64":{"start":{"line":100,"column":16},"end":{"line":103,"column":19}},"65":{"start":{"line":101,"column":20},"end":{"line":101,"column":50}},"66":{"start":{"line":102,"column":20},"end":{"line":102,"column":45}},"67":{"start":{"line":107,"column":4},"end":{"line":113,"column":6}},"68":{"start":{"line":108,"column":8},"end":{"line":112,"column":9}},"69":{"start":{"line":109,"column":12},"end":{"line":109,"column":41}},"70":{"start":{"line":111,"column":12},"end":{"line":111,"column":38}},"71":{"start":{"line":114,"column":4},"end":{"line":127,"column":6}},"72":{"start":{"line":115,"column":8},"end":{"line":126,"column":9}},"73":{"start":{"line":116,"column":12},"end":{"line":116,"column":30}},"74":{"start":{"line":119,"column":12},"end":{"line":119,"column":93}},"75":{"start":{"line":119,"column":46},"end":{"line":119,"column":91}},"76":{"start":{"line":121,"column":12},"end":{"line":125,"column":15}},"77":{"start":{"line":122,"column":16},"end":{"line":124,"column":19}},"78":{"start":{"line":123,"column":20},"end":{"line":123,"column":52}},"79":{"start":{"line":128,"column":4},"end":{"line":135,"column":6}},"80":{"start":{"line":129,"column":8},"end":{"line":129,"column":70}},"81":{"start":{"line":130,"column":8},"end":{"line":130,"column":43}},"82":{"start":{"line":131,"column":8},"end":{"line":133,"column":9}},"83":{"start":{"line":132,"column":12},"end":{"line":132,"column":32}},"84":{"start":{"line":134,"column":8},"end":{"line":134,"column":20}},"85":{"start":{"line":136,"column":4},"end":{"line":143,"column":6}},"86":{"start":{"line":137,"column":8},"end":{"line":137,"column":42}},"87":{"start":{"line":138,"column":8},"end":{"line":138,"column":43}},"88":{"start":{"line":139,"column":8},"end":{"line":141,"column":9}},"89":{"start":{"line":140,"column":12},"end":{"line":140,"column":41}},"90":{"start":{"line":142,"column":8},"end":{"line":142,"column":20}},"91":{"start":{"line":144,"column":4},"end":{"line":144,"column":32}}},"branchMap":{"1":{"line":10,"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":10,"column":8}},{"start":{"line":10,"column":8},"end":{"line":10,"column":8}}]},"2":{"line":13,"type":"if","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":8}},{"start":{"line":13,"column":8},"end":{"line":13,"column":8}}]},"3":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":8},"end":{"line":23,"column":8}},{"start":{"line":23,"column":8},"end":{"line":23,"column":8}}]},"4":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":15},"end":{"line":25,"column":15}},{"start":{"line":25,"column":15},"end":{"line":25,"column":15}}]},"5":{"line":25,"type":"binary-expr","locations":[{"start":{"line":25,"column":19},"end":{"line":25,"column":33}},{"start":{"line":25,"column":37},"end":{"line":25,"column":62}}]},"6":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":12},"end":{"line":32,"column":12}},{"start":{"line":32,"column":12},"end":{"line":32,"column":12}}]},"7":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":12},"end":{"line":35,"column":12}},{"start":{"line":35,"column":12},"end":{"line":35,"column":12}}]},"8":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":12},"end":{"line":40,"column":12}},{"start":{"line":40,"column":12},"end":{"line":40,"column":12}}]},"9":{"line":40,"type":"binary-expr","locations":[{"start":{"line":40,"column":16},"end":{"line":40,"column":26}},{"start":{"line":40,"column":30},"end":{"line":40,"column":40}}]},"10":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":20},"end":{"line":62,"column":20}},{"start":{"line":62,"column":20},"end":{"line":62,"column":20}}]},"11":{"line":64,"type":"binary-expr","locations":[{"start":{"line":64,"column":47},"end":{"line":64,"column":59}},{"start":{"line":64,"column":63},"end":{"line":64,"column":77}},{"start":{"line":64,"column":81},"end":{"line":64,"column":91}}]},"12":{"line":83,"type":"if","locations":[{"start":{"line":83,"column":20},"end":{"line":83,"column":20}},{"start":{"line":83,"column":20},"end":{"line":83,"column":20}}]},"13":{"line":83,"type":"binary-expr","locations":[{"start":{"line":83,"column":24},"end":{"line":83,"column":42}},{"start":{"line":83,"column":46},"end":{"line":83,"column":76}}]},"14":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":12},"end":{"line":96,"column":12}},{"start":{"line":96,"column":12},"end":{"line":96,"column":12}}]},"15":{"line":96,"type":"binary-expr","locations":[{"start":{"line":96,"column":16},"end":{"line":96,"column":33}},{"start":{"line":96,"column":37},"end":{"line":96,"column":55}}]},"16":{"line":108,"type":"if","locations":[{"start":{"line":108,"column":8},"end":{"line":108,"column":8}},{"start":{"line":108,"column":8},"end":{"line":108,"column":8}}]},"17":{"line":108,"type":"binary-expr","locations":[{"start":{"line":108,"column":12},"end":{"line":108,"column":42}},{"start":{"line":108,"column":46},"end":{"line":108,"column":62}}]},"18":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":8},"end":{"line":115,"column":8}},{"start":{"line":115,"column":8},"end":{"line":115,"column":8}}]},"19":{"line":119,"type":"binary-expr","locations":[{"start":{"line":119,"column":46},"end":{"line":119,"column":70}},{"start":{"line":119,"column":74},"end":{"line":119,"column":91}}]},"20":{"line":129,"type":"cond-expr","locations":[{"start":{"line":129,"column":57},"end":{"line":129,"column":61}},{"start":{"line":129,"column":64},"end":{"line":129,"column":69}}]},"21":{"line":129,"type":"binary-expr","locations":[{"start":{"line":129,"column":21},"end":{"line":129,"column":35}},{"start":{"line":129,"column":39},"end":{"line":129,"column":53}}]}}}}
\ No newline at end of file
diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css
deleted file mode 100644
index 29737bc..0000000
--- a/coverage/lcov-report/base.css
+++ /dev/null
@@ -1,213 +0,0 @@
-body, html {
- margin:0; padding: 0;
- height: 100%;
-}
-body {
- font-family: Helvetica Neue, Helvetica, Arial;
- font-size: 14px;
- color:#333;
-}
-.small { font-size: 12px; }
-*, *:after, *:before {
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box;
- }
-h1 { font-size: 20px; margin: 0;}
-h2 { font-size: 14px; }
-pre {
- font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
- margin: 0;
- padding: 0;
- -moz-tab-size: 2;
- -o-tab-size: 2;
- tab-size: 2;
-}
-a { color:#0074D9; text-decoration:none; }
-a:hover { text-decoration:underline; }
-.strong { font-weight: bold; }
-.space-top1 { padding: 10px 0 0 0; }
-.pad2y { padding: 20px 0; }
-.pad1y { padding: 10px 0; }
-.pad2x { padding: 0 20px; }
-.pad2 { padding: 20px; }
-.pad1 { padding: 10px; }
-.space-left2 { padding-left:55px; }
-.space-right2 { padding-right:20px; }
-.center { text-align:center; }
-.clearfix { display:block; }
-.clearfix:after {
- content:'';
- display:block;
- height:0;
- clear:both;
- visibility:hidden;
- }
-.fl { float: left; }
-@media only screen and (max-width:640px) {
- .col3 { width:100%; max-width:100%; }
- .hide-mobile { display:none!important; }
-}
-
-.quiet {
- color: #7f7f7f;
- color: rgba(0,0,0,0.5);
-}
-.quiet a { opacity: 0.7; }
-
-.fraction {
- font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
- font-size: 10px;
- color: #555;
- background: #E8E8E8;
- padding: 4px 5px;
- border-radius: 3px;
- vertical-align: middle;
-}
-
-div.path a:link, div.path a:visited { color: #333; }
-table.coverage {
- border-collapse: collapse;
- margin: 10px 0 0 0;
- padding: 0;
-}
-
-table.coverage td {
- margin: 0;
- padding: 0;
- vertical-align: top;
-}
-table.coverage td.line-count {
- text-align: right;
- padding: 0 5px 0 20px;
-}
-table.coverage td.line-coverage {
- text-align: right;
- padding-right: 10px;
- min-width:20px;
-}
-
-table.coverage td span.cline-any {
- display: inline-block;
- padding: 0 5px;
- width: 100%;
-}
-.missing-if-branch {
- display: inline-block;
- margin-right: 5px;
- border-radius: 3px;
- position: relative;
- padding: 0 4px;
- background: #333;
- color: yellow;
-}
-
-.skip-if-branch {
- display: none;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: #ccc;
- color: white;
-}
-.missing-if-branch .typ, .skip-if-branch .typ {
- color: inherit !important;
-}
-.coverage-summary {
- border-collapse: collapse;
- width: 100%;
-}
-.coverage-summary tr { border-bottom: 1px solid #bbb; }
-.keyline-all { border: 1px solid #ddd; }
-.coverage-summary td, .coverage-summary th { padding: 10px; }
-.coverage-summary tbody { border: 1px solid #bbb; }
-.coverage-summary td { border-right: 1px solid #bbb; }
-.coverage-summary td:last-child { border-right: none; }
-.coverage-summary th {
- text-align: left;
- font-weight: normal;
- white-space: nowrap;
-}
-.coverage-summary th.file { border-right: none !important; }
-.coverage-summary th.pct { }
-.coverage-summary th.pic,
-.coverage-summary th.abs,
-.coverage-summary td.pct,
-.coverage-summary td.abs { text-align: right; }
-.coverage-summary td.file { white-space: nowrap; }
-.coverage-summary td.pic { min-width: 120px !important; }
-.coverage-summary tfoot td { }
-
-.coverage-summary .sorter {
- height: 10px;
- width: 7px;
- display: inline-block;
- margin-left: 0.5em;
- background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
-}
-.coverage-summary .sorted .sorter {
- background-position: 0 -20px;
-}
-.coverage-summary .sorted-desc .sorter {
- background-position: 0 -10px;
-}
-.status-line { height: 10px; }
-/* dark red */
-.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
-.low .chart { border:1px solid #C21F39 }
-/* medium red */
-.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
-/* light red */
-.low, .cline-no { background:#FCE1E5 }
-/* light green */
-.high, .cline-yes { background:rgb(230,245,208) }
-/* medium green */
-.cstat-yes { background:rgb(161,215,106) }
-/* dark green */
-.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
-.high .chart { border:1px solid rgb(77,146,33) }
-/* dark yellow (gold) */
-.medium .chart { border:1px solid #f9cd0b; }
-.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
-/* light yellow */
-.medium { background: #fff4c2; }
-/* light gray */
-span.cline-neutral { background: #eaeaea; }
-
-.cbranch-no { background: yellow !important; color: #111; }
-
-.cstat-skip { background: #ddd; color: #111; }
-.fstat-skip { background: #ddd; color: #111 !important; }
-.cbranch-skip { background: #ddd !important; color: #111; }
-
-
-.cover-fill, .cover-empty {
- display:inline-block;
- height: 12px;
-}
-.chart {
- line-height: 0;
-}
-.cover-empty {
- background: white;
-}
-.cover-full {
- border-right: none !important;
-}
-pre.prettyprint {
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
-}
-.com { color: #999 !important; }
-.ignore-none { color: #999; font-weight: normal; }
-
-.wrapper {
- min-height: 100%;
- height: auto !important;
- height: 100%;
- margin: 0 auto -48px;
-}
-.footer, .push {
- height: 48px;
-}
diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html
deleted file mode 100644
index d8e43e3..0000000
--- a/coverage/lcov-report/index.html
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
- Code coverage report for All files
-
-
-
-
-
-
-
-
-
-
- /
-
-
-
- 100%
- Statements
- 93/93
-
-
- 97.67%
- Branches
- 42/43
-
-
- 100%
- Functions
- 26/26
-
-
- 100%
- Lines
- 92/92
-
-
-
-
-
-
-
-
- File |
- |
- Statements |
- |
- Branches |
- |
- Functions |
- |
- Lines |
- |
-
-
-
- node-rules/ |
- |
- 100% |
- 2/2 |
- 100% |
- 0/0 |
- 100% |
- 1/1 |
- 100% |
- 2/2 |
-
-
-
- node-rules/lib/ |
- |
- 100% |
- 91/91 |
- 97.67% |
- 42/43 |
- 100% |
- 25/25 |
- 100% |
- 90/90 |
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/lcov-report/node-rules/index.html b/coverage/lcov-report/node-rules/index.html
deleted file mode 100644
index a262934..0000000
--- a/coverage/lcov-report/node-rules/index.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
- Code coverage report for node-rules/
-
-
-
-
-
-
-
-
-
-
-
-
- 100%
- Statements
- 2/2
-
-
- 100%
- Branches
- 0/0
-
-
- 100%
- Functions
- 1/1
-
-
- 100%
- Lines
- 2/2
-
-
-
-
-
-
-
-
- File |
- |
- Statements |
- |
- Branches |
- |
- Functions |
- |
- Lines |
- |
-
-
-
- index.js |
- |
- 100% |
- 2/2 |
- 100% |
- 0/0 |
- 100% |
- 1/1 |
- 100% |
- 2/2 |
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/lcov-report/node-rules/index.js.html b/coverage/lcov-report/node-rules/index.js.html
deleted file mode 100644
index 59e5f2a..0000000
--- a/coverage/lcov-report/node-rules/index.js.html
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
- Code coverage report for node-rules/index.js
-
-
-
-
-
-
-
-
-
-
-
-
- 100%
- Statements
- 2/2
-
-
- 100%
- Branches
- 0/0
-
-
- 100%
- Functions
- 1/1
-
-
- 100%
- Lines
- 2/2
-
-
-
-
-
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11 |
-
-
-
-
-
-1×
-
-
-1×
- |
-/**
- * Export lib/node-rules
- *
- */
-
-(function() {
- 'use strict';
-
- module.exports = require('./lib/node-rules');
-}(module.exports)); |
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/lcov-report/node-rules/lib/index.html b/coverage/lcov-report/node-rules/lib/index.html
deleted file mode 100644
index 8675476..0000000
--- a/coverage/lcov-report/node-rules/lib/index.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
- Code coverage report for node-rules/lib/
-
-
-
-
-
-
-
-
-
-
- all files node-rules/lib/
-
-
-
- 100%
- Statements
- 91/91
-
-
- 97.67%
- Branches
- 42/43
-
-
- 100%
- Functions
- 25/25
-
-
- 100%
- Lines
- 90/90
-
-
-
-
-
-
-
-
- File |
- |
- Statements |
- |
- Branches |
- |
- Functions |
- |
- Lines |
- |
-
-
-
- node-rules.js |
- |
- 100% |
- 91/91 |
- 97.67% |
- 42/43 |
- 100% |
- 25/25 |
- 100% |
- 90/90 |
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/lcov-report/node-rules/lib/node-rules.js.html b/coverage/lcov-report/node-rules/lib/node-rules.js.html
deleted file mode 100644
index b58baa1..0000000
--- a/coverage/lcov-report/node-rules/lib/node-rules.js.html
+++ /dev/null
@@ -1,500 +0,0 @@
-
-
-
- Code coverage report for node-rules/lib/node-rules.js
-
-
-
-
-
-
-
-
-
-
-
-
- 100%
- Statements
- 91/91
-
-
- 97.67%
- Branches
- 42/43
-
-
- 100%
- Functions
- 25/25
-
-
- 100%
- Lines
- 90/90
-
-
-
-
-
-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
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146 | 1×
-
-1×
-
-1×
-1×
-
-1×
-20×
-20×
-17×
-
-20×
-1×
-
-20×
-
-1×
-21×
-21×
-
-1×
-21×
-14×
-7×
-7×
-
-21×
-
-1×
-25×
-49×
-29×
-
-49×
-44×
-
-
-25×
-24×
-16×
-
-8×
-
-
-
-1×
-
-
-9×
-9×
-9×
-9×
-9×
-9×
-9×
-9×
-9×
-30×
-2×
-
-21×
-13×
-13×
-13×
-13×
-13×
-
-
-8×
-8×
-
-
-
-
-1×
-
-
-7×
-7×
-
-
-14×
-1×
-1×
-1×
-
-
-13×
-13×
-
-
-
-
-30×
-30×
-21×
-21×
-
-9×
-9×
-9×
-
-
-
-
-1×
-44×
-21×
-
-23×
-
-
-1×
-11×
-1×
-
-
-11×
-
-10×
-23×
-23×
-
-
-
-
-1×
-2×
-2×
-2×
-2×
-
-2×
-
-1×
-2×
-2×
-2×
-2×
-
-2×
-
-1×
-
- | (function() {
- 'use strict';
- exports.version = '3.0.0';
-
- var isEqual = require('lodash.isequal');
- var clonedeep = require('lodash.clonedeep');
-
- function RuleEngine(rules, options) {
- this.init();
- if (typeof(rules) != "undefined") {
- this.register(rules);
- }
- if (options) {
- this.ignoreFactChanges = options.ignoreFactChanges;
- }
- return this;
- };
- RuleEngine.prototype.init = function(rules) {
- this.rules = [];
- this.activeRules = [];
- };
- RuleEngine.prototype.register = function(rules) {
- if (Array.isArray(rules)) {
- this.rules = this.rules.concat(rules);
- } else Eif (rules !== null && typeof(rules) == "object") {
- this.rules.push(rules);
- }
- this.sync();
- };
- RuleEngine.prototype.sync = function() {
- this.activeRules = this.rules.filter(function(a) {
- if (typeof(a.on) === "undefined") {
- a.on = true;
- }
- if (a.on === true) {
- return a;
- }
- });
- this.activeRules.sort(function(a, b) {
- if (a.priority && b.priority) {
- return b.priority - a.priority;
- } else {
- return 0;
- }
- });
- };
- RuleEngine.prototype.execute = function(fact, callback) {
- //these new attributes have to be in both last session and current session to support
- // the compare function
- var thisHolder = this;
- var complete = false;
- fact.result = true;
- var session = clonedeep(fact);
- var lastSession = clonedeep(fact);
- var _rules = this.activeRules;
- var matchPath = [];
- var ignoreFactChanges = this.ignoreFactChanges;
- (function FnRuleLoop(x) {
- var API = {
- "rule": function() { return _rules[x]; },
- "when": function(outcome) {
- if (outcome) {
- var _consequence = _rules[x].consequence;
- _consequence.ruleRef = _rules[x].id || _rules[x].name || 'index_'+x;
- thisHolder.nextTick(function() {
- matchPath.push(_consequence.ruleRef);
- _consequence.call(session, API, session);
- });
- } else {
- thisHolder.nextTick(function() {
- API.next();
- });
- }
- },
- "restart": function() {
- return FnRuleLoop(0);
- },
- "stop": function() {
- complete = true;
- return FnRuleLoop(0);
- },
- "next": function() {
- if (!ignoreFactChanges && !isEqual(lastSession, session)) {
- lastSession = clonedeep(session);
- thisHolder.nextTick(function() {
- API.restart();
- });
- } else {
- thisHolder.nextTick(function() {
- return FnRuleLoop(x + 1);
- });
- }
- }
- };
- _rules = thisHolder.activeRules;
- if (x < _rules.length && complete === false) {
- var _rule = _rules[x].condition;
- _rule.call(session, API, session);
- } else {
- thisHolder.nextTick(function() {
- session.matchPath = matchPath;
- return callback(session);
- });
- }
- })(0);
- };
- RuleEngine.prototype.nextTick = function(callbackFn) {
- if (typeof process !== 'undefined' && process.nextTick) {
- process.nextTick(callbackFn);
- } else {
- setTimeout(callbackFn, 0);
- }
- };
- RuleEngine.prototype.findRules = function(query) {
- if (typeof(query) === "undefined") {
- return this.rules;
- } else {
- // Clean the properties set to undefined in the search query if any to prevent miss match issues.
- Object.keys(query).forEach(key => query[key] === undefined && delete query[key]);
- // Return rules in the registered rules array which match partially to the query.
- return this.rules.filter(function (rule) {
- return Object.keys(query).some(function (key) {
- return query[key] === rule[key];
- });
- });
- }
- };
- RuleEngine.prototype.turn = function(state, filter) {
- var state = (state === "on" || state === "ON") ? true : false;
- var rules = this.findRules(filter);
- for (var i = 0, j = rules.length; i < j; i++) {
- rules[i].on = state;
- }
- this.sync();
- };
- RuleEngine.prototype.prioritize = function(priority, filter) {
- priority = parseInt(priority, 10);
- var rules = this.findRules(filter);
- for (var i = 0, j = rules.length; i < j; i++) {
- rules[i].priority = priority;
- }
- this.sync();
- };
- module.exports = RuleEngine;
-}(module.exports));
- |
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css
deleted file mode 100644
index b317a7c..0000000
--- a/coverage/lcov-report/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
-.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js
deleted file mode 100644
index ef51e03..0000000
--- a/coverage/lcov-report/prettify.js
+++ /dev/null
@@ -1 +0,0 @@
-window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^