som-exp-sdk
Version:
Evaluate the User Expression
49 lines (48 loc) • 2.61 kB
JavaScript
;
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;