UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

50 lines (49 loc) 2.05 kB
import { Func } from "../Func.js"; import { ExprEvalSuccessObj } from "../../ExprEvalResult.js"; import { StringValue } from "../../../value/StringValue.js"; import { IfcDateTimeValue } from "../../../value/IfcDateTimeValue.js"; import { IfcTimeStampValue } from "../../../value/IfcTimeStampValue.js"; import { FuncArgIfcDateTime } from "../arg/FuncArgIfcDateTime.js"; import { FuncArgIfcDuration } from "../arg/FuncArgIfcDuration.js"; import { IfcDurationValue } from "../../../value/IfcDurationValue.js"; import { FuncArgUnion } from "../arg/FuncArgUnion.js"; import { FuncArgIfcTimeStamp } from "../arg/FuncArgIfcTimeStamp.js"; import { FuncArgIfcDurationString } from "../arg/FuncArgIfcDurationString.js"; export class ADDDURATION extends Func { constructor() { super("ADDDURATION", [ FuncArgUnion.of(true, "pointInTime", [ FuncArgIfcTimeStamp, FuncArgIfcDateTime, ]), FuncArgUnion.of(true, "duration", [ FuncArgIfcDuration, FuncArgIfcDurationString, ]), ]); } calculateResult(callingExpr, evaluatedArguments) { const durationArg = evaluatedArguments.get("duration"); var duration; if (durationArg instanceof IfcDurationValue) { duration = durationArg; } else if (durationArg instanceof StringValue) { duration = IfcDurationValue.of(durationArg.getValue()); } const pointInTime = evaluatedArguments.get("pointInTime"); if (pointInTime instanceof IfcDateTimeValue) { return new ExprEvalSuccessObj(pointInTime.addDuration(duration)); } else if (pointInTime instanceof IfcTimeStampValue) { return new ExprEvalSuccessObj(pointInTime .toIfcDateTimeValue() .addDuration(duration) .toIfcTimeStampValue()); } } getReturnType(argumentTypes) { return argumentTypes[0]; } } //# sourceMappingURL=ADDDURATION.js.map