UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

40 lines (39 loc) 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArrayExpr = void 0; const ExprEvalResult_js_1 = require("../ExprEvalResult.js"); const ExprKind_js_1 = require("../ExprKind.js"); const Expr0_js_1 = require("../Expr0.js"); const ArrayValue_js_1 = require("../../value/ArrayValue.js"); const Types_js_1 = require("../../type/Types.js"); class ArrayExpr extends Expr0_js_1.Expr0 { constructor(elements) { super(ExprKind_js_1.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 ((0, ExprEvalResult_js_1.isExprEvalError)(evalResult)) { return evalResult; } evaluatedResult.push(evalResult.result); } return new ArrayValue_js_1.ArrayValue(evaluatedResult); } buildExprString(builder) { builder .appendString("[") .appendExprArray(this.elements, ",") .appendString("]"); } getType() { return Types_js_1.Types.tuple(...this.elements.map((e) => e.getType())); } } exports.ArrayExpr = ArrayExpr; //# sourceMappingURL=ArrayExpr.js.map