UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

36 lines (35 loc) 1.14 kB
import { isExprEvalError } from "../ExprEvalResult.js"; import { ExprKind } from "../ExprKind.js"; import { Expr0 } from "../Expr0.js"; import { ArrayValue } from "../../value/ArrayValue.js"; import { Types } from "../../type/Types.js"; export class ArrayExpr extends Expr0 { constructor(elements) { super(ExprKind.ARRAY); this.elements = elements; } getChildren() { return [...this.elements]; } doEvaluate(ctx, localCtx) { const evaluatedResult = []; for (let i = 0; i < this.elements.length; i++) { const evalResult = this.elements[i].evaluate(ctx, localCtx); if (isExprEvalError(evalResult)) { return evalResult; } evaluatedResult.push(evalResult.result); } return new ArrayValue(evaluatedResult); } buildExprString(builder) { builder .appendString("[") .appendExprArray(this.elements, ",") .appendString("]"); } getType() { return Types.tuple(...this.elements.map((e) => e.getType())); } } //# sourceMappingURL=ArrayExpr.js.map