-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmatheval.js
51 lines (46 loc) · 1.42 KB
/
matheval.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
var Evaluator = require('./lib/Evaluator.js').Evaluator;
var Variables = require('./lib/Variables.js').Variables;
module.exports.Variables = Variables;
module.exports.Evaluator = Evaluator;
var _evaluator = new Evaluator();
var _variables = new Variables();
module.exports.evaluate = function(expression) {
var callback;
var variables;
if (arguments.length === 2) {
if (typeof arguments[1] === 'function') {
callback = arguments[1];
variables = _variables;
}
else {
variables = arguments[1];
callback = undefined;
}
}
else if (arguments.length === 3) {
variables = arguments[1];
callback = arguments[2];
}
if (callback !== undefined && typeof variables.load === 'function') {
variables.load(function doneLoading() {
var result = _evaluator.evaluate(expression, variables);
if (typeof variables.save === 'function') {
variables.save(function doneSaving() {
callback(result);
});
}
else {
callback(result);
}
});
}
else if (callback !== undefined) {
var result = _evaluator.evaluate(expression, variables);
callback(result);
return result;
}
else {
var result = _evaluator.evaluate(expression, variables);
return result;
}
};