-
Notifications
You must be signed in to change notification settings - Fork 1
/
evaluateuserexpression.js
90 lines (55 loc) · 1.92 KB
/
evaluateuserexpression.js
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
var Sync = require('sync');
equals = require('./equals');
var expressions = [
{test:/^\s*TEST\s+(.*)$/i,"label":"Testing User Expression"
}]
Sync(function(){
var result = ""
module.exports.processLine = function(line){
console.log(`I am evaluating the expression ${line}`)
isEquals = /\s*TEST\s*(.+)\s+(EQUALS|IS LIKE)\s+(.+)?$/g.exec(line);
if(isEquals){
return equals.processLine(line);
}
expressions.every(function(expression){
var group = null;
group = line.match(expression.test)
if(group != null && group[1]){
group[1] = group[1].replace(variableSubstitution, function(curly,index,original){
//console.log("Original [" + original+"]");
//console.log("Curly " + curly);
//console.log("Index " + index);
userSpecifiedVar = curly.substring(2,curly.indexOf("}"));
//console.log("userSpecifiedVar " + userSpecifiedVar);
userValue = eval("global."+userSpecifiedVar);
//console.log("User value is " + userValue)
if(global._.isNumber(userValue)){
return userValue
} else if(global._.isObject(userValue)){
//console.log("Object original is " + original);
//console.log("The following object is used for substitution")
//console.log(eval("global."+userSpecifiedVar) );
return userSpecifiedVar;
}else {
//add quotes around string values
return '"'+ userValue+ '"'
}
});
//Hack because JS does not like anon objects
/*if(group[1].indexOf("equals") > -1)
group[1] = "new Object("+ group[1].replace(".equals", ").equals");
*/
//console.log("Running " + line.trim());
//console.log("Evaluating " + group[1] )
var coke = false;
coke = eval(group[1]);
//console.log("Coke is " + coke)
if(coke == true){
console.log(`Test passed the following condition ==> [${group[1]}]`);
} else {
throw new Error(`Test failed the following condition ==> [${group[1]}] is not true`)
}
}
})
}
})