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