237 lines
5.8 KiB
JavaScript
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,
|
|
};
|
|
|