tellform/docs/Node-Rules/rules.logic-jump.js
2016-04-28 23:00:41 -07:00

237 lines
5.8 KiB
JavaScript

//LogicJump (node-rules) Rules in JSON
var simpleFact = {
left:"user 4",
right:"something something user something",
};
var multiFact = {
operandTuples: [
{
left:"user 4",
right:"something something user something",
logicOp: "AND"
},
{
left:"something something user something",
right:"something",
logicOp: "OR"
}
],
left:"",
right:"",
logicOp:"",
prevResult: null
};
var _globalRules = function(){};
_globalRules.Equal = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
this.logicOp = currTuple.logicOp;
}
R.when(!(this.left === this.right));
},
"consequence" : function(R) {
if(prevResult !== null){
if(logicOp === "AND"){
}
}
this.result = false;
R.next();
},
};
_globalRules.NotEqual = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
R.when(!(this.left !== this.right));
},
"consequence" : function(R) {
this.result = false;
R.next();
}
};
_globalRules.AND = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
R.when(!(this.left && this.right));
},
"consequence" : function(R) {
this.result = false;
R.next();
}
};
_globalRules.OR = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
R.when(!(this.left || this.right));
},
"consequence" : function(R) {
this.result = false;
R.next();
},
};
var _stringRules = function(){};
_stringRules.prototype = _globalRules;
_stringRules.Contains = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var contains = (this.left.indexOf(this.right) > -1);
R.when(!contains);
},
"consequence" : function(R) {
this.result = false;
R.next();
},
};
_stringRules.NotContains = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var notContains = !(this.left.indexOf(this.right) > -1);
R.when(!notContains);
},
"consequence" : function(R) {
this.result = false;
R.next();
},
};
_stringRules.BeginsWith = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
R.when(!(this.left.indexOf(this.right) === 0));
},
"consequence" : function(R) {
this.result = false;
R.next();
},
};
_stringRules.EndsWith = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var lenLeft = this.left.length;
var lenRight = this.right.length;
R.when(!(this.left.indexOf(this.right) === (lenLeft-lenRight)));
},
"consequence" : function(R) {
this.result = false;
R.next();
}
};
var _numberRules = function(){};
_numberRules.prototype = _globalRules;
_numberRules.GreaterThan = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var greaterThan = (this.left > this.right);
R.when(!greaterThan);
},
"consequence" : function(R) {
this.result = false;
R.next();
}
};
_numberRules.SmallerThan = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var smallerThan = (this.left < this.right);
R.when(!smallerThan);
},
"consequence" : function(R) {
this.result = false;
R.next();
},
};
_numberRules.GreaterThanOrEqual = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var greaterThanOrEqual = (this.left >= this.right);
R.when(!greaterThanOrEqual);
},
"consequence" : function(R) {
this.result = false;
R.next();
}
};
_numberRules.SmallerThanOrEqual = {
"condition" : function(R) {
if(this.operandTuples){
var currTuple = this.operandTuples.pop();
this.left = currTuple.left;
this.right = currTuple.right;
}
var smallerThanOrEqual = (this.left <= this.right);
R.when(!smallerThanOrEqual);
},
"consequence" : function(R) {
this.result = false;
R.next();
}
};
module.exports = {
StringRules: _stringRules,
NumberRules: _numberRules,
BooleanRules: _globalRules,
};