UNPKG

som-exp-sdk

Version:

Evaluate the User Expression

49 lines (48 loc) 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConditionalExpression = void 0; const base_expression_1 = require("./base-expression"); const constants_1 = require("./constants"); class ConditionalExpression { constructor() { this.ifElse = (inputExp) => { // Ex: ifElse('if12>15(1)Else(0)) //return 0 let output = this.const.INVALID_EXPRESSION; try { let condition = false; const regex = this.const.IF_ELSE_REGEX; if (inputExp && regex.test(inputExp)) { const exprVariables = regex.exec(inputExp); if (typeof exprVariables != undefined) { const conditionExp = this.baseExpression.removeSpaces(exprVariables === null || exprVariables === void 0 ? void 0 : exprVariables["1"]); const ifExp = this.baseExpression.removeSpaces(exprVariables === null || exprVariables === void 0 ? void 0 : exprVariables["3"]); const elseExp = this.baseExpression.removeSpaces(exprVariables === null || exprVariables === void 0 ? void 0 : exprVariables["5"]); let isConditionBoolean = Boolean(this.baseExpression.evaluateExpression(conditionExp)); if (conditionExp && typeof isConditionBoolean === this.const.TYPE_BOOLEAN) { condition = Boolean(this.baseExpression.evaluateExpression(conditionExp)); output = (condition) ? this.baseExpression.evaluateExpression(ifExp).toString() : this.baseExpression.evaluateExpression(elseExp).toString(); } else { console.log(`${conditionExp.toString()} is not a valid Boolean expression`); } } else { console.log(`No groups found for expression ${inputExp}`); } } else { console.log(`Input expression: ${inputExp} is not a valid expression.`); } } catch (ex) { console.log(`Error occurred when evaluating expression ${inputExp}. Error is ${ex}`); } return output; }; this.const = new constants_1.Constants(); this.baseExpression = new base_expression_1.BaseExpression(); } } exports.ConditionalExpression = ConditionalExpression;