ifc-expressions 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IfcExpression.d.ts +1 -1
- package/dist/cjs/ExprVisitor.js +4 -4
- package/dist/cjs/ExprVisitor.js.map +1 -1
- package/dist/cjs/IfcExpression.js.map +1 -1
- package/dist/cjs/expression/Expr.js.map +1 -1
- package/dist/cjs/expression/Expr0.js +4 -4
- package/dist/cjs/expression/Expr0.js.map +1 -1
- package/dist/cjs/expression/Expr1.js +10 -10
- package/dist/cjs/expression/Expr1.js.map +1 -1
- package/dist/cjs/expression/Expr2.js +13 -13
- package/dist/cjs/expression/Expr2.js.map +1 -1
- package/dist/cjs/expression/Expr2LeftBeforeRight.js +15 -15
- package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -1
- package/dist/cjs/expression/ExprBase.js +3 -3
- package/dist/cjs/expression/ExprBase.js.map +1 -1
- package/dist/cjs/expression/ExprEvalResult.js +2 -2
- package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/cjs/expression/LiteralExpr.js +4 -4
- package/dist/cjs/expression/LiteralExpr.js.map +1 -1
- package/dist/cjs/expression/function/Func.js +15 -15
- package/dist/cjs/expression/function/Func.js.map +1 -1
- package/dist/cjs/expression/function/FuncArg.js +2 -2
- package/dist/cjs/expression/function/FuncArg.js.map +1 -1
- package/dist/cjs/expression/function/FunctionExpr.js +11 -11
- package/dist/cjs/expression/function/FunctionExpr.js.map +1 -1
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +9 -9
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgBase.js +4 -4
- package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgInt.js +8 -8
- package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js +5 -5
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
- package/dist/cjs/expression/function/impl/MAP.js +15 -15
- package/dist/cjs/expression/function/impl/MAP.js.map +1 -1
- package/dist/cjs/expression/function/impl/ROUND.js +9 -9
- package/dist/cjs/expression/function/impl/ROUND.js.map +1 -1
- package/dist/cjs/expression/numeric/DivideExpr.js +4 -4
- package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MinusExpr.js +2 -2
- package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MultiplyExpr.js +2 -2
- package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js +2 -2
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js +4 -4
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/PlusExpr.js +2 -2
- package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js +9 -9
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +2 -2
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +13 -13
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js +18 -18
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +2 -2
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringConcatExpr.js +2 -2
- package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringLiteralExpr.js +4 -4
- package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/structure/ArrayExpr.js +9 -9
- package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -1
- package/dist/cjs/value/ArrayValue.js.map +1 -1
- package/dist/cjs/value/LiteralValue.js.map +1 -1
- package/dist/expression/Expr.d.ts +2 -2
- package/dist/expression/Expr0.d.ts +3 -3
- package/dist/expression/Expr1.d.ts +4 -4
- package/dist/expression/Expr2.d.ts +4 -4
- package/dist/expression/Expr2LeftBeforeRight.d.ts +4 -4
- package/dist/expression/ExprBase.d.ts +4 -4
- package/dist/expression/ExprEvalResult.d.ts +2 -2
- package/dist/expression/LiteralExpr.d.ts +3 -3
- package/dist/expression/function/Func.d.ts +3 -3
- package/dist/expression/function/FuncArg.d.ts +2 -2
- package/dist/expression/function/FunctionExpr.d.ts +6 -6
- package/dist/expression/function/IfcExpressionFunctions.d.ts +3 -3
- package/dist/expression/function/arg/FuncArgBase.d.ts +3 -3
- package/dist/expression/function/arg/FuncArgInt.d.ts +4 -4
- package/dist/expression/function/arg/FuncArgNumeric.d.ts +4 -4
- package/dist/expression/function/impl/MAP.d.ts +3 -3
- package/dist/expression/function/impl/ROUND.d.ts +3 -3
- package/dist/expression/numeric/DivideExpr.d.ts +1 -1
- package/dist/expression/numeric/MinusExpr.d.ts +1 -1
- package/dist/expression/numeric/MultiplyExpr.d.ts +1 -1
- package/dist/expression/numeric/NumericLiteralExpr.d.ts +2 -2
- package/dist/expression/reference/AttributeReferenceExpr.d.ts +2 -2
- package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +2 -2
- package/dist/expression/reference/NestedObjectChainExpr.d.ts +2 -2
- package/dist/expression/string/StringLiteralExpr.d.ts +1 -1
- package/dist/expression/structure/ArrayExpr.d.ts +6 -6
- package/dist/mjs/ExprVisitor.js +2 -2
- package/dist/mjs/ExprVisitor.js.map +1 -1
- package/dist/mjs/IfcExpression.js.map +1 -1
- package/dist/mjs/expression/Expr.js.map +1 -1
- package/dist/mjs/expression/Expr0.js +2 -2
- package/dist/mjs/expression/Expr0.js.map +1 -1
- package/dist/mjs/expression/Expr1.js +3 -3
- package/dist/mjs/expression/Expr1.js.map +1 -1
- package/dist/mjs/expression/Expr2.js +3 -3
- package/dist/mjs/expression/Expr2.js.map +1 -1
- package/dist/mjs/expression/Expr2LeftBeforeRight.js +3 -3
- package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -1
- package/dist/mjs/expression/ExprBase.js +1 -1
- package/dist/mjs/expression/ExprBase.js.map +1 -1
- package/dist/mjs/expression/ExprEvalResult.js +1 -1
- package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/mjs/expression/LiteralExpr.js +2 -2
- package/dist/mjs/expression/LiteralExpr.js.map +1 -1
- package/dist/mjs/expression/function/Func.js +4 -4
- package/dist/mjs/expression/function/Func.js.map +1 -1
- package/dist/mjs/expression/function/FuncArg.js +1 -1
- package/dist/mjs/expression/function/FuncArg.js.map +1 -1
- package/dist/mjs/expression/function/FunctionExpr.js +5 -5
- package/dist/mjs/expression/function/FunctionExpr.js.map +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +5 -5
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgBase.js +2 -2
- package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgInt.js +4 -4
- package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js +3 -3
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
- package/dist/mjs/expression/function/impl/MAP.js +5 -5
- package/dist/mjs/expression/function/impl/MAP.js.map +1 -1
- package/dist/mjs/expression/function/impl/ROUND.js +5 -5
- package/dist/mjs/expression/function/impl/ROUND.js.map +1 -1
- package/dist/mjs/expression/numeric/DivideExpr.js +2 -2
- package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MinusExpr.js +1 -1
- package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MultiplyExpr.js +1 -1
- package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js +1 -1
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js +2 -2
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/PlusExpr.js +1 -1
- package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js +3 -3
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +1 -1
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +5 -5
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js +5 -5
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +1 -1
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringConcatExpr.js +1 -1
- package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringLiteralExpr.js +2 -2
- package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/structure/ArrayExpr.js +4 -4
- package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -1
- package/dist/mjs/value/ArrayValue.js.map +1 -1
- package/dist/mjs/value/LiteralValue.js.map +1 -1
- package/dist/value/ArrayValue.d.ts +1 -1
- package/dist/value/LiteralValue.d.ts +1 -1
- package/package.json +1 -1
package/dist/IfcExpression.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ import { ObjectAccessor } from "./context/ObjectAccessor.js";
|
|
|
23
23
|
import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
|
|
24
24
|
import type { LiteralValueAnyArity } from "./value/LiteralValueAnyArity.js";
|
|
25
25
|
import type { PrimitiveValueType } from "./value/PrimitiveValueType.js";
|
|
26
|
-
import { ExprEvalResult } from "./expression/ExprEvalResult";
|
|
26
|
+
import { ExprEvalResult } from "./expression/ExprEvalResult.js";
|
|
27
27
|
export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, LiteralValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, ExprVisitor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, };
|
|
28
28
|
export type { PrimitiveValueType, LiteralValueAnyArity };
|
|
29
29
|
export declare class IfcExpression {
|
package/dist/cjs/ExprVisitor.js
CHANGED
|
@@ -22,8 +22,8 @@ const NumericValue_js_1 = require("./value/NumericValue.js");
|
|
|
22
22
|
const StringValue_js_1 = require("./value/StringValue.js");
|
|
23
23
|
const StringLiteralExpr_js_1 = require("./expression/string/StringLiteralExpr.js");
|
|
24
24
|
const StringConcatExpr_js_1 = require("./expression/string/StringConcatExpr.js");
|
|
25
|
-
const
|
|
26
|
-
const
|
|
25
|
+
const ArrayExpr_js_1 = require("./expression/structure/ArrayExpr.js");
|
|
26
|
+
const FunctionExpr_js_1 = require("./expression/function/FunctionExpr.js");
|
|
27
27
|
class ExprVisitor extends IfcExpressionVisitor_js_1.default {
|
|
28
28
|
constructor() {
|
|
29
29
|
super();
|
|
@@ -117,7 +117,7 @@ class ExprVisitor extends IfcExpressionVisitor_js_1.default {
|
|
|
117
117
|
* ArrayExpr
|
|
118
118
|
*===============================================*/
|
|
119
119
|
this.visitArray = (ctx) => {
|
|
120
|
-
return new
|
|
120
|
+
return new ArrayExpr_js_1.ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));
|
|
121
121
|
};
|
|
122
122
|
this.collectArrayElements = (ctx) => {
|
|
123
123
|
const first = this.visit(ctx.expr());
|
|
@@ -133,7 +133,7 @@ class ExprVisitor extends IfcExpressionVisitor_js_1.default {
|
|
|
133
133
|
* FuncExpr
|
|
134
134
|
*===============================================*/
|
|
135
135
|
this.visitFunctionCall = (ctx) => {
|
|
136
|
-
return new
|
|
136
|
+
return new FunctionExpr_js_1.FunctionExpr(ctx._name.text, this.collectFunctionArguments(ctx.exprList()));
|
|
137
137
|
};
|
|
138
138
|
this.collectFunctionArguments = (ctx) => {
|
|
139
139
|
const first = this.visit(ctx.expr());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr.js\";\nimport {\n ArrayContext,\n ArrayElementListContext,\n AttributeRefContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr.js\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr.js\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr.js\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr.js\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr.js\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr.js\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr.js\";\nimport { ArrayExpr } from \"./expression/structure/ArrayExpr\";\nimport { FunctionExpr } from \"./expression/function/FunctionExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (isPresent(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (isPresent(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArray: (ctx: ArrayContext) => Expr<any> = (ctx) => {\n return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n return new FunctionExpr(\n ctx._name.text,\n this.collectFunctionArguments(ctx.exprList())\n );\n };\n\n collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n const arr = this.collectFunctionArguments(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr.js\";\nimport {\n ArrayContext,\n ArrayElementListContext,\n AttributeRefContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr.js\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr.js\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr.js\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr.js\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr.js\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr.js\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr.js\";\nimport { ArrayExpr } from \"./expression/structure/ArrayExpr.js\";\nimport { FunctionExpr } from \"./expression/function/FunctionExpr.js\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (isPresent(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (isPresent(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArray: (ctx: ArrayContext) => Expr<any> = (ctx) => {\n return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n return new FunctionExpr(\n ctx._name.text,\n this.collectFunctionArguments(ctx.exprList())\n );\n };\n\n collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n const arr = this.collectFunctionArguments(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/IfcExpression.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6E;AAC7E,qDAA+C;AA+C7C,4FA/CO,4BAAW,OA+CP;AA9Cb,mFAA6E;AAgD3E,2GAhDO,0DAA0B,OAgDP;AA/C5B,mEAA+D;AAkD7D,0FAlDO,iCAAS,OAkDP;AADT,0FAjDkB,iCAAS,OAiDlB;AA7CX,2EAAqE;AAyBnE,mGAzBO,0CAAkB,OAyBP;AAvBpB,2DAAqD;AA0BnD,4FA1BO,4BAAW,OA0BP;AAzBb,6DAAuD;AA4BrD,6FA5BO,8BAAY,OA4BP;AA3Bd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAxBd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAvBd,iEAA2D;AA0BzD,+FA1BO,kCAAc,OA0BP;AAzBhB,mFAA6E;AA0B3E,uGA1BO,kDAAsB,OA0BP;AAzBxB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iGAE6C;AAC7C,mGAAwE;AA4BtE,+BA5BK,iCAAoB,CA4BL;AA3BtB,+FAAoE;AAEpE,0GAAoG;AAuBlG,iHAvBO,sEAAgC,OAuBP;AASlC,MAAa,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,+BAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,gCAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,iCAAS,EAAC,aAAa,CAAC,EAAE;YAC5B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,EAAe,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,IAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,4BAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAnCD,sCAmCC","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { LiteralValue } from \"./value/LiteralValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity.js\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType.js\";\nimport { ExprEvalResult } from \"./expression/ExprEvalResult\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprVisitor,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (isPresent(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): ExprEvalResult<any> {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context, new Map<string, any>());\n }\n\n private static extractExprTree(\n tree: ExprContext\n ): Expr<LiteralValueAnyArity> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/IfcExpression.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6E;AAC7E,qDAA+C;AA+C7C,4FA/CO,4BAAW,OA+CP;AA9Cb,mFAA6E;AAgD3E,2GAhDO,0DAA0B,OAgDP;AA/C5B,mEAA+D;AAkD7D,0FAlDO,iCAAS,OAkDP;AADT,0FAjDkB,iCAAS,OAiDlB;AA7CX,2EAAqE;AAyBnE,mGAzBO,0CAAkB,OAyBP;AAvBpB,2DAAqD;AA0BnD,4FA1BO,4BAAW,OA0BP;AAzBb,6DAAuD;AA4BrD,6FA5BO,8BAAY,OA4BP;AA3Bd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAxBd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAvBd,iEAA2D;AA0BzD,+FA1BO,kCAAc,OA0BP;AAzBhB,mFAA6E;AA0B3E,uGA1BO,kDAAsB,OA0BP;AAzBxB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iGAE6C;AAC7C,mGAAwE;AA4BtE,+BA5BK,iCAAoB,CA4BL;AA3BtB,+FAAoE;AAEpE,0GAAoG;AAuBlG,iHAvBO,sEAAgC,OAuBP;AASlC,MAAa,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,+BAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,gCAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,iCAAS,EAAC,aAAa,CAAC,EAAE;YAC5B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,EAAe,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,IAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,4BAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAnCD,sCAmCC","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { LiteralValue } from \"./value/LiteralValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity.js\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType.js\";\nimport { ExprEvalResult } from \"./expression/ExprEvalResult.js\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprVisitor,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (isPresent(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): ExprEvalResult<any> {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context, new Map<string, any>());\n }\n\n private static extractExprTree(\n tree: ExprContext\n ): Expr<LiteralValueAnyArity> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\nimport { ExprEvalResult } from \"./ExprEvalResult\";\n\nexport interface Expr<T> {\n evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n getKind(): ExprKind;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprEvalResult } from \"./ExprEvalResult.js\";\n\nexport interface Expr<T> {\n evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n getKind(): ExprKind;\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Expr0 = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
class Expr0 extends
|
|
4
|
+
const ExprBase_js_1 = require("./ExprBase.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
6
|
+
class Expr0 extends ExprBase_js_1.ExprBase {
|
|
7
7
|
constructor(kind) {
|
|
8
8
|
super(kind);
|
|
9
9
|
}
|
|
@@ -17,7 +17,7 @@ class Expr0 extends ExprBase_1.ExprBase {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
handleError(error) {
|
|
20
|
-
return new
|
|
20
|
+
return new ExprEvalResult_js_1.ExprEvalErrorObj(this.getKind(), ExprEvalResult_js_1.ExprEvalStatus.ERROR, error);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
exports.Expr0 = Expr0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/Expr0.ts"],"names":[],"mappings":";;;AAEA
|
|
1
|
+
{"version":3,"sources":["../../src/expression/Expr0.ts"],"names":[],"mappings":";;;AAEA,+CAAyC;AACzC,2DAK6B;AAE7B,MAAsB,KAAS,SAAQ,sBAAW;IAChD,YAAsB,IAAc;QAClC,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAOM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAChC;IACH,CAAC;IAES,WAAW,CAAC,KAAU;QAC9B,OAAO,IAAI,oCAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,kCAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAzBD,sBAyBC","file":"expression/Expr0.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprBase } from \"./ExprBase.js\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult.js\";\n\nexport abstract class Expr0<E> extends ExprBase<E> {\n protected constructor(kind: ExprKind) {\n super(kind);\n }\n\n protected abstract doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): E | ExprEvalError;\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n try {\n const result = this.doEvaluate(ctx, localCtx);\n return this.wrapInResultIfNecessary(result);\n } catch (error) {\n return this.handleError(error);\n }\n }\n\n protected handleError(error: any): ExprEvalError {\n return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.ERROR, error);\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Expr1 = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
class Expr1 extends
|
|
4
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
5
|
+
const ExprBase_js_1 = require("./ExprBase.js");
|
|
6
|
+
const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
|
|
7
|
+
class Expr1 extends ExprBase_js_1.ExprBase {
|
|
8
8
|
constructor(exprKind, value) {
|
|
9
9
|
super(exprKind);
|
|
10
10
|
this.value = value;
|
|
@@ -17,11 +17,11 @@ class Expr1 extends ExprBase_1.ExprBase {
|
|
|
17
17
|
* @protected
|
|
18
18
|
*/
|
|
19
19
|
obtainResultForSubExpressionError(ctx, localCtx, subExpressionResult) {
|
|
20
|
-
return new
|
|
20
|
+
return new ExprEvalResult_js_1.ExprEvalConsequentialError1Obj(this.getKind(), subExpressionResult);
|
|
21
21
|
}
|
|
22
22
|
// calculate the final result
|
|
23
23
|
makeErrorOrCalculate(ctx, localCtx, subExpressionResult) {
|
|
24
|
-
if ((0,
|
|
24
|
+
if ((0, ExprEvalResult_js_1.isExprEvalError)(subExpressionResult)) {
|
|
25
25
|
return this.obtainResultForSubExpressionError(ctx, localCtx, subExpressionResult);
|
|
26
26
|
}
|
|
27
27
|
return this.wrapInResultIfNecessary(this.calculateResult(ctx, localCtx, subExpressionResult.result));
|
|
@@ -32,12 +32,12 @@ class Expr1 extends ExprBase_1.ExprBase {
|
|
|
32
32
|
}
|
|
33
33
|
evaluate(ctx, localCtx) {
|
|
34
34
|
const beforeRecursionError = this.onBeforeRecusion(ctx, localCtx);
|
|
35
|
-
if (!(0,
|
|
35
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(beforeRecursionError)) {
|
|
36
36
|
return beforeRecursionError;
|
|
37
37
|
}
|
|
38
38
|
const subResult = this.value.evaluate(ctx, localCtx);
|
|
39
|
-
if ((0,
|
|
40
|
-
return new
|
|
39
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(subResult)) {
|
|
40
|
+
return new ExprEvalResult_js_1.ExprEvalError1Obj(this.getKind(), new ExprEvalResult_js_1.ExprEvalErrorUndefinedResult(this.value.getKind()), ExprEvalResult_js_1.ExprEvalStatus.MISSING_OPERAND);
|
|
41
41
|
}
|
|
42
42
|
try {
|
|
43
43
|
return this.makeErrorOrCalculate(ctx, localCtx, subResult);
|
|
@@ -47,7 +47,7 @@ class Expr1 extends ExprBase_1.ExprBase {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
handleError(error, subResult) {
|
|
50
|
-
return new
|
|
50
|
+
return new ExprEvalResult_js_1.ExprEvalError1Obj(this.getKind(), subResult, ExprEvalResult_js_1.ExprEvalStatus.ERROR, error);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
exports.Expr1 = Expr1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/Expr1.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../src/expression/Expr1.ts"],"names":[],"mappings":";;;AAEA,2DAQ6B;AAC7B,+CAAyC;AAEzC,oEAAqD;AAErD,MAAsB,KAAY,SAAQ,sBAAW;IAGnD,YAAsB,QAAkB,EAAE,KAAc;QACtD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAQD;;;;;;OAMG;IACO,iCAAiC,CACzC,GAAyB,EACzB,QAA0B,EAC1B,mBAAkC;QAElC,OAAO,IAAI,kDAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,6BAA6B;IACrB,oBAAoB,CAC1B,GAAyB,EACzB,QAA0B,EAC1B,mBAAsC;QAEtC,IAAI,IAAA,mCAAe,EAAC,mBAAmB,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC,iCAAiC,CAC3C,GAAG,EACH,QAAQ,EACR,mBAAmB,CACpB,CAAC;SACH;QACD,OAAO,IAAI,CAAC,uBAAuB,CACjC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAChE,CAAC;IACJ,CAAC;IAES,gBAAgB,CACxB,GAAyB,EACzB,QAA0B;QAE1B,iDAAiD;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,IAAA,iCAAS,EAAC,oBAAoB,CAAC,EAAE;YACpC,OAAO,oBAAoB,CAAC;SAC7B;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAA,iCAAS,EAAC,SAAS,CAAC,EAAE;YACxB,OAAO,IAAI,qCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,gDAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACtD,kCAAc,CAAC,eAAe,CAC/B,CAAC;SACH;QACD,IAAI;YACF,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;SAC5D;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SAC3C;IACH,CAAC;IAES,WAAW,CACnB,KAAU,EACV,SAA4B;QAE5B,OAAO,IAAI,qCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,SAAS,EACT,kCAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AA5FD,sBA4FC","file":"expression/Expr1.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport {\n ExprEvalConsequentialError1Obj,\n ExprEvalError,\n ExprEvalError1Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalError,\n} from \"./ExprEvalResult.js\";\nimport { ExprBase } from \"./ExprBase.js\";\nimport { Expr } from \"./Expr.js\";\nimport { isNullish } from \"../IfcExpressionUtils.js\";\n\nexport abstract class Expr1<V, E> extends ExprBase<E> {\n readonly value: Expr<V>;\n\n protected constructor(exprKind: ExprKind, value: Expr<V>) {\n super(exprKind);\n this.value = value;\n }\n\n protected abstract calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: V\n ): E | ExprEvalError;\n\n /**\n * Override to generate a more specific error result.\n * @param ctx\n * @param localCtx\n * @param subExpressionResult\n * @protected\n */\n protected obtainResultForSubExpressionError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: ExprEvalError\n ): ExprEvalResult<E> {\n return new ExprEvalConsequentialError1Obj(\n this.getKind(),\n subExpressionResult\n );\n }\n\n // calculate the final result\n private makeErrorOrCalculate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: ExprEvalResult<V>\n ): ExprEvalResult<E> {\n if (isExprEvalError(subExpressionResult)) {\n return this.obtainResultForSubExpressionError(\n ctx,\n localCtx,\n subExpressionResult\n );\n }\n return this.wrapInResultIfNecessary(\n this.calculateResult(ctx, localCtx, subExpressionResult.result)\n );\n }\n\n protected onBeforeRecusion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): undefined | ExprEvalError {\n // do something before we calculate the subresult\n return undefined;\n }\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n const beforeRecursionError = this.onBeforeRecusion(ctx, localCtx);\n if (!isNullish(beforeRecursionError)) {\n return beforeRecursionError;\n }\n const subResult = this.value.evaluate(ctx, localCtx);\n if (isNullish(subResult)) {\n return new ExprEvalError1Obj(\n this.getKind(),\n new ExprEvalErrorUndefinedResult(this.value.getKind()),\n ExprEvalStatus.MISSING_OPERAND\n );\n }\n try {\n return this.makeErrorOrCalculate(ctx, localCtx, subResult);\n } catch (error) {\n return this.handleError(error, subResult);\n }\n }\n\n protected handleError(\n error: any,\n subResult: ExprEvalResult<V>\n ): ExprEvalError {\n return new ExprEvalError1Obj(\n this.getKind(),\n subResult,\n ExprEvalStatus.ERROR,\n error\n );\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Expr2 = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
class Expr2 extends
|
|
4
|
+
const ExprBase_js_1 = require("./ExprBase.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
6
|
+
const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
|
|
7
|
+
class Expr2 extends ExprBase_js_1.ExprBase {
|
|
8
8
|
constructor(exprKind, left, right) {
|
|
9
9
|
super(exprKind);
|
|
10
10
|
this.left = left;
|
|
@@ -19,18 +19,18 @@ class Expr2 extends ExprBase_1.ExprBase {
|
|
|
19
19
|
evaluate(ctx, localCtx) {
|
|
20
20
|
this.onBeforeRecursion(ctx, localCtx);
|
|
21
21
|
const leftResult = this.left.evaluate(ctx, localCtx);
|
|
22
|
-
if ((0,
|
|
23
|
-
return new
|
|
22
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(leftResult)) {
|
|
23
|
+
return new ExprEvalResult_js_1.ExprEvalErrorUndefinedResult(this.left.getKind());
|
|
24
24
|
}
|
|
25
|
-
if ((0,
|
|
25
|
+
if ((0, ExprEvalResult_js_1.isExprEvalError)(leftResult)) {
|
|
26
26
|
return this.makeErrorForLeftSubExprError(ctx, localCtx, leftResult);
|
|
27
27
|
}
|
|
28
28
|
this.onAfterLeftRecursion(ctx, localCtx, leftResult.result);
|
|
29
29
|
const rightResult = this.right.evaluate(ctx, localCtx);
|
|
30
|
-
if ((0,
|
|
31
|
-
return new
|
|
30
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(rightResult)) {
|
|
31
|
+
return new ExprEvalResult_js_1.ExprEvalErrorUndefinedResult(this.right.getKind());
|
|
32
32
|
}
|
|
33
|
-
if ((0,
|
|
33
|
+
if ((0, ExprEvalResult_js_1.isExprEvalSuccess)(rightResult)) {
|
|
34
34
|
try {
|
|
35
35
|
const result = this.calculateResult(ctx, localCtx, leftResult.result, rightResult.result);
|
|
36
36
|
return this.wrapInResultIfNecessary(result);
|
|
@@ -44,13 +44,13 @@ class Expr2 extends ExprBase_1.ExprBase {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
makeResultForRightSubExprError(ctx, localCtx, leftResult, rightResult) {
|
|
47
|
-
return new
|
|
47
|
+
return new ExprEvalResult_js_1.ExprEvalConsequentialError2Obj(this.getKind(), leftResult, rightResult);
|
|
48
48
|
}
|
|
49
49
|
makeErrorForLeftSubExprError(ctx, localCtx, leftResult) {
|
|
50
|
-
return new
|
|
50
|
+
return new ExprEvalResult_js_1.ExprEvalConsequentialError1Obj(this.getKind(), leftResult, "Cannot evaluate attribute reference");
|
|
51
51
|
}
|
|
52
52
|
handleError(error, leftResult, rightResult) {
|
|
53
|
-
return new
|
|
53
|
+
return new ExprEvalResult_js_1.ExprEvalError2Obj(this.getKind(), leftResult, rightResult, ExprEvalResult_js_1.ExprEvalStatus.ERROR, error);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.Expr2 = Expr2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/Expr2.ts"],"names":[],"mappings":";;;AACA
|
|
1
|
+
{"version":3,"sources":["../../src/expression/Expr2.ts"],"names":[],"mappings":";;;AACA,+CAAyC;AAEzC,2DAU6B;AAC7B,oEAAqD;AAGrD,MAAsB,KAAe,SAAQ,sBAAW;IAItD,YAAsB,QAAkB,EAAE,IAAa,EAAE,KAAc;QACrE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IASS,iBAAiB,CACzB,GAAyB,EACzB,QAA0B;QAE1B,8DAA8D;IAChE,CAAC;IAES,oBAAoB,CAC5B,GAAyB,EACzB,QAA0B,EAC1B,UAAa;QAEb,uGAAuG;IACzG,CAAC;IAEM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAA,iCAAS,EAAC,UAAU,CAAC,EAAE;YACzB,OAAO,IAAI,gDAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;QACD,IAAI,IAAA,mCAAe,EAAC,UAAU,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAA,iCAAS,EAAC,WAAW,CAAC,EAAE;YAC1B,OAAO,IAAI,gDAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC/D;QACD,IAAI,IAAA,qCAAiB,EAAC,WAAW,CAAC,EAAE;YAClC,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CACjC,GAAG,EACH,QAAQ,EACR,UAAU,CAAC,MAAM,EACjB,WAAW,CAAC,MAAM,CACnB,CAAC;gBACF,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;aACzD;SACF;aAAM;YACL,OAAO,IAAI,CAAC,8BAA8B,CACxC,GAAG,EACH,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;SACH;IACH,CAAC;IAES,8BAA8B,CACtC,GAAyB,EACzB,QAA0B,EAC1B,UAA6B,EAC7B,WAA0B;QAE1B,OAAO,IAAI,kDAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAES,4BAA4B,CACpC,GAAyB,EACzB,QAA0B,EAC1B,UAAyB;QAEzB,OAAO,IAAI,kDAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAA6B,EAC7B,WAA8B;QAE9B,OAAO,IAAI,qCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,kCAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AA7GD,sBA6GC","file":"expression/Expr2.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport {\n ExprEvalConsequentialError1Obj,\n ExprEvalConsequentialError2Obj,\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalError,\n isExprEvalSuccess,\n} from \"./ExprEvalResult.js\";\nimport { isNullish } from \"../IfcExpressionUtils.js\";\nimport { Expr } from \"./Expr.js\";\n\nexport abstract class Expr2<L, R, E> extends ExprBase<E> {\n readonly left: Expr<L>;\n readonly right: Expr<R>;\n\n protected constructor(exprKind: ExprKind, left: Expr<L>, right: Expr<R>) {\n super(exprKind);\n this.left = left;\n this.right = right;\n }\n\n protected abstract calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: L,\n rightOperand: R\n ): E | ExprEvalError;\n\n protected onBeforeRecursion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ) {\n // override if subclass needs to do something before recursing\n }\n\n protected onAfterLeftRecursion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: L\n ) {\n // override if subclass needs to do something with the left result, such as put it in the local context\n }\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n this.onBeforeRecursion(ctx, localCtx);\n const leftResult = this.left.evaluate(ctx, localCtx);\n if (isNullish(leftResult)) {\n return new ExprEvalErrorUndefinedResult(this.left.getKind());\n }\n if (isExprEvalError(leftResult)) {\n return this.makeErrorForLeftSubExprError(ctx, localCtx, leftResult);\n }\n this.onAfterLeftRecursion(ctx, localCtx, leftResult.result);\n const rightResult = this.right.evaluate(ctx, localCtx);\n if (isNullish(rightResult)) {\n return new ExprEvalErrorUndefinedResult(this.right.getKind());\n }\n if (isExprEvalSuccess(rightResult)) {\n try {\n const result = this.calculateResult(\n ctx,\n localCtx,\n leftResult.result,\n rightResult.result\n );\n return this.wrapInResultIfNecessary(result);\n } catch (error) {\n return this.handleError(error, leftResult, rightResult);\n }\n } else {\n return this.makeResultForRightSubExprError(\n ctx,\n localCtx,\n leftResult,\n rightResult\n );\n }\n }\n\n protected makeResultForRightSubExprError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ExprEvalResult<L>,\n rightResult: ExprEvalError\n ): ExprEvalResult<E> {\n return new ExprEvalConsequentialError2Obj(\n this.getKind(),\n leftResult,\n rightResult\n );\n }\n\n protected makeErrorForLeftSubExprError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ExprEvalError\n ): ExprEvalError {\n return new ExprEvalConsequentialError1Obj(\n this.getKind(),\n leftResult,\n \"Cannot evaluate attribute reference\"\n );\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<L>,\n rightResult: ExprEvalResult<R>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n this.getKind(),\n leftResult,\n rightResult,\n ExprEvalStatus.ERROR,\n error\n );\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Expr2LeftBeforeRight = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
class Expr2LeftBeforeRight extends
|
|
4
|
+
const ExprBase_js_1 = require("./ExprBase.js");
|
|
5
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
6
|
+
const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
|
|
7
|
+
class Expr2LeftBeforeRight extends ExprBase_js_1.ExprBase {
|
|
8
8
|
constructor(exprKind, left, right) {
|
|
9
9
|
super(exprKind);
|
|
10
10
|
this.left = left;
|
|
@@ -12,19 +12,19 @@ class Expr2LeftBeforeRight extends ExprBase_1.ExprBase {
|
|
|
12
12
|
}
|
|
13
13
|
evaluate(ctx, localCtx) {
|
|
14
14
|
const leftResult = this.left.evaluate(ctx, localCtx);
|
|
15
|
-
if ((0,
|
|
16
|
-
return new
|
|
15
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(leftResult)) {
|
|
16
|
+
return new ExprEvalResult_js_1.ExprEvalErrorUndefinedResult(this.left.getKind());
|
|
17
17
|
}
|
|
18
18
|
this.handleLeftResult(leftResult);
|
|
19
19
|
const rightResult = this.right.evaluate(ctx, localCtx);
|
|
20
|
-
if ((0,
|
|
21
|
-
return new
|
|
22
|
-
? new
|
|
23
|
-
: leftResult, (0,
|
|
24
|
-
? new
|
|
25
|
-
: rightResult,
|
|
20
|
+
if ((0, IfcExpressionUtils_js_1.isNullish)(leftResult) || (0, IfcExpressionUtils_js_1.isNullish)(rightResult)) {
|
|
21
|
+
return new ExprEvalResult_js_1.ExprEvalError2Obj(this.getKind(), (0, IfcExpressionUtils_js_1.isNullish)(leftResult)
|
|
22
|
+
? new ExprEvalResult_js_1.ExprEvalErrorUndefinedResult(this.left.getKind())
|
|
23
|
+
: leftResult, (0, IfcExpressionUtils_js_1.isNullish)(rightResult)
|
|
24
|
+
? new ExprEvalResult_js_1.ExprEvalErrorUndefinedResult(this.right.getKind())
|
|
25
|
+
: rightResult, ExprEvalResult_js_1.ExprEvalStatus.MISSING_OPERAND);
|
|
26
26
|
}
|
|
27
|
-
if ((0,
|
|
27
|
+
if ((0, ExprEvalResult_js_1.isExprEvalSuccess)(leftResult) && (0, ExprEvalResult_js_1.isExprEvalSuccess)(rightResult)) {
|
|
28
28
|
try {
|
|
29
29
|
const result = this.doEvaluate(ctx, leftResult.result, rightResult.result);
|
|
30
30
|
return this.wrapInResultIfNecessary(result);
|
|
@@ -34,11 +34,11 @@ class Expr2LeftBeforeRight extends ExprBase_1.ExprBase {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
return new
|
|
37
|
+
return new ExprEvalResult_js_1.ExprEvalConsequentialError2Obj(this.getKind(), leftResult, rightResult);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
handleError(error, leftResult, rightResult) {
|
|
41
|
-
return new
|
|
41
|
+
return new ExprEvalResult_js_1.ExprEvalError2Obj(this.getKind(), leftResult, rightResult, ExprEvalResult_js_1.ExprEvalStatus.ERROR, error);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
exports.Expr2LeftBeforeRight = Expr2LeftBeforeRight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/Expr2LeftBeforeRight.ts"],"names":[],"mappings":";;;AACA
|
|
1
|
+
{"version":3,"sources":["../../src/expression/Expr2LeftBeforeRight.ts"],"names":[],"mappings":";;;AACA,+CAAyC;AAEzC,2DAQ6B;AAC7B,oEAAqD;AAGrD,MAAsB,oBAA8B,SAAQ,sBAAW;IAIrE,YAAsB,QAAkB,EAAE,IAAa,EAAE,KAAc;QACrE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAUM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAA,iCAAS,EAAC,UAAU,CAAC,EAAE;YACzB,OAAO,IAAI,gDAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAA,iCAAS,EAAC,UAAU,CAAC,IAAI,IAAA,iCAAS,EAAC,WAAW,CAAC,EAAE;YACnD,OAAO,IAAI,qCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,IAAA,iCAAS,EAAC,UAAU,CAAC;gBACnB,CAAC,CAAC,IAAI,gDAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvD,CAAC,CAAC,UAAU,EACd,IAAA,iCAAS,EAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,IAAI,gDAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxD,CAAC,CAAC,WAAW,EACf,kCAAc,CAAC,eAAe,CAC/B,CAAC;SACH;QACD,IAAI,IAAA,qCAAiB,EAAC,UAAU,CAAC,IAAI,IAAA,qCAAiB,EAAC,WAAW,CAAC,EAAE;YACnE,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAC5B,GAAG,EACH,UAAU,CAAC,MAAM,EACjB,WAAW,CAAC,MAAM,CACnB,CAAC;gBACF,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;aACzD;SACF;aAAM;YACL,OAAO,IAAI,kDAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,CACZ,CAAC;SACH;IACH,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAA6B,EAC7B,WAA8B;QAE9B,OAAO,IAAI,qCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,kCAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AAzED,oDAyEC","file":"expression/Expr2LeftBeforeRight.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport {\n ExprEvalConsequentialError2Obj,\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalSuccess,\n} from \"./ExprEvalResult.js\";\nimport { isNullish } from \"../IfcExpressionUtils.js\";\nimport { Expr } from \"./Expr.js\";\n\nexport abstract class Expr2LeftBeforeRight<L, R, E> extends ExprBase<E> {\n readonly left: Expr<L>;\n readonly right: Expr<R>;\n\n protected constructor(exprKind: ExprKind, left: Expr<L>, right: Expr<R>) {\n super(exprKind);\n this.left = left;\n this.right = right;\n }\n\n protected abstract doEvaluate(\n ctx: IfcExpressionContext,\n leftOperand: L,\n rightOperand: R\n ): E | ExprEvalError;\n\n protected abstract handleLeftResult(leftResult: ExprEvalResult<L>);\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n const leftResult = this.left.evaluate(ctx, localCtx);\n if (isNullish(leftResult)) {\n return new ExprEvalErrorUndefinedResult(this.left.getKind());\n }\n this.handleLeftResult(leftResult);\n const rightResult = this.right.evaluate(ctx, localCtx);\n if (isNullish(leftResult) || isNullish(rightResult)) {\n return new ExprEvalError2Obj(\n this.getKind(),\n isNullish(leftResult)\n ? new ExprEvalErrorUndefinedResult(this.left.getKind())\n : leftResult,\n isNullish(rightResult)\n ? new ExprEvalErrorUndefinedResult(this.right.getKind())\n : rightResult,\n ExprEvalStatus.MISSING_OPERAND\n );\n }\n if (isExprEvalSuccess(leftResult) && isExprEvalSuccess(rightResult)) {\n try {\n const result = this.doEvaluate(\n ctx,\n leftResult.result,\n rightResult.result\n );\n return this.wrapInResultIfNecessary(result);\n } catch (error) {\n return this.handleError(error, leftResult, rightResult);\n }\n } else {\n return new ExprEvalConsequentialError2Obj(\n this.getKind(),\n leftResult,\n rightResult\n );\n }\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<L>,\n rightResult: ExprEvalResult<R>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n this.getKind(),\n leftResult,\n rightResult,\n ExprEvalStatus.ERROR,\n error\n );\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExprBase = void 0;
|
|
4
|
-
const
|
|
4
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
5
5
|
class ExprBase {
|
|
6
6
|
constructor(exprKind) {
|
|
7
7
|
this.exprKind = exprKind;
|
|
@@ -10,10 +10,10 @@ class ExprBase {
|
|
|
10
10
|
return this.exprKind;
|
|
11
11
|
}
|
|
12
12
|
wrapInResultIfNecessary(result) {
|
|
13
|
-
if ((0,
|
|
13
|
+
if ((0, ExprEvalResult_js_1.isExprEvalError)(result)) {
|
|
14
14
|
return result;
|
|
15
15
|
}
|
|
16
|
-
return new
|
|
16
|
+
return new ExprEvalResult_js_1.ExprEvalSuccessObj(result);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
exports.ExprBase = ExprBase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,2DAK6B;AAG7B,MAAsB,QAAQ;IAG5B,YAAY,QAAkB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAOD,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,uBAAuB,CAC/B,MAAyB;QAEzB,IAAI,IAAA,mCAAe,EAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,sCAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAxBD,4BAwBC","file":"expression/ExprBase.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"./ExprEvalResult.js\";\nimport { ExprKind } from \"./ExprKind.js\";\n\nexport abstract class ExprBase<T> implements Expr<T> {\n private readonly exprKind: ExprKind;\n\n constructor(exprKind: ExprKind) {\n this.exprKind = exprKind;\n }\n\n abstract evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n\n getKind(): ExprKind {\n return this.exprKind;\n }\n\n protected wrapInResultIfNecessary(\n result: T | ExprEvalError\n ): ExprEvalResult<T> {\n if (isExprEvalError(result)) {\n return result;\n }\n return new ExprEvalSuccessObj(result);\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExprEvalTypeErrorObj = exports.ExprEvalValueErrorObj = exports.ExprEvalMissingRequiredFunctionArgumentErrorObj = exports.ExprEvalFunctionEvaluationConsequentialErrorObj = exports.ExprEvalFunctionEvaluationErrorObj = exports.ExprEvalConsequentialError2Obj = exports.ExprEvalConsequentialError1Obj = exports.isExprEvalRefChainError = exports.isExprEvalError = exports.ExprEvalError2Obj = exports.ExprEvalError1Obj = exports.ExprEvalRefChainErrorObj = exports.ExprEvalErrorUndefinedResult = exports.mapErrorObjectToMessage = exports.ExprEvalErrorObj = exports.ExprEvalSuccessObj = exports.isExprEvalSuccess = exports.isExprEvalStatus = exports.ExprEvalStatus = void 0;
|
|
4
|
-
const
|
|
4
|
+
const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
|
|
5
5
|
var ExprEvalStatus;
|
|
6
6
|
(function (ExprEvalStatus) {
|
|
7
7
|
ExprEvalStatus[ExprEvalStatus["SUCCESS"] = 1000] = "SUCCESS";
|
|
@@ -41,7 +41,7 @@ class ExprEvalErrorObj {
|
|
|
41
41
|
}
|
|
42
42
|
this.status = status;
|
|
43
43
|
this.exprKind = exprKind;
|
|
44
|
-
if (!(0,
|
|
44
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(message)) {
|
|
45
45
|
this.message = mapErrorObjectToMessage(message);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { ExprKind } from \"./ExprKind\";\nimport { isNullish } from \"../IfcExpressionUtils\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n MISSING_OPERAND,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2012,\n UNKNOWN_FUNCTION = 2014,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\"\n );\n }\n}\n\nexport class ExprEvalRefChainErrorObj extends ExprEvalErrorObj {\n public readonly errorPathElement: string;\n public readonly path: Array<string>;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n errorPathElement: string,\n message?: any\n ) {\n super(exprKind, status, message);\n this.errorPathElement = errorPathElement;\n this.path = [errorPathElement];\n }\n\n public static bubbleUp(\n error: ExprEvalRefChainError,\n currentPathElement\n ): ExprEvalRefChainError {\n return {\n exprKind: error.exprKind,\n status: error.status,\n errorPathElement: error.errorPathElement,\n path: [currentPathElement, ...error.path],\n message: error.message,\n };\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalRefChainError = ExprEvalUnspecificError & {\n readonly errorPathElement: string;\n readonly path: Array<string>;\n};\n\nexport function isExprEvalRefChainError(\n arg: any\n): arg is ExprEvalRefChainError {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.ERROR &&\n Array.isArray(arg.path) &&\n typeof arg.errorPathElement === \"string\"\n );\n}\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalConsequentialError2 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly leftCause: ExprEvalResult<unknown>;\n readonly rightCause: ExprEvalResult<unknown>;\n};\n\nexport class ExprEvalConsequentialError2Obj extends ExprEvalErrorObj {\n public readonly leftCause: ExprEvalResult<unknown>;\n public readonly rightCause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n leftCause: ExprEvalResult<unknown>,\n rightCause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.leftCause = leftCause;\n this.rightCause = rightCause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string\n ) {\n super(exprKind, status, message);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T\n ) {\n super(exprKind, status, message);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(exprKind: ExprKind, message: any, offendingValue: T) {\n super(exprKind, ExprEvalStatus.TYPE_ERROR, message, offendingValue);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { isNullish } from \"../IfcExpressionUtils.js\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n MISSING_OPERAND,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2012,\n UNKNOWN_FUNCTION = 2014,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\"\n );\n }\n}\n\nexport class ExprEvalRefChainErrorObj extends ExprEvalErrorObj {\n public readonly errorPathElement: string;\n public readonly path: Array<string>;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n errorPathElement: string,\n message?: any\n ) {\n super(exprKind, status, message);\n this.errorPathElement = errorPathElement;\n this.path = [errorPathElement];\n }\n\n public static bubbleUp(\n error: ExprEvalRefChainError,\n currentPathElement\n ): ExprEvalRefChainError {\n return {\n exprKind: error.exprKind,\n status: error.status,\n errorPathElement: error.errorPathElement,\n path: [currentPathElement, ...error.path],\n message: error.message,\n };\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalRefChainError = ExprEvalUnspecificError & {\n readonly errorPathElement: string;\n readonly path: Array<string>;\n};\n\nexport function isExprEvalRefChainError(\n arg: any\n): arg is ExprEvalRefChainError {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.ERROR &&\n Array.isArray(arg.path) &&\n typeof arg.errorPathElement === \"string\"\n );\n}\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalConsequentialError2 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly leftCause: ExprEvalResult<unknown>;\n readonly rightCause: ExprEvalResult<unknown>;\n};\n\nexport class ExprEvalConsequentialError2Obj extends ExprEvalErrorObj {\n public readonly leftCause: ExprEvalResult<unknown>;\n public readonly rightCause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n leftCause: ExprEvalResult<unknown>,\n rightCause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.leftCause = leftCause;\n this.rightCause = rightCause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string\n ) {\n super(exprKind, status, message);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T\n ) {\n super(exprKind, status, message);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(exprKind: ExprKind, message: any, offendingValue: T) {\n super(exprKind, ExprEvalStatus.TYPE_ERROR, message, offendingValue);\n }\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LiteralExpr = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
class LiteralExpr extends
|
|
4
|
+
const ExprEvalResult_js_1 = require("./ExprEvalResult.js");
|
|
5
|
+
const ExprBase_js_1 = require("./ExprBase.js");
|
|
6
|
+
class LiteralExpr extends ExprBase_js_1.ExprBase {
|
|
7
7
|
constructor(exprKind, value) {
|
|
8
8
|
super(exprKind);
|
|
9
9
|
this.value = value;
|
|
@@ -18,7 +18,7 @@ class LiteralExpr extends ExprBase_1.ExprBase {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
handleError(error) {
|
|
21
|
-
return new
|
|
21
|
+
return new ExprEvalResult_js_1.ExprEvalErrorObj(this.getKind(), ExprEvalResult_js_1.ExprEvalStatus.ERROR, error);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
exports.LiteralExpr = LiteralExpr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/LiteralExpr.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../src/expression/LiteralExpr.ts"],"names":[],"mappings":";;;AAEA,2DAK6B;AAC7B,+CAAyC;AAEzC,MAAsB,WAAkB,SAAQ,sBAAW;IAGzD,YAAsB,QAAkB,EAAE,KAAQ;QAChD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAMM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAChC;IACH,CAAC;IAES,WAAW,CAAC,KAAU;QAC9B,OAAO,IAAI,oCAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,kCAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AA3BD,kCA2BC","file":"expression/LiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult.js\";\nimport { ExprBase } from \"./ExprBase.js\";\n\nexport abstract class LiteralExpr<V, E> extends ExprBase<E> {\n readonly value: V;\n\n protected constructor(exprKind: ExprKind, value: V) {\n super(exprKind);\n this.value = value;\n }\n\n protected abstract calculateResult(\n ctx: IfcExpressionContext\n ): E | ExprEvalError;\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n try {\n const result = this.calculateResult(ctx);\n return this.wrapInResultIfNecessary(result);\n } catch (error) {\n return this.handleError(error);\n }\n }\n\n protected handleError(error: any): ExprEvalError {\n return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.ERROR, error);\n }\n}\n"]}
|