ifc-expressions 0.3.0 → 0.3.1
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.map +1 -1
- package/dist/cjs/expression/Expr1.js.map +1 -1
- package/dist/cjs/expression/Expr2.js.map +1 -1
- package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -1
- package/dist/cjs/expression/ExprBase.js.map +1 -1
- package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/cjs/expression/LiteralExpr.js.map +1 -1
- package/dist/cjs/expression/function/Func.js +8 -8
- package/dist/cjs/expression/function/Func.js.map +1 -1
- package/dist/cjs/expression/function/FuncArg.js.map +1 -1
- package/dist/cjs/expression/function/FunctionExpr.js +6 -6
- package/dist/cjs/expression/function/FunctionExpr.js.map +1 -1
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +6 -6
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgBase.js +2 -2
- package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgInt.js +5 -5
- package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js +2 -2
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
- package/dist/cjs/expression/function/impl/MAP.js +11 -11
- 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 +2 -2
- 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 +2 -2
- 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 +4 -4
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js +4 -4
- 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 +6 -6
- 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 +1 -1
- package/dist/expression/Expr1.d.ts +2 -2
- package/dist/expression/Expr2.d.ts +2 -2
- package/dist/expression/Expr2LeftBeforeRight.d.ts +2 -2
- package/dist/expression/ExprBase.d.ts +3 -3
- package/dist/expression/ExprEvalResult.d.ts +2 -2
- package/dist/expression/LiteralExpr.d.ts +1 -1
- package/dist/expression/function/Func.d.ts +2 -2
- 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 +2 -2
- package/dist/expression/function/arg/FuncArgBase.d.ts +2 -2
- package/dist/expression/function/arg/FuncArgInt.d.ts +2 -2
- package/dist/expression/function/arg/FuncArgNumeric.d.ts +2 -2
- package/dist/expression/function/impl/MAP.d.ts +2 -2
- package/dist/expression/function/impl/ROUND.d.ts +3 -3
- 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 +1 -1
- package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +1 -1
- package/dist/expression/reference/NestedObjectChainExpr.d.ts +1 -1
- package/dist/expression/string/StringLiteralExpr.d.ts +1 -1
- package/dist/expression/structure/ArrayExpr.d.ts +5 -5
- 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.map +1 -1
- package/dist/mjs/expression/Expr1.js.map +1 -1
- package/dist/mjs/expression/Expr2.js.map +1 -1
- package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -1
- package/dist/mjs/expression/ExprBase.js.map +1 -1
- package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
- package/dist/mjs/expression/LiteralExpr.js.map +1 -1
- package/dist/mjs/expression/function/Func.js +2 -2
- package/dist/mjs/expression/function/Func.js.map +1 -1
- package/dist/mjs/expression/function/FuncArg.js.map +1 -1
- package/dist/mjs/expression/function/FunctionExpr.js +3 -3
- package/dist/mjs/expression/function/FunctionExpr.js.map +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +3 -3
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgBase.js +1 -1
- package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgInt.js +2 -2
- package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js +1 -1
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
- package/dist/mjs/expression/function/impl/MAP.js +4 -4
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js +2 -2
- 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 +3 -3
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/expression/structure/ArrayExpr.ts"],"names":[],"mappings":";;;AACA,sDAI2B;AAE3B,
|
|
1
|
+
{"version":3,"sources":["../../src/expression/structure/ArrayExpr.ts"],"names":[],"mappings":";;;AACA,sDAI2B;AAE3B,gDAA0C;AAC1C,0CAAoC;AACpC,6DAAuD;AAGvD,MAAa,SAAU,SAAQ,gBAAiB;IAG9C,YAAY,QAAmC;QAC7C,KAAK,CAAC,sBAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAI,IAAA,gCAAe,EAAC,UAAU,CAAC,EAAE;gBAC/B,OAAO,IAAI,+CAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,sDAAsD,CAAC,EAAE,CAC1D,CAAC;aACH;YACD,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,0BAAU,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;CACF;AA1BD,8BA0BC","file":"expression/structure/ArrayExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport {\n ExprEvalConsequentialError1Obj,\n ExprEvalError,\n isExprEvalError,\n} from \"../ExprEvalResult\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { ArrayValue } from \"../../value/ArrayValue.js\";\nimport { LiteralValue } from \"../../value/LiteralValue.js\";\n\nexport class ArrayExpr extends Expr0<ArrayValue> {\n private elements: Array<Expr<LiteralValue>>;\n\n constructor(elements: Array<Expr<LiteralValue>>) {\n super(ExprKind.ARRAY);\n this.elements = elements;\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | ArrayValue {\n const evaluatedResult = [];\n for (let i = 0; i < this.elements.length; i++) {\n const evalResult = this.elements[i].evaluate(ctx, localCtx);\n if (isExprEvalError(evalResult)) {\n return new ExprEvalConsequentialError1Obj(\n this.getKind(),\n evalResult,\n `Error evaluating array element at 0-based position ${i}`\n );\n }\n evaluatedResult.push(evalResult.result);\n }\n return new ArrayValue(evaluatedResult);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/value/ArrayValue.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAGrB,YAAY,KAAwB;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAwB;QACvC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,GAAQ;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAzBD,gCAyBC","file":"value/ArrayValue.js","sourcesContent":["import { Value } from \"./Value\";\n\nexport class ArrayValue implements Value<Array<Value<any>>> {\n private readonly arrayValue: Array<Value<any>>;\n\n constructor(value: Array<Value<any>>) {\n this.arrayValue = value;\n }\n\n public static of(value: Array<Value<any>>): ArrayValue {\n return new ArrayValue(value);\n }\n\n getValue(): Array<Value<any>> {\n return this.arrayValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n ArrayValue.isArrayValueType(other) &&\n other.arrayValue.every((val, ind) => val.equals(this.arrayValue[ind]))\n );\n }\n\n public static isArrayValueType(arg: any): arg is ArrayValueType {\n return Array.isArray(arg.arrayValue);\n }\n}\n\nexport type ArrayValueType = {\n arrayValue: Array<Value<any>>;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/value/ArrayValue.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAGrB,YAAY,KAAwB;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAwB;QACvC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,GAAQ;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAzBD,gCAyBC","file":"value/ArrayValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class ArrayValue implements Value<Array<Value<any>>> {\n private readonly arrayValue: Array<Value<any>>;\n\n constructor(value: Array<Value<any>>) {\n this.arrayValue = value;\n }\n\n public static of(value: Array<Value<any>>): ArrayValue {\n return new ArrayValue(value);\n }\n\n getValue(): Array<Value<any>> {\n return this.arrayValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n ArrayValue.isArrayValueType(other) &&\n other.arrayValue.every((val, ind) => val.equals(this.arrayValue[ind]))\n );\n }\n\n public static isArrayValueType(arg: any): arg is ArrayValueType {\n return Array.isArray(arg.arrayValue);\n }\n}\n\nexport type ArrayValueType = {\n arrayValue: Array<Value<any>>;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/value/LiteralValue.ts"],"names":[],"mappings":"","file":"value/LiteralValue.js","sourcesContent":["import { NumericValue } from \"./NumericValue.js\";\nimport { StringValue } from \"./StringValue.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\nimport { ReferenceValue } from \"./ReferenceValue.js\";\nimport { ArrayValue } from \"./ArrayValue\";\n\nexport type LiteralValue =\n | NumericValue\n | StringValue\n | BooleanValue\n | LogicalValue\n | ReferenceValue\n | ArrayValue;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/value/LiteralValue.ts"],"names":[],"mappings":"","file":"value/LiteralValue.js","sourcesContent":["import { NumericValue } from \"./NumericValue.js\";\nimport { StringValue } from \"./StringValue.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\nimport { ReferenceValue } from \"./ReferenceValue.js\";\nimport { ArrayValue } from \"./ArrayValue.js\";\n\nexport type LiteralValue =\n | NumericValue\n | StringValue\n | BooleanValue\n | LogicalValue\n | ReferenceValue\n | ArrayValue;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
2
|
-
import { ExprKind } from "./ExprKind";
|
|
3
|
-
import { ExprEvalResult } from "./ExprEvalResult";
|
|
2
|
+
import { ExprKind } from "./ExprKind.js";
|
|
3
|
+
import { ExprEvalResult } from "./ExprEvalResult.js";
|
|
4
4
|
export interface Expr<T> {
|
|
5
5
|
evaluate(ctx: IfcExpressionContext, localCtx: Map<string, any>): ExprEvalResult<T>;
|
|
6
6
|
getKind(): ExprKind;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
2
|
-
import { ExprKind } from "./ExprKind";
|
|
2
|
+
import { ExprKind } from "./ExprKind.js";
|
|
3
3
|
import { ExprBase } from "./ExprBase";
|
|
4
4
|
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult";
|
|
5
5
|
export declare abstract class Expr0<E> extends ExprBase<E> {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
2
|
-
import { ExprKind } from "./ExprKind";
|
|
2
|
+
import { ExprKind } from "./ExprKind.js";
|
|
3
3
|
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult";
|
|
4
4
|
import { ExprBase } from "./ExprBase";
|
|
5
|
-
import { Expr } from "./Expr";
|
|
5
|
+
import { Expr } from "./Expr.js";
|
|
6
6
|
export declare abstract class Expr1<V, E> extends ExprBase<E> {
|
|
7
7
|
readonly value: Expr<V>;
|
|
8
8
|
protected constructor(exprKind: ExprKind, value: Expr<V>);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
2
2
|
import { ExprBase } from "./ExprBase";
|
|
3
|
-
import { ExprKind } from "./ExprKind";
|
|
3
|
+
import { ExprKind } from "./ExprKind.js";
|
|
4
4
|
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult";
|
|
5
|
-
import { Expr } from "./Expr";
|
|
5
|
+
import { Expr } from "./Expr.js";
|
|
6
6
|
export declare abstract class Expr2<L, R, E> extends ExprBase<E> {
|
|
7
7
|
readonly left: Expr<L>;
|
|
8
8
|
readonly right: Expr<R>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
2
2
|
import { ExprBase } from "./ExprBase";
|
|
3
|
-
import { ExprKind } from "./ExprKind";
|
|
3
|
+
import { ExprKind } from "./ExprKind.js";
|
|
4
4
|
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult";
|
|
5
|
-
import { Expr } from "./Expr";
|
|
5
|
+
import { Expr } from "./Expr.js";
|
|
6
6
|
export declare abstract class Expr2LeftBeforeRight<L, R, E> extends ExprBase<E> {
|
|
7
7
|
readonly left: Expr<L>;
|
|
8
8
|
readonly right: Expr<R>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Expr } from "./Expr";
|
|
2
|
-
import { IfcExpressionContext } from "../context/IfcExpressionContext";
|
|
1
|
+
import { Expr } from "./Expr.js";
|
|
2
|
+
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
3
3
|
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult";
|
|
4
|
-
import { ExprKind } from "./ExprKind";
|
|
4
|
+
import { ExprKind } from "./ExprKind.js";
|
|
5
5
|
export declare abstract class ExprBase<T> implements Expr<T> {
|
|
6
6
|
private readonly exprKind;
|
|
7
7
|
constructor(exprKind: ExprKind);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
|
|
2
|
-
import { ExprKind } from "./ExprKind";
|
|
2
|
+
import { ExprKind } from "./ExprKind.js";
|
|
3
3
|
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult";
|
|
4
4
|
import { ExprBase } from "./ExprBase";
|
|
5
5
|
export declare abstract class LiteralExpr<V, E> extends ExprBase<E> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
|
|
2
|
-
import { FuncArg } from "./FuncArg";
|
|
1
|
+
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
2
|
+
import { FuncArg } from "./FuncArg.js";
|
|
3
3
|
import { ExprEvalError, ExprEvalResult } from "../ExprEvalResult";
|
|
4
4
|
export declare abstract class Func {
|
|
5
5
|
protected name: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
|
|
2
|
-
import { ExprEvalResult } from "../ExprEvalResult";
|
|
1
|
+
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
2
|
+
import { ExprEvalResult } from "../ExprEvalResult.js";
|
|
3
3
|
export declare class FuncArg<T> {
|
|
4
4
|
protected _required: boolean;
|
|
5
5
|
protected _name: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
|
|
2
|
-
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
3
|
-
import { ExprEvalError } from "../ExprEvalResult";
|
|
4
|
-
import { Expr } from "../Expr";
|
|
5
|
-
import { Expr0 } from "../Expr0";
|
|
6
|
-
import { LiteralValue } from "../../value/LiteralValue";
|
|
1
|
+
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
2
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
3
|
+
import { ExprEvalError } from "../ExprEvalResult.js";
|
|
4
|
+
import { Expr } from "../Expr.js";
|
|
5
|
+
import { Expr0 } from "../Expr0.js";
|
|
6
|
+
import { LiteralValue } from "../../value/LiteralValue.js";
|
|
7
7
|
export declare class FunctionExpr extends Expr0<LiteralValueAnyArity> {
|
|
8
8
|
private name;
|
|
9
9
|
private elements;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ExprEvalResult } from "../ExprEvalResult";
|
|
2
|
-
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
|
|
3
|
-
import { Func } from "./Func";
|
|
2
|
+
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
3
|
+
import { Func } from "./Func.js";
|
|
4
4
|
export declare class IfcExpressionFunctions {
|
|
5
5
|
static getFunction(name: string): Func;
|
|
6
6
|
static applyFunction(name: string, functionArgs: Array<ExprEvalResult<LiteralValueAnyArity>>): ExprEvalResult<LiteralValueAnyArity>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { FuncArg } from "../FuncArg";
|
|
1
|
+
import { FuncArg } from "../FuncArg.js";
|
|
2
2
|
import { ExprEvalError, ExprEvalResult, ExprEvalSuccess } from "../../ExprEvalResult";
|
|
3
|
-
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity";
|
|
3
|
+
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity.js";
|
|
4
4
|
export declare abstract class FuncArgBase<T> extends FuncArg<T> {
|
|
5
5
|
constructor(required: boolean, name: string, defaultValue?: T);
|
|
6
6
|
transformValue(invocationValue: ExprEvalResult<LiteralValueAnyArity>): ExprEvalResult<LiteralValueAnyArity>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FuncArgBase } from "./FuncArgBase";
|
|
2
|
-
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity";
|
|
2
|
+
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity.js";
|
|
3
3
|
import { ExprEvalResult, ExprEvalSuccess } from "../../ExprEvalResult";
|
|
4
|
-
import { NumericValue } from "../../../value/NumericValue";
|
|
4
|
+
import { NumericValue } from "../../../value/NumericValue.js";
|
|
5
5
|
export declare class FuncArgInt extends FuncArgBase<NumericValue> {
|
|
6
6
|
constructor(required: boolean, name: string, defaultValue?: NumericValue);
|
|
7
7
|
protected transformForTypeCheck(invocationValue: ExprEvalSuccess<LiteralValueAnyArity>): ExprEvalResult<LiteralValueAnyArity>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FuncArgBase } from "./FuncArgBase";
|
|
2
|
-
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity";
|
|
2
|
+
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity.js";
|
|
3
3
|
import { ExprEvalResult, ExprEvalSuccess } from "../../ExprEvalResult";
|
|
4
|
-
import { NumericValue } from "../../../value/NumericValue";
|
|
4
|
+
import { NumericValue } from "../../../value/NumericValue.js";
|
|
5
5
|
export declare class FuncArgNumeric extends FuncArgBase<NumericValue> {
|
|
6
6
|
constructor(required: boolean, name: string, defaultValue?: NumericValue);
|
|
7
7
|
protected transformForTypeCheck(invocationValue: ExprEvalSuccess<LiteralValueAnyArity>): ExprEvalResult<LiteralValueAnyArity>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Func } from "../Func";
|
|
2
|
-
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity";
|
|
1
|
+
import { Func } from "../Func.js";
|
|
2
|
+
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity.js";
|
|
3
3
|
import { ExprEvalResult } from "../../ExprEvalResult";
|
|
4
4
|
export declare class MAP extends Func {
|
|
5
5
|
private static readonly ARG_NAME_MAPPINGS;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Func } from "../Func";
|
|
2
|
-
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity";
|
|
3
|
-
import { ExprEvalResult } from "../../ExprEvalResult";
|
|
1
|
+
import { Func } from "../Func.js";
|
|
2
|
+
import { LiteralValueAnyArity } from "../../../value/LiteralValueAnyArity.js";
|
|
3
|
+
import { ExprEvalResult } from "../../ExprEvalResult.js";
|
|
4
4
|
export declare class ROUND extends Func {
|
|
5
5
|
private static KEY_INPUT;
|
|
6
6
|
private static KEY_NUM_DECMIALS;
|
|
@@ -2,7 +2,7 @@ import { Expr2 } from "../Expr2.js";
|
|
|
2
2
|
import { Expr } from "../Expr.js";
|
|
3
3
|
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
4
4
|
import { NumericValue } from "../../value/NumericValue.js";
|
|
5
|
-
import { ExprEvalError } from "../ExprEvalResult";
|
|
5
|
+
import { ExprEvalError } from "../ExprEvalResult.js";
|
|
6
6
|
export declare class MinusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {
|
|
7
7
|
constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
|
|
8
8
|
protected calculateResult(ctx: IfcExpressionContext, localCtx: Map<string, any>, left: NumericValue, right: NumericValue): NumericValue | ExprEvalError;
|
|
@@ -2,7 +2,7 @@ import { Expr2 } from "../Expr2.js";
|
|
|
2
2
|
import { Expr } from "../Expr.js";
|
|
3
3
|
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
4
4
|
import { NumericValue } from "../../value/NumericValue.js";
|
|
5
|
-
import { ExprEvalError } from "../ExprEvalResult";
|
|
5
|
+
import { ExprEvalError } from "../ExprEvalResult.js";
|
|
6
6
|
export declare class MultiplyExpr extends Expr2<NumericValue, NumericValue, NumericValue> {
|
|
7
7
|
constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
|
|
8
8
|
protected calculateResult(ctx: IfcExpressionContext, localCtx: Map<string, any>, left: NumericValue, right: NumericValue): NumericValue | ExprEvalError;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
2
2
|
import { NumericValue } from "../../value/NumericValue.js";
|
|
3
|
-
import { ExprEvalError } from "../ExprEvalResult";
|
|
4
|
-
import { LiteralExpr } from "../LiteralExpr";
|
|
3
|
+
import { ExprEvalError } from "../ExprEvalResult.js";
|
|
4
|
+
import { LiteralExpr } from "../LiteralExpr.js";
|
|
5
5
|
export declare class NumericLiteralExpr extends LiteralExpr<NumericValue, NumericValue> {
|
|
6
6
|
constructor(value: NumericValue);
|
|
7
7
|
protected calculateResult(ctx: IfcExpressionContext): NumericValue | ExprEvalError;
|
|
@@ -3,7 +3,7 @@ import { Expr2 } from "../Expr2.js";
|
|
|
3
3
|
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
4
4
|
import { ObjectAccessor } from "../../context/ObjectAccessor.js";
|
|
5
5
|
import { ExprEvalError, ExprEvalResult } from "../ExprEvalResult";
|
|
6
|
-
import { Expr } from "../Expr";
|
|
6
|
+
import { Expr } from "../Expr.js";
|
|
7
7
|
export declare class AttributeReferenceExpr extends Expr2<ObjectAccessor, LiteralValueAnyArity, LiteralValueAnyArity> {
|
|
8
8
|
constructor(left: Expr<ObjectAccessor>, right: Expr<LiteralValueAnyArity>);
|
|
9
9
|
protected onAfterLeftRecursion(ctx: IfcExpressionContext, localCtx: Map<string, any>, leftResult: ObjectAccessor): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
2
2
|
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
3
3
|
import { ExprEvalError } from "../ExprEvalResult";
|
|
4
|
-
import { Expr0 } from "../Expr0";
|
|
4
|
+
import { Expr0 } from "../Expr0.js";
|
|
5
5
|
export declare class NestedObjectChainEndExpr extends Expr0<LiteralValueAnyArity> {
|
|
6
6
|
private readonly attributeName;
|
|
7
7
|
constructor(value: string);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
2
2
|
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
|
|
3
3
|
import { ExprEvalError, ExprEvalResult } from "../ExprEvalResult";
|
|
4
|
-
import { Expr1 } from "../Expr1";
|
|
4
|
+
import { Expr1 } from "../Expr1.js";
|
|
5
5
|
export declare class NestedObjectChainExpr extends Expr1<LiteralValueAnyArity, LiteralValueAnyArity> {
|
|
6
6
|
private readonly literalObjectRef;
|
|
7
7
|
constructor(literalObjectRef: string, nextLink: NestedObjectChainExpr);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
2
2
|
import { StringValue } from "../../value/StringValue.js";
|
|
3
|
-
import { LiteralExpr } from "../LiteralExpr";
|
|
3
|
+
import { LiteralExpr } from "../LiteralExpr.js";
|
|
4
4
|
export declare class StringLiteralExpr extends LiteralExpr<StringValue, StringValue> {
|
|
5
5
|
constructor(value: StringValue);
|
|
6
6
|
calculateResult(ctx: IfcExpressionContext): StringValue;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
1
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
2
2
|
import { ExprEvalError } from "../ExprEvalResult";
|
|
3
|
-
import { Expr } from "../Expr";
|
|
4
|
-
import { Expr0 } from "../Expr0";
|
|
5
|
-
import { ArrayValue } from "../../value/ArrayValue";
|
|
6
|
-
import { LiteralValue } from "../../value/LiteralValue";
|
|
3
|
+
import { Expr } from "../Expr.js";
|
|
4
|
+
import { Expr0 } from "../Expr0.js";
|
|
5
|
+
import { ArrayValue } from "../../value/ArrayValue.js";
|
|
6
|
+
import { LiteralValue } from "../../value/LiteralValue.js";
|
|
7
7
|
export declare class ArrayExpr extends Expr0<ArrayValue> {
|
|
8
8
|
private elements;
|
|
9
9
|
constructor(elements: Array<Expr<LiteralValue>>);
|
package/dist/mjs/ExprVisitor.js
CHANGED
|
@@ -16,8 +16,8 @@ import { NumericValue } from "./value/NumericValue.js";
|
|
|
16
16
|
import { StringValue } from "./value/StringValue.js";
|
|
17
17
|
import { StringLiteralExpr } from "./expression/string/StringLiteralExpr.js";
|
|
18
18
|
import { StringConcatExpr } from "./expression/string/StringConcatExpr.js";
|
|
19
|
-
import { ArrayExpr } from "./expression/structure/ArrayExpr";
|
|
20
|
-
import { FunctionExpr } from "./expression/function/FunctionExpr";
|
|
19
|
+
import { ArrayExpr } from "./expression/structure/ArrayExpr.js";
|
|
20
|
+
import { FunctionExpr } from "./expression/function/FunctionExpr.js";
|
|
21
21
|
export class ExprVisitor extends IfcExpressionVisitor {
|
|
22
22
|
constructor() {
|
|
23
23
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ExprVisitor.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAsBhF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,OAAO,WAAY,SAAQ,oBAA+B;IAC9D;QACE,KAAK,EAAE,CAAC;QAGV;;0DAEkD;QAElD,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YAClD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,sBAAsB,CAC/B,aAAa,EACb,qBAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;gBACzB,OAAO,IAAI,uBAAuB,EAAE,CAAC;aACtC;iBAAM,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;gBAChC,OAAO,IAAI,uBAAuB,EAAE,CAAC;aACtC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gCAA2B,GAEV,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAChD,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,qBAAqB,CAC9B,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAA0B,CAC7D,CAAC;QACJ,CAAC,CAAC;QAEF,8BAAyB,GAAoD,CAC3E,GAAG,EACH,EAAE;YACF,IAAI,IAAI,GAAG,GAAG,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC;QASF;;2DAEmD;QAEnD,uBAAkB,GAA6C,CAAC,GAAG,EAAE,EAAE;YACrE,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,IAAI,iBAAiB,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,4BAAuB,GAAkD,CACvE,GAAG,EACH,EAAE;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,yBAAoB,GAA+C,CAAC,GAAG,EAAE,EAAE;YACzE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,oBAAe,GAA0C,CAAC,GAAG,EAAE,EAAE;YAC/D,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClB,OAAO,IAAI,kBAAkB,CAC3B,IAAI,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAC7C,CAAC;aACH;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClB,OAAO,IAAI,kBAAkB,CAC3B,IAAI,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAC7C,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,GAAG;oBACN,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ;oBACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,GAAG;oBACN,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ;oBACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,cAAS,GAAoC,CAAC,GAAG,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,gBAAW,GAAsC,CAAC,GAAG,EAAE,EAAE;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,eAAU,GAAqC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEF,yBAAoB,GAAuD,CACzE,GAAG,EACH,EAAE;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAC5C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,GAAG,CAAC;aACZ;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,OAAO,IAAI,YAAY,CACrB,GAAG,CAAC,KAAK,CAAC,IAAI,EACd,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC;QAEF,6BAAwB,GAA+C,CACrE,GAAG,EACH,EAAE;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAChD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,GAAG,CAAC;aACZ;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;IAtLF,CAAC;IA0CO,aAAa,CAAC,IAAY;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAyIO,QAAQ,CAAC,GAAsB;QACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CACF","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":["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":["IfcExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAwB,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,mBAEN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AAKpG,OAAO,EACL,kBAAkB,EAGlB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,WAAW,EACX,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,EACpB,SAAS,EACT,SAAS,GACV,CAAC;AAIF,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,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,0BAA0B,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,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF","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":["IfcExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAwB,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,mBAEN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AAKpG,OAAO,EACL,kBAAkB,EAGlB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,WAAW,EACX,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,EACpB,SAAS,EACT,SAAS,GACV,CAAC;AAIF,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,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,0BAA0B,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,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF","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":["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":["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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/Expr0.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAEL,gBAAgB,EAEhB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAgB,KAAS,SAAQ,QAAW;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,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF","file":"expression/Expr0.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\nimport { ExprBase } from \"./ExprBase\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult\";\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
|
+
{"version":3,"sources":["expression/Expr0.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAEL,gBAAgB,EAEhB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAgB,KAAS,SAAQ,QAAW;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,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF","file":"expression/Expr0.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprBase } from \"./ExprBase\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult\";\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/Expr1.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAE9B,iBAAiB,EACjB,4BAA4B,EAE5B,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAgB,KAAY,SAAQ,QAAW;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,8BAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,6BAA6B;IACrB,oBAAoB,CAC1B,GAAyB,EACzB,QAA0B,EAC1B,mBAAsC;QAEtC,IAAI,eAAe,CAAC,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,SAAS,CAAC,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,SAAS,CAAC,SAAS,CAAC,EAAE;YACxB,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACtD,cAAc,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,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,SAAS,EACT,cAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/Expr1.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\nimport {\n ExprEvalConsequentialError1Obj,\n ExprEvalError,\n ExprEvalError1Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalError,\n} from \"./ExprEvalResult\";\nimport { ExprBase } from \"./ExprBase\";\nimport { Expr } from \"./Expr\";\nimport { isNullish } from \"../IfcExpressionUtils\";\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
|
+
{"version":3,"sources":["expression/Expr1.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAE9B,iBAAiB,EACjB,4BAA4B,EAE5B,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAgB,KAAY,SAAQ,QAAW;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,8BAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,6BAA6B;IACrB,oBAAoB,CAC1B,GAAyB,EACzB,QAA0B,EAC1B,mBAAsC;QAEtC,IAAI,eAAe,CAAC,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,SAAS,CAAC,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,SAAS,CAAC,SAAS,CAAC,EAAE;YACxB,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACtD,cAAc,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,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,SAAS,EACT,cAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF","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\";\nimport { ExprBase } from \"./ExprBase\";\nimport { Expr } from \"./Expr.js\";\nimport { isNullish } from \"../IfcExpressionUtils\";\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/Expr2.ts"],"names":[],"mappings":"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","file":"expression/Expr2.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase\";\nimport { ExprKind } from \"./ExprKind\";\nimport {\n ExprEvalConsequentialError1Obj,\n ExprEvalConsequentialError2Obj,\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalError,\n isExprEvalSuccess,\n} from \"./ExprEvalResult\";\nimport { isNullish } from \"../IfcExpressionUtils\";\nimport { Expr } from \"./Expr\";\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
|
+
{"version":3,"sources":["expression/Expr2.ts"],"names":[],"mappings":"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","file":"expression/Expr2.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase\";\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\";\nimport { isNullish } from \"../IfcExpressionUtils\";\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/Expr2LeftBeforeRight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EACL,8BAA8B,EAE9B,iBAAiB,EACjB,4BAA4B,EAE5B,cAAc,EACd,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,OAAgB,oBAA8B,SAAQ,QAAW;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,SAAS,CAAC,UAAU,CAAC,EAAE;YACzB,OAAO,IAAI,4BAA4B,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,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;YACnD,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,SAAS,CAAC,UAAU,CAAC;gBACnB,CAAC,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvD,CAAC,CAAC,UAAU,EACd,SAAS,CAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxD,CAAC,CAAC,WAAW,EACf,cAAc,CAAC,eAAe,CAC/B,CAAC;SACH;QACD,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,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,8BAA8B,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,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,cAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/Expr2LeftBeforeRight.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase\";\nimport { ExprKind } from \"./ExprKind\";\nimport {\n ExprEvalConsequentialError2Obj,\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalSuccess,\n} from \"./ExprEvalResult\";\nimport { isNullish } from \"../IfcExpressionUtils\";\nimport { Expr } from \"./Expr\";\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
|
+
{"version":3,"sources":["expression/Expr2LeftBeforeRight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EACL,8BAA8B,EAE9B,iBAAiB,EACjB,4BAA4B,EAE5B,cAAc,EACd,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,OAAgB,oBAA8B,SAAQ,QAAW;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,SAAS,CAAC,UAAU,CAAC,EAAE;YACzB,OAAO,IAAI,4BAA4B,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,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;YACnD,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,SAAS,CAAC,UAAU,CAAC;gBACnB,CAAC,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvD,CAAC,CAAC,UAAU,EACd,SAAS,CAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxD,CAAC,CAAC,WAAW,EACf,cAAc,CAAC,eAAe,CAC/B,CAAC;SACH;QACD,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,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,8BAA8B,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,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,cAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/Expr2LeftBeforeRight.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport {\n ExprEvalConsequentialError2Obj,\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalErrorUndefinedResult,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalSuccess,\n} from \"./ExprEvalResult\";\nimport { isNullish } from \"../IfcExpressionUtils\";\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["expression/ExprBase.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,kBAAkB,EAClB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,OAAgB,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,eAAe,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF","file":"expression/ExprBase.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"./ExprEvalResult\";\nimport { ExprKind } from \"./ExprKind\";\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
|
+
{"version":3,"sources":["expression/ExprBase.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,kBAAkB,EAClB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,OAAgB,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,eAAe,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF","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\";\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"]}
|