UNPKG

jexl-functions-fork

Version:
104 lines (103 loc) 3.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.evalCriteriaParseResult = exports.parseCriteriaExpression = void 0; var CRITERIA_OPERATORS = ['>=', '<=', '<>', '=', '>', '<']; var DEFAULT_OPERATION = '='; var SPLIT_REGEX = new RegExp("^(".concat(CRITERIA_OPERATORS.join('|'), ")")); var SYSTEM_CRITERIA = ['#TRUE', '#FALSE', '#UNDEFINED', '#NULL', '#EMPTY', '#NOT_EMPTY', '#BLANK', '#NOT_BLANK']; var isSystemCriteria = function (criteria) { return SYSTEM_CRITERIA.includes(criteria); }; var isSystemCriteriaParseResult = function (result) { return !!result.systemCriteria; }; var coerceOperand = function (operand) { var coerced = Number(operand); return Number.isNaN(coerced) ? operand : coerced; }; var parseCriteriaExpression = function (expression) { if (isSystemCriteria(expression)) { return { systemCriteria: expression, }; } var tokens = expression .split(SPLIT_REGEX) .filter(function (token) { return !!token; }); var _a = tokens[0], operation = _a === void 0 ? '' : _a, _b = tokens[1], operand = _b === void 0 ? '' : _b; var isOperationExists = CRITERIA_OPERATORS.includes(operation); return { operator: isOperationExists ? operation : DEFAULT_OPERATION, rightOperand: coerceOperand(isOperationExists ? operand.trimStart() : expression.trimStart()), }; }; exports.parseCriteriaExpression = parseCriteriaExpression; var evalOperationParseResult = function (parseResult, leftOperand) { if (leftOperand === null || leftOperand === undefined) { return false; } var typedLeftOperand = leftOperand; switch (parseResult.operator) { case '>=': { return typedLeftOperand >= parseResult.rightOperand; } case '<=': { return typedLeftOperand <= parseResult.rightOperand; } case '<>': { return leftOperand !== parseResult.rightOperand; } case '=': { return leftOperand === parseResult.rightOperand; } case '>': { return typedLeftOperand > parseResult.rightOperand; } case '<': { return typedLeftOperand < parseResult.rightOperand; } default: { return leftOperand === parseResult.rightOperand; } } }; var evalSystemCriteriaParseResult = function (parseResult, leftOperand) { switch (parseResult.systemCriteria) { case '#TRUE': { return leftOperand === true; } case '#FALSE': { return leftOperand === false; } case '#UNDEFINED': { return leftOperand === undefined; } case '#NULL': { return leftOperand === null; } case '#EMPTY': { return leftOperand === null || leftOperand === undefined || leftOperand === ''; } case '#NOT_EMPTY': { return leftOperand !== null && leftOperand !== undefined && leftOperand !== ''; } case '#BLANK': { return leftOperand === ''; } case '#NOT_BLANK': { return leftOperand !== ''; } default: { return false; } } }; var evalCriteriaParseResult = function (parseResult, leftOperand) { if (isSystemCriteriaParseResult(parseResult)) { return evalSystemCriteriaParseResult(parseResult, leftOperand); } return isSystemCriteriaParseResult(parseResult) ? evalSystemCriteriaParseResult(parseResult, leftOperand) : evalOperationParseResult(parseResult, leftOperand); }; exports.evalCriteriaParseResult = evalCriteriaParseResult;