UNPKG

som-exp-sdk

Version:

Evaluate the User Expression

65 lines (64 loc) 4.37 kB
"use strict"; 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;