UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

30 lines (29 loc) 1.17 kB
import { Func } from "../Func.js"; import { FuncArgInt } from "../arg/FuncArgInt.js"; import { NumericValue } from "../../../value/NumericValue.js"; import { FuncArgNumeric } from "../arg/FuncArgNumeric.js"; import { ExprEvalSuccessObj } from "../../ExprEvalResult.js"; import { Decimal } from "decimal.js"; import { Type } from "../../../type/Types.js"; export class ROUND extends Func { constructor() { super("ROUND", [ new FuncArgNumeric(true, ROUND.KEY_INPUT), new FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue(0)), ]); } getReturnType(argumentTypes) { return 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.ROUND_HALF_UP); return new ExprEvalSuccessObj(new NumericValue(rounded)); } } ROUND.KEY_INPUT = "input"; ROUND.KEY_NUM_DECMIALS = "num_decimals"; //# sourceMappingURL=ROUND.js.map