angel-eval
Version:
A conditional expression parser and interpreter.
62 lines (45 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _Evaluatable = _interopRequireDefault(require("../Evaluatable"));
var _utils = require("../utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class ConditionalExpression extends _Evaluatable.default {
constructor(leftNode, rightNode, operator) {
super();
this.leftNode = leftNode;
this.rightNode = rightNode;
this.operator = operator;
}
evaluate(context) {
const left = (0, _utils.evaluateNode)(this.leftNode, context);
const right = (0, _utils.evaluateNode)(this.rightNode, context);
switch (this.operator) {
// case "==":
// return left == right;
// case "!=":
// return left != right;
case "===":
return left === right;
case "!==":
return left !== right;
case "<=":
return left <= right;
case "<":
return left < right;
case ">=":
return left >= right;
case ">":
return left > right;
case "&&":
return left && right;
case "||":
return left || right;
}
throw new Error(this.operator + " not implemented");
}
}
var _default = ConditionalExpression;
exports.default = _default;