@discipl/law-reg
Version:
Discipl Law and Regulation Compliance Library
42 lines (30 loc) • 1.31 kB
JavaScript
;
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;