ifc-expressions
Version:
Parsing and evaluation of IFC expressions
34 lines (33 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ROUND = void 0;
const Func_js_1 = require("../Func.js");
const FuncArgInt_js_1 = require("../arg/FuncArgInt.js");
const NumericValue_js_1 = require("../../../value/NumericValue.js");
const FuncArgNumeric_js_1 = require("../arg/FuncArgNumeric.js");
const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
const decimal_js_1 = require("decimal.js");
const Types_js_1 = require("../../../type/Types.js");
class ROUND extends Func_js_1.Func {
constructor() {
super("ROUND", [
new FuncArgNumeric_js_1.FuncArgNumeric(true, ROUND.KEY_INPUT),
new FuncArgInt_js_1.FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue_js_1.NumericValue(0)),
]);
}
getReturnType(argumentTypes) {
return Types_js_1.Type.NUMERIC;
}
calculateResult(callingExpr, evaluatedArguments) {
const input = evaluatedArguments.get(ROUND.KEY_INPUT);
const numDecimals = evaluatedArguments.get(ROUND.KEY_NUM_DECMIALS);
const rounded = input
.getValue()
.toDecimalPlaces(numDecimals.getValue().toNumber(), decimal_js_1.Decimal.ROUND_HALF_UP);
return new ExprEvalResult_js_1.ExprEvalSuccessObj(new NumericValue_js_1.NumericValue(rounded));
}
}
exports.ROUND = ROUND;
ROUND.KEY_INPUT = "input";
ROUND.KEY_NUM_DECMIALS = "num_decimals";
//# sourceMappingURL=ROUND.js.map