UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

53 lines (52 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExprBase = void 0; const ExprEvalResult_js_1 = require("./ExprEvalResult.js"); const TextSpan_js_1 = require("../util/TextSpan.js"); const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js"); const ExprStringBuilder_js_1 = require("./ExprStringBuilder.js"); class ExprBase { constructor(exprKind) { this.exprKind = exprKind; } setTextSpan(ctx) { this.textSpan = ctx; } getTextSpan() { return this.textSpan; } getKind() { return this.exprKind; } wrapInResultIfNecessary(result) { if ((0, ExprEvalResult_js_1.isExprEvalError)(result)) { if (!this.hasTextSpan(result)) { return new ExprEvalResult_js_1.ExprEvalConsequentialError1Obj(this.getKind(), result, undefined, this.getTextSpan()); } return result; } return new ExprEvalResult_js_1.ExprEvalSuccessObj(result); } hasTextSpan(error) { if (!(0, IfcExpressionUtils_js_1.isNullish)(error["textSpan"])) { return true; } const cause = error["cause"]; if (!(0, IfcExpressionUtils_js_1.isNullish)(cause)) { return this.hasTextSpan(cause); } const leftCause = error["leftCause"]; const rightCause = error["rightCause"]; return (((0, IfcExpressionUtils_js_1.isNullish)(leftCause) ? false : this.hasTextSpan(leftCause)) || ((0, IfcExpressionUtils_js_1.isNullish)(rightCause) ? false : this.hasTextSpan(rightCause))); } toExprString(builder = new ExprStringBuilder_js_1.ExprStringBuilder(0)) { this.buildExprString(builder); if ((0, IfcExpressionUtils_js_1.isNullish)(this.getTextSpan())) { this.setTextSpan(TextSpan_js_1.TextSpan.of(1, builder.startPos + 1, 1, builder.endPos + 1)); } return builder.build(); } } exports.ExprBase = ExprBase; //# sourceMappingURL=ExprBase.js.map