UNPKG

@discipl/law-reg

Version:

Discipl Law and Regulation Compliance Library

42 lines (30 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MinExpressionChecker = void 0; var _baseSubExpressionChecker = require("./baseSubExpressionChecker"); var _big_util = require("../utils/big_util"); class MinExpressionChecker extends _baseSubExpressionChecker.BaseSubExpressionChecker { async checkSubExpression(fact, ssid, context) { let minResult; for (const op of fact.operands) { const newContext = this._getContextExplainer().extendContextWithExplanation(context); const operandResult = await this._getExpressionChecker().checkExpression(op, ssid, newContext); this.logger.debug('OperandResult in MIN', operandResult, 'for operand', op); if (operandResult === undefined) { minResult = undefined; break; } else if (!_big_util.BigUtil.isNumeric(operandResult)) { minResult = false; break; } else if (!_big_util.BigUtil.isNumeric(minResult) || _big_util.BigUtil.lessThan(operandResult, minResult)) { minResult = operandResult; } } this.logger.debug('Resolved MIN as', String(minResult)); this._getContextExplainer().extendContextExplanationWithResult(context, minResult); return minResult; } } exports.MinExpressionChecker = MinExpressionChecker;