som-exp-sdk
Version:
Evaluate the User Expression
65 lines (64 loc) • 4.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Utils = void 0;
const base_expression_1 = require("../expression/base-expression");
const conditional_expression_1 = require("../expression/conditional-expression");
const financial_expression_1 = require("../expression/financial-expression");
const numerical_expression_1 = require("../expression/numerical-expression");
const sentence_expression_1 = require("../expression/sentence-expression");
const expression_type_info_1 = require("../type/expression-type-info");
const constants_1 = require("../expression/constants");
const loop_expression_1 = require("../expression/loop-expression");
const date_expression_1 = require("../expression/date-expression");
const time_expression_1 = require("../expression/time-expression");
class Utils {
constructor() {
this.getExpressionClassInfo = (expression) => {
let expressionInfo = new expression_type_info_1.ExpressionTypeInfo();
try {
const classDetails = this.prepareExpressionClassInfo();
if (classDetails && Array.isArray(classDetails) && classDetails.length > 0) {
outer: for (let clzInfo = 0; clzInfo < classDetails.length; ++clzInfo) {
const expressionClass = classDetails[clzInfo];
if (expressionClass && expressionClass.isHealthy()) {
const methods = expressionClass.getMethods();
for (let method = 0; method < methods.length; ++method) {
const includesMethod = expression.includes(methods[method]);
if (includesMethod) {
expressionInfo = expressionClass;
break outer;
}
}
}
}
}
}
catch (e) {
console.log(`Error while preparing the expression types. Error is ${e}`);
}
return expressionInfo;
};
this.prepareExpressionClassInfo = () => {
let classDetails = [];
const baseExpression = new expression_type_info_1.ExpressionTypeInfo(base_expression_1.BaseExpression.name, this.const.FILE_NAME_BASE_EXPRESSION, this.const.BASE_EXPRESSIONS);
classDetails.push(baseExpression);
const conditionalExpression = new expression_type_info_1.ExpressionTypeInfo(conditional_expression_1.ConditionalExpression.name, this.const.FILE_NAME_CONDITIONAL_EXPRESSION, this.const.CONDITIONAL_EXPRESSIONS);
classDetails.push(conditionalExpression);
const financialExpression = new expression_type_info_1.ExpressionTypeInfo(financial_expression_1.FinancialExpression.name, this.const.FILE_NAME_FINANCIAL_EXPRESSION, this.const.FINANCIAL_EXPRESSIONS);
classDetails.push(financialExpression);
const dateExpression = new expression_type_info_1.ExpressionTypeInfo(date_expression_1.DateExpression.name, this.const.FILE_NAME_DATE_EXPRESSION, this.const.DATE_EXPRESSIONS);
classDetails.push(dateExpression);
const timeExpression = new expression_type_info_1.ExpressionTypeInfo(time_expression_1.TimeExpression.name, this.const.FILE_NAME_TIME_EXPRESSION, this.const.TIME_EXPRESSIONS);
classDetails.push(timeExpression);
const numericalExpression = new expression_type_info_1.ExpressionTypeInfo(numerical_expression_1.NumericalExpression.name, this.const.FILE_NAME_NUMERICAL_EXPRESSION, this.const.NUMERICAL_EXPRESSIONS);
classDetails.push(numericalExpression);
const sentenceExpression = new expression_type_info_1.ExpressionTypeInfo(sentence_expression_1.SentenceExpression.name, this.const.FILE_NAME_SENTENCE_EXPRESSION, this.const.SENTENCE_EXPRESSIONS);
classDetails.push(sentenceExpression);
const loopExpression = new expression_type_info_1.ExpressionTypeInfo(loop_expression_1.LoopExpression.name, this.const.FILE_NAME_LOOP_EXPRESSION, this.const.LOOP_EXPRESSIONS);
classDetails.push(loopExpression);
return classDetails;
};
this.const = new constants_1.Constants();
}
}
exports.Utils = Utils;