@gabliam/expression
Version:
28 lines (27 loc) • 1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpressionParser = void 0;
const tslib_1 = require("tslib");
const esprima = tslib_1.__importStar(require("esprima"));
const lodash_1 = tslib_1.__importDefault(require("lodash"));
const expression_1 = require("./expression");
class ExpressionParser {
static eval(input, vars = {}) {
const expressionParser = new ExpressionParser({});
return expressionParser.parseExpression(input).getValue(vars);
}
constructor(context = {}) {
this.context = lodash_1.default.cloneDeep(context);
}
parseExpression(input) {
try {
const program = esprima.parseScript(input);
const ast = program.body[0].expression;
return new expression_1.Expression(ast, this.context, input);
}
catch (_a) {
return new expression_1.Expression(null, this.context, input);
}
}
}
exports.ExpressionParser = ExpressionParser;