UNPKG

@gabliam/expression

Version:
28 lines (27 loc) 1 kB
"use strict"; 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;