UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

34 lines (33 loc) 1.45 kB
"use strict"; 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