ifc-expressions
Version:
Parsing and evaluation of IFC expressions
40 lines (39 loc) • 1.38 kB
JavaScript
;
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