@farris/expression-engine-vue
Version:
42 lines (41 loc) • 1.15 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpressionEngine = void 0;
const index_1 = require("../context/index");
const index_2 = require("../expression/index");
const abstract_expression_engine_1 = require("./abstract_expression_engine");
class ExpressionEngine extends abstract_expression_engine_1.AbstractExpressionEngine {
constructor(context) {
super(context);
}
/**
* 计算表达式
* @param expr 表达式
* @returns
*/
eval(expr) {
const expression = new index_2.Expression(expr);
return expression.eval(this.getContext());
}
/**
* 获取表达式上下文
* @returns
*/
getContext() {
if (!this.context) {
this.context = new index_1.ExpressionContext();
}
return this.context;
}
/**
* 添加自定义方法
* @param name 方法名
* @param func 方法体
*/
addFun(name, func) {
if (name && typeof func === 'function') {
this.getContext().set(name, func);
}
}
}
exports.ExpressionEngine = ExpressionEngine;
;