ifc-expressions 0.2.3 → 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.
Files changed (249) hide show
  1. package/dist/ExprVisitor.d.ts +5 -1
  2. package/dist/IfcExpression.d.ts +3 -2
  3. package/dist/cjs/ExprVisitor.js +36 -2
  4. package/dist/cjs/ExprVisitor.js.map +1 -1
  5. package/dist/cjs/IfcExpression.js +3 -5
  6. package/dist/cjs/IfcExpression.js.map +1 -1
  7. package/dist/cjs/context/IfcElementAccessor.js +2 -2
  8. package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
  9. package/dist/cjs/context/ObjectAccessor.js +9 -0
  10. package/dist/cjs/context/ObjectAccessor.js.map +1 -1
  11. package/dist/cjs/expression/Expr.js.map +1 -1
  12. package/dist/cjs/expression/Expr0.js +18 -2
  13. package/dist/cjs/expression/Expr0.js.map +1 -1
  14. package/dist/cjs/expression/Expr1.js +46 -2
  15. package/dist/cjs/expression/Expr1.js.map +1 -1
  16. package/dist/cjs/expression/Expr2.js +48 -2
  17. package/dist/cjs/expression/Expr2.js.map +1 -1
  18. package/dist/cjs/expression/Expr2LeftBeforeRight.js +45 -0
  19. package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  20. package/dist/cjs/expression/ExprBase.js +20 -0
  21. package/dist/cjs/expression/ExprBase.js.map +1 -0
  22. package/dist/cjs/expression/ExprEvalResult.js +165 -0
  23. package/dist/cjs/expression/ExprEvalResult.js.map +1 -0
  24. package/dist/cjs/expression/ExprKind.js +24 -0
  25. package/dist/cjs/expression/ExprKind.js.map +1 -0
  26. package/dist/cjs/expression/LiteralExpr.js +25 -0
  27. package/dist/cjs/expression/LiteralExpr.js.map +1 -0
  28. package/dist/cjs/expression/LocalContextKeys.js +7 -0
  29. package/dist/cjs/expression/LocalContextKeys.js.map +1 -0
  30. package/dist/cjs/expression/function/Func.js +93 -0
  31. package/dist/cjs/expression/function/Func.js.map +1 -0
  32. package/dist/cjs/expression/function/FuncArg.js +33 -0
  33. package/dist/cjs/expression/function/FuncArg.js.map +1 -0
  34. package/dist/cjs/expression/function/FunctionExpr.js +33 -0
  35. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -0
  36. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js +10 -0
  37. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  38. package/dist/cjs/expression/function/IfcExpressionFunctions.js +26 -0
  39. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  40. package/dist/cjs/expression/function/arg/FuncArgBase.js +34 -0
  41. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -0
  42. package/dist/cjs/expression/function/arg/FuncArgInt.js +25 -0
  43. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -0
  44. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +22 -0
  45. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  46. package/dist/cjs/expression/function/impl/MAP.js +77 -0
  47. package/dist/cjs/expression/function/impl/MAP.js.map +1 -0
  48. package/dist/cjs/expression/function/impl/ROUND.js +29 -0
  49. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -0
  50. package/dist/cjs/expression/numeric/DivideExpr.js +8 -6
  51. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  52. package/dist/cjs/expression/numeric/MinusExpr.js +4 -6
  53. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  54. package/dist/cjs/expression/numeric/MultiplyExpr.js +4 -6
  55. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  56. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +4 -3
  57. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  58. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +5 -4
  59. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  60. package/dist/cjs/expression/numeric/PlusExpr.js +4 -6
  61. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  62. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +19 -5
  63. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  64. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +3 -2
  65. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  66. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  67. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  68. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +33 -8
  69. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  70. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +3 -2
  71. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  72. package/dist/cjs/expression/string/StringConcatExpr.js +4 -3
  73. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  74. package/dist/cjs/expression/string/StringLiteralExpr.js +5 -4
  75. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  76. package/dist/cjs/expression/structure/ArrayExpr.js +26 -0
  77. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -0
  78. package/dist/cjs/gen/parser/IfcExpressionLexer.js +74 -72
  79. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  80. package/dist/cjs/gen/parser/IfcExpressionParser.js +148 -104
  81. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
  82. package/dist/cjs/value/ArrayValue.js +23 -0
  83. package/dist/cjs/value/ArrayValue.js.map +1 -0
  84. package/dist/cjs/value/BooleanValue.js +12 -3
  85. package/dist/cjs/value/BooleanValue.js.map +1 -1
  86. package/dist/cjs/value/LiteralValue.js.map +1 -1
  87. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
  88. package/dist/cjs/value/LogicalValue.js +14 -3
  89. package/dist/cjs/value/LogicalValue.js.map +1 -1
  90. package/dist/cjs/value/NumericValue.js +16 -7
  91. package/dist/cjs/value/NumericValue.js.map +1 -1
  92. package/dist/cjs/value/ReferenceValue.js +12 -3
  93. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  94. package/dist/cjs/value/StringValue.js +12 -3
  95. package/dist/cjs/value/StringValue.js.map +1 -1
  96. package/dist/cjs/value/Value.js +0 -10
  97. package/dist/cjs/value/Value.js.map +1 -1
  98. package/dist/context/ObjectAccessor.d.ts +1 -0
  99. package/dist/expression/Expr.d.ts +4 -1
  100. package/dist/expression/Expr0.d.ts +8 -4
  101. package/dist/expression/Expr1.d.ts +20 -5
  102. package/dist/expression/Expr2.d.ts +15 -6
  103. package/dist/expression/Expr2LeftBeforeRight.d.ts +14 -0
  104. package/dist/expression/ExprBase.d.ts +11 -0
  105. package/dist/expression/ExprEvalResult.d.ts +125 -0
  106. package/dist/expression/ExprKind.d.ts +19 -0
  107. package/dist/expression/LiteralExpr.d.ts +11 -0
  108. package/dist/expression/LocalContextKeys.d.ts +3 -0
  109. package/dist/expression/function/Func.d.ts +30 -0
  110. package/dist/expression/function/FuncArg.d.ts +18 -0
  111. package/dist/expression/function/FunctionExpr.d.ts +13 -0
  112. package/dist/expression/function/IfcExpressionFunctionConfigException.d.ts +3 -0
  113. package/dist/expression/function/IfcExpressionFunctions.d.ts +7 -0
  114. package/dist/expression/function/arg/FuncArgBase.d.ts +19 -0
  115. package/dist/expression/function/arg/FuncArgInt.d.ts +8 -0
  116. package/dist/expression/function/arg/FuncArgNumeric.d.ts +8 -0
  117. package/dist/expression/function/impl/MAP.d.ts +10 -0
  118. package/dist/expression/function/impl/ROUND.d.ts +9 -0
  119. package/dist/expression/numeric/DivideExpr.d.ts +4 -2
  120. package/dist/expression/numeric/MinusExpr.d.ts +3 -2
  121. package/dist/expression/numeric/MultiplyExpr.d.ts +3 -2
  122. package/dist/expression/numeric/NumParenthesisExpr.d.ts +2 -2
  123. package/dist/expression/numeric/NumericLiteralExpr.d.ts +4 -3
  124. package/dist/expression/numeric/PlusExpr.d.ts +2 -2
  125. package/dist/expression/reference/AttributeReferenceExpr.d.ts +9 -5
  126. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +1 -1
  127. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +5 -4
  128. package/dist/expression/reference/NestedObjectChainExpr.d.ts +9 -6
  129. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +1 -1
  130. package/dist/expression/string/StringConcatExpr.d.ts +2 -2
  131. package/dist/expression/string/StringLiteralExpr.d.ts +3 -3
  132. package/dist/expression/structure/ArrayExpr.d.ts +11 -0
  133. package/dist/gen/parser/IfcExpressionLexer.d.ts +10 -9
  134. package/dist/gen/parser/IfcExpressionParser.d.ts +10 -9
  135. package/dist/mjs/ExprVisitor.js +37 -3
  136. package/dist/mjs/ExprVisitor.js.map +1 -1
  137. package/dist/mjs/IfcExpression.js +3 -4
  138. package/dist/mjs/IfcExpression.js.map +1 -1
  139. package/dist/mjs/context/IfcElementAccessor.js +2 -2
  140. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  141. package/dist/mjs/context/ObjectAccessor.js +7 -1
  142. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  143. package/dist/mjs/expression/Expr.js.map +1 -1
  144. package/dist/mjs/expression/Expr0.js +18 -2
  145. package/dist/mjs/expression/Expr0.js.map +1 -1
  146. package/dist/mjs/expression/Expr1.js +46 -2
  147. package/dist/mjs/expression/Expr1.js.map +1 -1
  148. package/dist/mjs/expression/Expr2.js +48 -2
  149. package/dist/mjs/expression/Expr2.js.map +1 -1
  150. package/dist/mjs/expression/Expr2LeftBeforeRight.js +41 -0
  151. package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  152. package/dist/mjs/expression/ExprBase.js +16 -0
  153. package/dist/mjs/expression/ExprBase.js.map +1 -0
  154. package/dist/mjs/expression/ExprEvalResult.js +144 -0
  155. package/dist/mjs/expression/ExprEvalResult.js.map +1 -0
  156. package/dist/mjs/expression/ExprKind.js +21 -0
  157. package/dist/mjs/expression/ExprKind.js.map +1 -0
  158. package/dist/mjs/expression/LiteralExpr.js +21 -0
  159. package/dist/mjs/expression/LiteralExpr.js.map +1 -0
  160. package/dist/mjs/expression/LocalContextKeys.js +4 -0
  161. package/dist/mjs/expression/LocalContextKeys.js.map +1 -0
  162. package/dist/mjs/expression/function/Func.js +89 -0
  163. package/dist/mjs/expression/function/Func.js.map +1 -0
  164. package/dist/mjs/expression/function/FuncArg.js +29 -0
  165. package/dist/mjs/expression/function/FuncArg.js.map +1 -0
  166. package/dist/mjs/expression/function/FunctionExpr.js +29 -0
  167. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -0
  168. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js +6 -0
  169. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  170. package/dist/mjs/expression/function/IfcExpressionFunctions.js +22 -0
  171. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  172. package/dist/mjs/expression/function/arg/FuncArgBase.js +30 -0
  173. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -0
  174. package/dist/mjs/expression/function/arg/FuncArgInt.js +21 -0
  175. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -0
  176. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +18 -0
  177. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  178. package/dist/mjs/expression/function/impl/MAP.js +73 -0
  179. package/dist/mjs/expression/function/impl/MAP.js.map +1 -0
  180. package/dist/mjs/expression/function/impl/ROUND.js +25 -0
  181. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -0
  182. package/dist/mjs/expression/numeric/DivideExpr.js +8 -6
  183. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  184. package/dist/mjs/expression/numeric/MinusExpr.js +4 -6
  185. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  186. package/dist/mjs/expression/numeric/MultiplyExpr.js +4 -6
  187. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  188. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +4 -3
  189. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  190. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +5 -4
  191. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  192. package/dist/mjs/expression/numeric/PlusExpr.js +4 -6
  193. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  194. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +19 -5
  195. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  196. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +3 -2
  197. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  198. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  199. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  200. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +33 -8
  201. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  202. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +3 -2
  203. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  204. package/dist/mjs/expression/string/StringConcatExpr.js +4 -3
  205. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  206. package/dist/mjs/expression/string/StringLiteralExpr.js +5 -4
  207. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  208. package/dist/mjs/expression/structure/ArrayExpr.js +22 -0
  209. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -0
  210. package/dist/mjs/gen/parser/IfcExpressionLexer.js +74 -72
  211. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  212. package/dist/mjs/gen/parser/IfcExpressionParser.js +148 -104
  213. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
  214. package/dist/mjs/value/ArrayValue.js +19 -0
  215. package/dist/mjs/value/ArrayValue.js.map +1 -0
  216. package/dist/mjs/value/BooleanValue.js +12 -3
  217. package/dist/mjs/value/BooleanValue.js.map +1 -1
  218. package/dist/mjs/value/LiteralValue.js.map +1 -1
  219. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
  220. package/dist/mjs/value/LogicalValue.js +14 -3
  221. package/dist/mjs/value/LogicalValue.js.map +1 -1
  222. package/dist/mjs/value/NumericValue.js +16 -4
  223. package/dist/mjs/value/NumericValue.js.map +1 -1
  224. package/dist/mjs/value/ReferenceValue.js +12 -3
  225. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  226. package/dist/mjs/value/StringValue.js +12 -3
  227. package/dist/mjs/value/StringValue.js.map +1 -1
  228. package/dist/mjs/value/Value.js +1 -8
  229. package/dist/mjs/value/Value.js.map +1 -1
  230. package/dist/value/ArrayValue.d.ts +12 -0
  231. package/dist/value/BooleanValue.d.ts +8 -1
  232. package/dist/value/LiteralValue.d.ts +2 -1
  233. package/dist/value/LiteralValueAnyArity.d.ts +1 -1
  234. package/dist/value/LogicalValue.d.ts +8 -1
  235. package/dist/value/NumericValue.d.ts +11 -4
  236. package/dist/value/ReferenceValue.d.ts +8 -1
  237. package/dist/value/StringValue.d.ts +8 -1
  238. package/dist/value/Value.d.ts +2 -3
  239. package/package.json +1 -1
  240. package/dist/cjs/expression/ArrayExpr.js +0 -3
  241. package/dist/cjs/expression/ArrayExpr.js.map +0 -1
  242. package/dist/cjs/expression/numeric/MultiplyByExpr.js +0 -18
  243. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  244. package/dist/expression/ArrayExpr.d.ts +0 -3
  245. package/dist/expression/numeric/MultiplyByExpr.d.ts +0 -8
  246. package/dist/mjs/expression/ArrayExpr.js +0 -2
  247. package/dist/mjs/expression/ArrayExpr.js.map +0 -1
  248. package/dist/mjs/expression/numeric/MultiplyByExpr.js +0 -14
  249. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAP = void 0;
4
+ const Func_js_1 = require("../Func.js");
5
+ const ExprEvalResult_1 = require("../../ExprEvalResult");
6
+ const IfcExpression_js_1 = require("../../../IfcExpression.js");
7
+ const FuncArg_js_1 = require("../FuncArg.js");
8
+ const ExprKind_js_1 = require("../../ExprKind.js");
9
+ class MAP extends Func_js_1.Func {
10
+ constructor() {
11
+ super("MAP", [
12
+ new FuncArg_js_1.FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),
13
+ new MappingsArg(true, MAP.ARG_NAME_MAPPINGS),
14
+ new FuncArg_js_1.FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),
15
+ ]);
16
+ }
17
+ calculateResult(evaluatedArguments) {
18
+ const mappings = evaluatedArguments.get(MAP.ARG_NAME_MAPPINGS);
19
+ const input = evaluatedArguments.get(MAP.ARG_NAME_MAPPING_INPUT);
20
+ const defaultValue = evaluatedArguments.get(MAP.ARG_NAME_DEFAULT_VALUE);
21
+ let matchIndex = -1;
22
+ const leftColumn = mappings.getValue()[0].getValue();
23
+ const rightColumn = mappings.getValue()[1].getValue();
24
+ const numMappings = leftColumn.length;
25
+ for (let i = 0; i < numMappings; i++) {
26
+ if (leftColumn[i].equals(input)) {
27
+ matchIndex = i;
28
+ break;
29
+ }
30
+ }
31
+ if (matchIndex === -1) {
32
+ if ((0, IfcExpression_js_1.isNullish)(defaultValue)) {
33
+ return new ExprEvalResult_1.ExprEvalFunctionEvaluationErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_1.ExprEvalStatus.UNDEFINED_RESULT, "Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined ", this.name);
34
+ }
35
+ else {
36
+ return new ExprEvalResult_1.ExprEvalSuccessObj(defaultValue);
37
+ }
38
+ }
39
+ return new ExprEvalResult_1.ExprEvalSuccessObj(rightColumn[matchIndex]);
40
+ }
41
+ }
42
+ exports.MAP = MAP;
43
+ MAP.ARG_NAME_MAPPINGS = "mappings";
44
+ MAP.ARG_NAME_MAPPING_INPUT = "input";
45
+ MAP.ARG_NAME_DEFAULT_VALUE = "defaultValue";
46
+ class MappingsArg extends FuncArg_js_1.FuncArg {
47
+ constructor(required, name) {
48
+ super(required, name);
49
+ }
50
+ transformValue(invocationValue) {
51
+ if ((0, ExprEvalResult_1.isExprEvalSuccess)(invocationValue)) {
52
+ const mappings = invocationValue.result;
53
+ if (!Array.isArray(mappings.getValue())) {
54
+ return this.makeError(mappings, "The value is not an array");
55
+ }
56
+ if (mappings.getValue().length !== 2) {
57
+ return this.makeError(mappings, "The array is not of length 2");
58
+ }
59
+ const firstElement = mappings.getValue()[0];
60
+ if (!Array.isArray(firstElement.getValue())) {
61
+ return this.makeError(mappings, "The first element of the array is not itself an array");
62
+ }
63
+ const secondElement = mappings.getValue()[1];
64
+ if (!Array.isArray(secondElement.getValue())) {
65
+ return this.makeError(mappings, "The second element of the array is not itself an array");
66
+ }
67
+ if (firstElement.getValue().length !== secondElement.getValue().length) {
68
+ return this.makeError(mappings, `The first element of the array and the second differ in length ${firstElement.getValue().length} and ${secondElement.getValue().length}`);
69
+ }
70
+ }
71
+ return invocationValue;
72
+ }
73
+ makeError(mappings, problem) {
74
+ return new ExprEvalResult_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, `Argument ${this.name} must be an array containing two arrays of the same length (i.e., a 2xn matrix: 2 rows, N columns). Problem: ${problem}.`, mappings);
75
+ }
76
+ }
77
+ //# sourceMappingURL=MAP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/function/impl/MAP.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,yDAO8B;AAC9B,gEAAoE;AACpE,8CAAwC;AACxC,mDAA6C;AAG7C,MAAa,GAAI,SAAQ,cAAI;IAK3B;QACE,KAAK,CAAC,KAAK,EAAE;YACX,IAAI,oBAAO,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC;YAC7C,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAC5C,IAAI,oBAAO,CAAC,KAAK,EAAE,GAAG,CAAC,sBAAsB,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,kBAAqD;QAErD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CACrC,GAAG,CAAC,iBAAiB,CACG,CAAC;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAClC,GAAG,CAAC,sBAAsB,CACQ,CAAC;QACrC,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CACzC,GAAG,CAAC,sBAAsB,CACA,CAAC;QAC7B,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,MAAM,UAAU,GACd,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CACtB,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GACf,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CACtB,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC/B,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;aACP;SACF;QACD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,IAAI,IAAA,4BAAS,EAAC,YAAY,CAAC,EAAE;gBAC3B,OAAO,IAAI,mDAAkC,CAC3C,sBAAQ,CAAC,QAAQ,EACjB,+BAAc,CAAC,gBAAgB,EAC/B,sHAAsH,EACtH,IAAI,CAAC,IAAI,CACV,CAAC;aACH;iBAAM;gBACL,OAAO,IAAI,mCAAkB,CAAC,YAAY,CAAC,CAAC;aAC7C;SACF;QACD,OAAO,IAAI,mCAAkB,CAC3B,WAAW,CAAC,UAAU,CAAyB,CAChD,CAAC;IACJ,CAAC;;AAtDH,kBAuDC;AAtDyB,qBAAiB,GAAG,UAAU,CAAC;AAC/B,0BAAsB,GAAG,OAAO,CAAC;AACjC,0BAAsB,GAAG,cAAc,CAAC;AAsDlE,MAAM,WAAY,SAAQ,oBAAY;IACpC,YAAY,QAAiB,EAAE,IAAY;QACzC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,cAAc,CACZ,eAAqD;QAErD,IAAI,IAAA,kCAAiB,EAAC,eAAe,CAAC,EAAE;YACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAoB,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;aAC9D;YACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;aACjE;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAA0B,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC,SAAS,CACnB,QAAQ,EACR,uDAAuD,CACxD,CAAC;aACH;YACD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAA0B,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE;gBAC5C,OAAO,IAAI,CAAC,SAAS,CACnB,QAAQ,EACR,wDAAwD,CACzD,CAAC;aACH;YACD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;gBACtE,OAAO,IAAI,CAAC,SAAS,CACnB,QAAQ,EACR,kEACE,YAAY,CAAC,QAAQ,EAAE,CAAC,MAC1B,QAAQ,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAC1C,CAAC;aACH;SACF;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,SAAS,CAAC,QAA8B,EAAE,OAAe;QAC/D,OAAO,IAAI,qCAAoB,CAC7B,sBAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,gHAAgH,OAAO,GAAG,EAC/I,QAAQ,CACT,CAAC;IACJ,CAAC;CACF","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult\";\nimport { isNullish, LiteralValue } from \"../../../IfcExpression.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new MappingsArg(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as LiteralValueAnyArity;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as LiteralValue;\n let matchIndex = -1;\n const leftColumn = (\n mappings.getValue()[0] as unknown as ArrayValue\n ).getValue();\n const rightColumn = (\n mappings.getValue()[1] as unknown as ArrayValue\n ).getValue();\n const numMappings = leftColumn.length;\n for (let i = 0; i < numMappings; i++) {\n if (leftColumn[i].equals(input)) {\n matchIndex = i;\n break;\n }\n }\n if (matchIndex === -1) {\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n } else {\n return new ExprEvalSuccessObj(defaultValue);\n }\n }\n return new ExprEvalSuccessObj(\n rightColumn[matchIndex] as LiteralValueAnyArity\n );\n }\n}\n\nclass MappingsArg extends FuncArg<any> {\n constructor(required: boolean, name: string) {\n super(required, name);\n }\n\n transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(invocationValue)) {\n const mappings = invocationValue.result as ArrayValue;\n if (!Array.isArray(mappings.getValue())) {\n return this.makeError(mappings, \"The value is not an array\");\n }\n if (mappings.getValue().length !== 2) {\n return this.makeError(mappings, \"The array is not of length 2\");\n }\n const firstElement = mappings.getValue()[0] as unknown as ArrayValue;\n if (!Array.isArray(firstElement.getValue())) {\n return this.makeError(\n mappings,\n \"The first element of the array is not itself an array\"\n );\n }\n const secondElement = mappings.getValue()[1] as unknown as ArrayValue;\n if (!Array.isArray(secondElement.getValue())) {\n return this.makeError(\n mappings,\n \"The second element of the array is not itself an array\"\n );\n }\n if (firstElement.getValue().length !== secondElement.getValue().length) {\n return this.makeError(\n mappings,\n `The first element of the array and the second differ in length ${\n firstElement.getValue().length\n } and ${secondElement.getValue().length}`\n );\n }\n }\n return invocationValue;\n }\n\n private makeError(mappings: LiteralValueAnyArity, problem: string) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be an array containing two arrays of the same length (i.e., a 2xn matrix: 2 rows, N columns). Problem: ${problem}.`,\n mappings\n );\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ROUND = void 0;
4
+ const Func_js_1 = require("../Func.js");
5
+ const FuncArgInt_js_1 = require("../arg/FuncArgInt.js");
6
+ const NumericValue_js_1 = require("../../../value/NumericValue.js");
7
+ const FuncArgNumeric_js_1 = require("../arg/FuncArgNumeric.js");
8
+ const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
9
+ const decimal_js_1 = require("decimal.js");
10
+ class ROUND extends Func_js_1.Func {
11
+ constructor() {
12
+ super("ROUND", [
13
+ new FuncArgNumeric_js_1.FuncArgNumeric(true, ROUND.KEY_INPUT),
14
+ new FuncArgInt_js_1.FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue_js_1.NumericValue(0)),
15
+ ]);
16
+ }
17
+ calculateResult(evaluatedArguments) {
18
+ const input = evaluatedArguments.get(ROUND.KEY_INPUT);
19
+ const numDecimals = evaluatedArguments.get(ROUND.KEY_NUM_DECMIALS);
20
+ const rounded = input
21
+ .getValue()
22
+ .toDecimalPlaces(numDecimals.getValue().toNumber(), decimal_js_1.Decimal.ROUND_HALF_UP);
23
+ return new ExprEvalResult_js_1.ExprEvalSuccessObj(new NumericValue_js_1.NumericValue(rounded));
24
+ }
25
+ }
26
+ exports.ROUND = ROUND;
27
+ ROUND.KEY_INPUT = "input";
28
+ ROUND.KEY_NUM_DECMIALS = "num_decimals";
29
+ //# sourceMappingURL=ROUND.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/function/impl/ROUND.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAClD,oEAA8D;AAC9D,gEAA0D;AAE1D,+DAA6E;AAC7E,2CAAqC;AAErC,MAAa,KAAM,SAAQ,cAAI;IAI7B;QACE,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,kCAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;YACzC,IAAI,0BAAU,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,8BAAY,CAAC,CAAC,CAAC,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,kBAAqD;QAErD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAiB,CAAC;QACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CACxC,KAAK,CAAC,gBAAgB,CACP,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK;aAClB,QAAQ,EAAE;aACV,eAAe,CACd,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EACjC,oBAAO,CAAC,aAAa,CACtB,CAAC;QACJ,OAAO,IAAI,sCAAkB,CAAC,IAAI,8BAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;;AAzBH,sBA0BC;AAzBgB,eAAS,GAAG,OAAO,CAAC;AACpB,sBAAgB,GAAG,cAAc,CAAC","file":"expression/function/impl/ROUND.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgInt } from \"../arg/FuncArgInt.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\nimport { FuncArgNumeric } from \"../arg/FuncArgNumeric.js\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Decimal } from \"decimal.js\";\n\nexport class ROUND extends Func {\n private static KEY_INPUT = \"input\";\n private static KEY_NUM_DECMIALS = \"num_decimals\";\n\n constructor() {\n super(\"ROUND\", [\n new FuncArgNumeric(true, ROUND.KEY_INPUT),\n new FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue(0)),\n ]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const input = evaluatedArguments.get(ROUND.KEY_INPUT) as NumericValue;\n const numDecimals = evaluatedArguments.get(\n ROUND.KEY_NUM_DECMIALS\n ) as NumericValue;\n const rounded = input\n .getValue()\n .toDecimalPlaces(\n numDecimals.getValue().toNumber(),\n Decimal.ROUND_HALF_UP\n );\n return new ExprEvalSuccessObj(new NumericValue(rounded));\n }\n}\n"]}
@@ -3,15 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DivideExpr = void 0;
4
4
  const Expr2_js_1 = require("../Expr2.js");
5
5
  const NumericValue_js_1 = require("../../value/NumericValue.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
7
+ const ExprEvalResult_1 = require("../ExprEvalResult");
6
8
  class DivideExpr extends Expr2_js_1.Expr2 {
7
9
  constructor(left, right) {
8
- super(left, right);
10
+ super(ExprKind_js_1.ExprKind.NUM_DIVIDE, left, right);
9
11
  }
10
- evaluate(ctx) {
11
- return NumericValue_js_1.NumericValue.of(this.left
12
- .evaluate(ctx)
13
- .getValue()
14
- .dividedBy(this.right.evaluate(ctx).getValue()));
12
+ calculateResult(ctx, localCtx, left, right) {
13
+ return NumericValue_js_1.NumericValue.of(left.getValue().dividedBy(right.getValue()));
14
+ }
15
+ handleError(error, leftResult, rightResult) {
16
+ return new ExprEvalResult_1.ExprEvalError2Obj(error, leftResult, rightResult, ExprEvalResult_1.ExprEvalStatus.MATH_ERROR, error);
15
17
  }
16
18
  }
17
19
  exports.DivideExpr = DivideExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/numeric/DivideExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAE3D,MAAa,UAAW,SAAQ,gBAI/B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,8BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;CACF;AAjBD,gCAiBC","file":"expression/numeric/DivideExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class DivideExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .dividedBy(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/numeric/DivideExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAC1C,sDAK2B;AAE3B,MAAa,UAAW,SAAQ,gBAI/B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAAwC,EACxC,WAAyC;QAEzC,OAAO,IAAI,kCAAiB,CAC1B,KAAK,EACL,UAAU,EACV,WAAW,EACX,+BAAc,CAAC,UAAU,EACzB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AA/BD,gCA+BC","file":"expression/numeric/DivideExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\n\nexport class DivideExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_DIVIDE, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().dividedBy(right.getValue()));\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<NumericValue>,\n rightResult: ExprEvalResult<NumericValue>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n error,\n leftResult,\n rightResult,\n ExprEvalStatus.MATH_ERROR,\n error\n );\n }\n}\n"]}
@@ -3,15 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MinusExpr = void 0;
4
4
  const Expr2_js_1 = require("../Expr2.js");
5
5
  const NumericValue_js_1 = require("../../value/NumericValue.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
6
7
  class MinusExpr extends Expr2_js_1.Expr2 {
7
8
  constructor(left, right) {
8
- super(left, right);
9
+ super(ExprKind_js_1.ExprKind.NUM_MINUS, left, right);
9
10
  }
10
- evaluate(ctx) {
11
- return NumericValue_js_1.NumericValue.of(this.left
12
- .evaluate(ctx)
13
- .getValue()
14
- .minus(this.right.evaluate(ctx).getValue()));
11
+ calculateResult(ctx, localCtx, left, right) {
12
+ return NumericValue_js_1.NumericValue.of(left.getValue().minus(right.getValue()));
15
13
  }
16
14
  }
17
15
  exports.MinusExpr = MinusExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/numeric/MinusExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAE3D,MAAa,SAAU,SAAQ,gBAI9B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,8BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC9C,CAAC;IACJ,CAAC;CACF;AAjBD,8BAiBC","file":"expression/numeric/MinusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class MinusExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .minus(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/numeric/MinusExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAG1C,MAAa,SAAU,SAAQ,gBAA+C;IAC5E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CACF;AAbD,8BAaC","file":"expression/numeric/MinusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\n\nexport class MinusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MINUS, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().minus(right.getValue()));\n }\n}\n"]}
@@ -3,15 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MultiplyExpr = void 0;
4
4
  const Expr2_js_1 = require("../Expr2.js");
5
5
  const NumericValue_js_1 = require("../../value/NumericValue.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
6
7
  class MultiplyExpr extends Expr2_js_1.Expr2 {
7
8
  constructor(left, right) {
8
- super(left, right);
9
+ super(ExprKind_js_1.ExprKind.NUM_MULTIPLY, left, right);
9
10
  }
10
- evaluate(ctx) {
11
- return NumericValue_js_1.NumericValue.of(this.left
12
- .evaluate(ctx)
13
- .getValue()
14
- .mul(this.right.evaluate(ctx).getValue()));
11
+ calculateResult(ctx, localCtx, left, right) {
12
+ return NumericValue_js_1.NumericValue.of(left.getValue().mul(right.getValue()));
15
13
  }
16
14
  }
17
15
  exports.MultiplyExpr = MultiplyExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/numeric/MultiplyExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAE3D,MAAa,YAAa,SAAQ,gBAIjC;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,8BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF;AAjBD,oCAiBC","file":"expression/numeric/MultiplyExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class MultiplyExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .mul(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/numeric/MultiplyExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAG1C,MAAa,YAAa,SAAQ,gBAIjC;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;CACF;AAjBD,oCAiBC","file":"expression/numeric/MultiplyExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\n\nexport class MultiplyExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MULTIPLY, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().mul(right.getValue()));\n }\n}\n"]}
@@ -2,12 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NumParenthesisExpr = void 0;
4
4
  const Expr1_js_1 = require("../Expr1.js");
5
+ const ExprKind_js_1 = require("../ExprKind.js");
5
6
  class NumParenthesisExpr extends Expr1_js_1.Expr1 {
6
7
  constructor(expression) {
7
- super(expression);
8
+ super(ExprKind_js_1.ExprKind.NUM_PARENTHESIS, expression);
8
9
  }
9
- evaluate(ctx) {
10
- return this.value.evaluate(ctx);
10
+ calculateResult(ctx, localCtx, subExpressionValue) {
11
+ return subExpressionValue;
11
12
  }
12
13
  }
13
14
  exports.NumParenthesisExpr = NumParenthesisExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/numeric/NumParenthesisExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAKpC,MAAa,kBAAmB,SAAQ,gBAGvC;IACC,YAAY,UAA8B;QACxC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;CACF;AAXD,gDAWC","file":"expression/numeric/NumParenthesisExpr.js","sourcesContent":["import { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class NumParenthesisExpr extends Expr1<\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(expression: Expr<NumericValue>) {\n super(expression);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return this.value.evaluate(ctx);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/numeric/NumParenthesisExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAIpC,gDAA0C;AAE1C,MAAa,kBAAmB,SAAQ,gBAAiC;IACvE,YAAY,UAA8B;QACxC,KAAK,CAAC,sBAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,kBAAgC;QAEhC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAZD,gDAYC","file":"expression/numeric/NumParenthesisExpr.js","sourcesContent":["import { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class NumParenthesisExpr extends Expr1<NumericValue, NumericValue> {\n constructor(expression: Expr<NumericValue>) {\n super(ExprKind.NUM_PARENTHESIS, expression);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionValue: NumericValue\n ): NumericValue {\n return subExpressionValue;\n }\n}\n"]}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NumericLiteralExpr = void 0;
4
- const Expr1_js_1 = require("../Expr1.js");
5
- class NumericLiteralExpr extends Expr1_js_1.Expr1 {
4
+ const ExprKind_js_1 = require("../ExprKind.js");
5
+ const LiteralExpr_js_1 = require("../LiteralExpr.js");
6
+ class NumericLiteralExpr extends LiteralExpr_js_1.LiteralExpr {
6
7
  constructor(value) {
7
- super(value);
8
+ super(ExprKind_js_1.ExprKind.NUM_LITERAL, value);
8
9
  }
9
- evaluate(ctx) {
10
+ calculateResult(ctx) {
10
11
  return this.value;
11
12
  }
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/numeric/NumericLiteralExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAIpC,MAAa,kBAAmB,SAAQ,gBAAiC;IACvE,YAAY,KAAmB;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AARD,gDAQC","file":"expression/numeric/NumericLiteralExpr.js","sourcesContent":["import { Expr1 } from \"../Expr1.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class NumericLiteralExpr extends Expr1<NumericValue, NumericValue> {\n constructor(value: NumericValue) {\n super(value);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return this.value;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/numeric/NumericLiteralExpr.ts"],"names":[],"mappings":";;;AAGA,gDAA0C;AAC1C,sDAAgD;AAEhD,MAAa,kBAAmB,SAAQ,4BAGvC;IACC,YAAY,KAAmB;QAC7B,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAbD,gDAaC","file":"expression/numeric/NumericLiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { LiteralExpr } from \"../LiteralExpr.js\";\n\nexport class NumericLiteralExpr extends LiteralExpr<\n NumericValue,\n NumericValue\n> {\n constructor(value: NumericValue) {\n super(ExprKind.NUM_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): NumericValue | ExprEvalError {\n return this.value;\n }\n}\n"]}
@@ -3,15 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlusExpr = void 0;
4
4
  const Expr2_js_1 = require("../Expr2.js");
5
5
  const NumericValue_js_1 = require("../../value/NumericValue.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
6
7
  class PlusExpr extends Expr2_js_1.Expr2 {
7
8
  constructor(left, right) {
8
- super(left, right);
9
+ super(ExprKind_js_1.ExprKind.NUM_PLUS, left, right);
9
10
  }
10
- evaluate(ctx) {
11
- return NumericValue_js_1.NumericValue.of(this.left
12
- .evaluate(ctx)
13
- .getValue()
14
- .plus(this.right.evaluate(ctx).getValue()));
11
+ calculateResult(ctx, localCtx, leftResult, rightResult) {
12
+ return NumericValue_js_1.NumericValue.of(leftResult.getValue().plus(rightResult.getValue()));
15
13
  }
16
14
  }
17
15
  exports.PlusExpr = PlusExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/numeric/PlusExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAE3D,MAAa,QAAS,SAAQ,gBAI7B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,8BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC7C,CAAC;IACJ,CAAC;CACF;AAjBD,4BAiBC","file":"expression/numeric/PlusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class PlusExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .plus(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/numeric/PlusExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAC3D,gDAA0C;AAE1C,MAAa,QAAS,SAAQ,gBAA+C;IAC3E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAA0B,EAC1B,UAAwB,EACxB,WAAyB;QAEzB,OAAO,8BAAY,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF;AAbD,4BAaC","file":"expression/numeric/PlusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class PlusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_PLUS, left, right);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: NumericValue,\n rightResult: NumericValue\n ): NumericValue {\n return NumericValue.of(leftResult.getValue().plus(rightResult.getValue()));\n }\n}\n"]}
@@ -2,14 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AttributeReferenceExpr = void 0;
4
4
  const Expr2_js_1 = require("../Expr2.js");
5
+ const ExprKind_js_1 = require("../ExprKind.js");
6
+ const ExprEvalResult_1 = require("../ExprEvalResult");
7
+ const LocalContextKeys_1 = require("../LocalContextKeys");
5
8
  class AttributeReferenceExpr extends Expr2_js_1.Expr2 {
6
9
  constructor(left, right) {
7
- super(left, right);
10
+ super(ExprKind_js_1.ExprKind.REF_ATTRIBUTE, left, right);
8
11
  }
9
- evaluate(ctx) {
10
- const oa = this.left.evaluate(ctx);
11
- const valueAccessor = this.right.evaluate(ctx);
12
- return valueAccessor(oa);
12
+ onAfterLeftRecursion(ctx, localCtx, leftResult) {
13
+ localCtx.set(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR, leftResult);
14
+ }
15
+ calculateResult(ctx, localCtx, objectAccessor, dereferencedValue) {
16
+ localCtx.delete(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR);
17
+ return dereferencedValue;
18
+ }
19
+ makeResultForRightSubExprError(ctx, localCtx, leftResult, rightResult) {
20
+ if ((0, ExprEvalResult_1.isExprEvalSuccess)(leftResult) && (0, ExprEvalResult_1.isExprEvalRefChainError)(rightResult)) {
21
+ return ExprEvalResult_1.ExprEvalRefChainErrorObj.bubbleUp(rightResult, this.left.getKind());
22
+ }
23
+ return super.makeResultForRightSubExprError(ctx, localCtx, leftResult, rightResult);
24
+ }
25
+ handleError(error, leftResult, rightResult) {
26
+ return new ExprEvalResult_1.ExprEvalError2Obj(this.getKind(), leftResult, rightResult, ExprEvalResult_1.ExprEvalStatus.REFERENCE_ERROR, ["Unable to resolve attribute reference:", error]);
13
27
  }
14
28
  }
15
29
  exports.AttributeReferenceExpr = AttributeReferenceExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/reference/AttributeReferenceExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAMpC,MAAa,sBAAuB,SAAQ,gBAI3C;IACC,YAAY,IAAyB,EAAE,KAA4B;QACjE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,MAAM,EAAE,GAAmB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF;AAdD,wDAcC","file":"expression/reference/AttributeReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { NestedObjectChainExpr } from \"./NestedObjectChainExpr.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\n\nexport class AttributeReferenceExpr extends Expr2<\n ObjectReferenceExpr,\n NestedObjectChainExpr,\n LiteralValueAnyArity\n> {\n constructor(left: ObjectReferenceExpr, right: NestedObjectChainExpr) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): LiteralValueAnyArity {\n const oa: ObjectAccessor = this.left.evaluate(ctx);\n const valueAccessor = this.right.evaluate(ctx);\n return valueAccessor(oa);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/reference/AttributeReferenceExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAGpC,gDAA0C;AAC1C,sDAQ2B;AAE3B,0DAAuD;AAEvD,MAAa,sBAAuB,SAAQ,gBAI3C;IACC,YAAY,IAA0B,EAAE,KAAiC;QACvE,KAAK,CAAC,sBAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAES,oBAAoB,CAC5B,GAAyB,EACzB,QAA0B,EAC1B,UAA0B;QAE1B,QAAQ,CAAC,GAAG,CAAC,mCAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAAQ,EACR,cAA8B,EAC9B,iBAAuC;QAEvC,QAAQ,CAAC,MAAM,CAAC,mCAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,8BAA8B,CACtC,GAAyB,EACzB,QAA0B,EAC1B,UAA0C,EAC1C,WAA0B;QAE1B,IAAI,IAAA,kCAAiB,EAAC,UAAU,CAAC,IAAI,IAAA,wCAAuB,EAAC,WAAW,CAAC,EAAE;YACzE,OAAO,yCAAwB,CAAC,QAAQ,CACtC,WAAW,EACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CACpB,CAAC;SACH;QACD,OAAO,KAAK,CAAC,8BAA8B,CACzC,GAAG,EACH,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAA0C,EAC1C,WAAiD;QAEjD,OAAO,IAAI,kCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,+BAAc,CAAC,eAAe,EAC9B,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAClD,CAAC;IACJ,CAAC;CACF;AA5DD,wDA4DC","file":"expression/reference/AttributeReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalRefChainErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalRefChainError,\n isExprEvalSuccess,\n} from \"../ExprEvalResult\";\nimport { Expr } from \"../Expr.js\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\n\nexport class AttributeReferenceExpr extends Expr2<\n ObjectAccessor,\n LiteralValueAnyArity,\n LiteralValueAnyArity\n> {\n constructor(left: Expr<ObjectAccessor>, right: Expr<LiteralValueAnyArity>) {\n super(ExprKind.REF_ATTRIBUTE, left, right);\n }\n\n protected onAfterLeftRecursion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ObjectAccessor\n ) {\n localCtx.set(LocalContextKeys.OBJECT_ACCESSOR, leftResult);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx,\n objectAccessor: ObjectAccessor,\n dereferencedValue: LiteralValueAnyArity\n ): LiteralValueAnyArity | ExprEvalError {\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return dereferencedValue;\n }\n\n protected makeResultForRightSubExprError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ExprEvalResult<ObjectAccessor>,\n rightResult: ExprEvalError\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(leftResult) && isExprEvalRefChainError(rightResult)) {\n return ExprEvalRefChainErrorObj.bubbleUp(\n rightResult,\n this.left.getKind()\n );\n }\n return super.makeResultForRightSubExprError(\n ctx,\n localCtx,\n leftResult,\n rightResult\n );\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<ObjectAccessor>,\n rightResult: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n this.getKind(),\n leftResult,\n rightResult,\n ExprEvalStatus.REFERENCE_ERROR,\n [\"Unable to resolve attribute reference:\", error]\n );\n }\n}\n"]}
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ElemObjectReferenceExpr = void 0;
4
4
  const Expr0_js_1 = require("../Expr0.js");
5
+ const ExprKind_js_1 = require("../ExprKind.js");
5
6
  class ElemObjectReferenceExpr extends Expr0_js_1.Expr0 {
6
7
  constructor() {
7
- super();
8
+ super(ExprKind_js_1.ExprKind.REF_ELEMENT);
8
9
  }
9
- evaluate(ctx) {
10
+ doEvaluate(ctx) {
10
11
  return ctx.resolveElemRef();
11
12
  }
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/reference/ElemObjectReferenceExpr.ts"],"names":[],"mappings":";;;AAGA,0CAAoC;AAEpC,MAAa,uBACX,SAAQ,gBAAqB;IAG7B;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF;AAXD,0DAWC","file":"expression/reference/ElemObjectReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { Expr0 } from \"../Expr0.js\";\n\nexport class ElemObjectReferenceExpr\n extends Expr0<ObjectAccessor>\n implements ObjectReferenceExpr\n{\n constructor() {\n super();\n }\n\n evaluate(ctx: IfcExpressionContext): ObjectAccessor {\n return ctx.resolveElemRef();\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/reference/ElemObjectReferenceExpr.ts"],"names":[],"mappings":";;;AAGA,0CAAoC;AACpC,gDAA0C;AAE1C,MAAa,uBACX,SAAQ,gBAAqB;IAG7B;QACE,KAAK,CAAC,sBAAQ,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,GAAyB;QAClC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF;AAXD,0DAWC","file":"expression/reference/ElemObjectReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class ElemObjectReferenceExpr\n extends Expr0<ObjectAccessor>\n implements ObjectReferenceExpr\n{\n constructor() {\n super(ExprKind.REF_ELEMENT);\n }\n\n doEvaluate(ctx: IfcExpressionContext): ObjectAccessor {\n return ctx.resolveElemRef();\n }\n}\n"]}
@@ -1,13 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NestedObjectChainEndExpr = void 0;
4
- const Expr1_js_1 = require("../Expr1.js");
5
- class NestedObjectChainEndExpr extends Expr1_js_1.Expr1 {
4
+ const ExprKind_js_1 = require("../ExprKind.js");
5
+ const ExprEvalResult_1 = require("../ExprEvalResult");
6
+ const IfcExpressionUtils_1 = require("../../IfcExpressionUtils");
7
+ const Expr0_js_1 = require("../Expr0.js");
8
+ const LocalContextKeys_1 = require("../LocalContextKeys");
9
+ class NestedObjectChainEndExpr extends Expr0_js_1.Expr0 {
6
10
  constructor(value) {
7
- super(value);
11
+ super(ExprKind_js_1.ExprKind.REF_NESTED_OBJECT_CHAIN_END);
12
+ this.attributeName = value;
8
13
  }
9
- evaluate(ctx) {
10
- return (oa) => oa.getAttribute(this.value);
14
+ doEvaluate(ctx, localCtx) {
15
+ const objectAccessor = localCtx.get(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR);
16
+ if ((0, IfcExpressionUtils_1.isNullish)(objectAccessor)) {
17
+ return new ExprEvalResult_1.ExprEvalErrorObj(this.getKind(), ExprEvalResult_1.ExprEvalStatus.MISSING_OPERAND, `No ObjectAccessor found in localContext when trying to access attribute with name'${this.attributeName}`);
18
+ }
19
+ const attributeValue = objectAccessor.getAttribute(this.attributeName);
20
+ if ((0, IfcExpressionUtils_1.isNullish)(attributeValue)) {
21
+ return new ExprEvalResult_1.ExprEvalRefChainErrorObj(this.getKind(), ExprEvalResult_1.ExprEvalStatus.REFERENCE_ERROR, this.attributeName, `No such nested object: '${this.attributeName}'`);
22
+ }
23
+ localCtx.delete(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR);
24
+ return attributeValue;
11
25
  }
12
26
  }
13
27
  exports.NestedObjectChainEndExpr = NestedObjectChainEndExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/reference/NestedObjectChainEndExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAIpC,MAAa,wBAAyB,SAAQ,gBAG7C;IACC,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CACN,GAAyB;QAEzB,OAAO,CAAC,EAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;CACF;AAbD,4DAaC","file":"expression/reference/NestedObjectChainEndExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr1 } from \"../Expr1.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\n\nexport class NestedObjectChainEndExpr extends Expr1<\n string,\n (oa: ObjectAccessor) => LiteralValueAnyArity\n> {\n constructor(value: string) {\n super(value);\n }\n\n evaluate(\n ctx: IfcExpressionContext\n ): (oa: ObjectAccessor) => LiteralValueAnyArity {\n return (oa: ObjectAccessor) => oa.getAttribute(this.value);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/reference/NestedObjectChainEndExpr.ts"],"names":[],"mappings":";;;AAEA,gDAA0C;AAC1C,sDAK2B;AAC3B,iEAAqD;AACrD,0CAAoC;AACpC,0DAAuD;AAGvD,MAAa,wBAAyB,SAAQ,gBAA2B;IAEvE,YAAY,KAAa;QACvB,KAAK,CAAC,sBAAQ,CAAC,2BAA2B,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,cAAc,GAAmB,QAAQ,CAAC,GAAG,CACjD,mCAAgB,CAAC,eAAe,CACjC,CAAC;QACF,IAAI,IAAA,8BAAS,EAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,iCAAgB,CACzB,IAAI,CAAC,OAAO,EAAE,EACd,+BAAc,CAAC,eAAe,EAC9B,qFAAqF,IAAI,CAAC,aAAa,EAAE,CAC1G,CAAC;SACH;QACD,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,IAAA,8BAAS,EAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,yCAAwB,CACjC,IAAI,CAAC,OAAO,EAAE,EACd,+BAAc,CAAC,eAAe,EAC9B,IAAI,CAAC,aAAa,EAClB,2BAA2B,IAAI,CAAC,aAAa,GAAG,CACjD,CAAC;SACH;QACD,QAAQ,CAAC,MAAM,CAAC,mCAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAjCD,4DAiCC","file":"expression/reference/NestedObjectChainEndExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalRefChainErrorObj,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\n\nexport class NestedObjectChainEndExpr extends Expr0<LiteralValueAnyArity> {\n private readonly attributeName: string;\n constructor(value: string) {\n super(ExprKind.REF_NESTED_OBJECT_CHAIN_END);\n this.attributeName = value;\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | LiteralValueAnyArity {\n const objectAccessor: ObjectAccessor = localCtx.get(\n LocalContextKeys.OBJECT_ACCESSOR\n );\n if (isNullish(objectAccessor)) {\n return new ExprEvalErrorObj(\n this.getKind(),\n ExprEvalStatus.MISSING_OPERAND,\n `No ObjectAccessor found in localContext when trying to access attribute with name'${this.attributeName}`\n );\n }\n const attributeValue = objectAccessor.getAttribute(this.attributeName);\n if (isNullish(attributeValue)) {\n return new ExprEvalRefChainErrorObj(\n this.getKind(),\n ExprEvalStatus.REFERENCE_ERROR,\n this.attributeName,\n `No such nested object: '${this.attributeName}'`\n );\n }\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return attributeValue;\n }\n}\n"]}
@@ -1,14 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NestedObjectChainExpr = void 0;
4
- const Expr2_js_1 = require("../Expr2.js");
5
- class NestedObjectChainExpr extends Expr2_js_1.Expr2 {
6
- constructor(left, right) {
7
- super(left, right);
8
- }
9
- evaluate(ctx) {
10
- const nextLink = this.right.evaluate(ctx);
11
- return (oa) => nextLink(oa.getNestedObjectAccessor(this.left));
4
+ const ExprKind_js_1 = require("../ExprKind.js");
5
+ const ExprEvalResult_1 = require("../ExprEvalResult");
6
+ const Expr1_js_1 = require("../Expr1.js");
7
+ const IfcExpressionUtils_1 = require("../../IfcExpressionUtils");
8
+ const LocalContextKeys_1 = require("../LocalContextKeys");
9
+ class NestedObjectChainExpr extends Expr1_js_1.Expr1 {
10
+ constructor(literalObjectRef, nextLink) {
11
+ super(ExprKind_js_1.ExprKind.REF_NESTED_OBJECT_CHAIN, nextLink);
12
+ this.literalObjectRef = literalObjectRef;
13
+ }
14
+ onBeforeRecusion(ctx, localCtx) {
15
+ const objectAccessor = localCtx.get(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR);
16
+ if ((0, IfcExpressionUtils_1.isNullish)(objectAccessor)) {
17
+ return new ExprEvalResult_1.ExprEvalErrorObj(this.getKind(), ExprEvalResult_1.ExprEvalStatus.MISSING_OPERAND, `No ObjectAccessor found in localContext when trying to access nested object with name'${this.literalObjectRef}`);
18
+ }
19
+ const nestedObjectAccessor = objectAccessor.getNestedObjectAccessor(this.literalObjectRef);
20
+ if ((0, IfcExpressionUtils_1.isNullish)(nestedObjectAccessor)) {
21
+ return new ExprEvalResult_1.ExprEvalRefChainErrorObj(this.getKind(), ExprEvalResult_1.ExprEvalStatus.REFERENCE_ERROR, this.literalObjectRef, `No such nested object: '${this.literalObjectRef}'`);
22
+ }
23
+ localCtx.set(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR, nestedObjectAccessor);
24
+ }
25
+ calculateResult(ctx, localCtx, result) {
26
+ localCtx.delete(LocalContextKeys_1.LocalContextKeys.OBJECT_ACCESSOR);
27
+ return result;
28
+ }
29
+ obtainResultForSubExpressionError(ctx, localCtx, subExpressionResult) {
30
+ if ((0, ExprEvalResult_1.isExprEvalRefChainError)(subExpressionResult)) {
31
+ return ExprEvalResult_1.ExprEvalRefChainErrorObj.bubbleUp(subExpressionResult, this.literalObjectRef);
32
+ }
33
+ return new ExprEvalResult_1.ExprEvalRefChainErrorObj(this.getKind(), subExpressionResult.status, this.literalObjectRef, subExpressionResult.message);
34
+ }
35
+ handleError(error, subResult) {
36
+ return new ExprEvalResult_1.ExprEvalRefChainErrorObj(this.getKind(), ExprEvalResult_1.ExprEvalStatus.REFERENCE_ERROR, this.literalObjectRef, (0, ExprEvalResult_1.mapErrorObjectToMessage)(error));
12
37
  }
13
38
  }
14
39
  exports.NestedObjectChainExpr = NestedObjectChainExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/reference/NestedObjectChainExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAKpC,MAAa,qBAAsB,SAAQ,gBAI1C;IACC,YAAY,IAAY,EAAE,KAA4B;QACpD,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CACN,GAAyB;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,EAAkB,EAAE,EAAE,CAC5B,QAAQ,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AAhBD,sDAgBC","file":"expression/reference/NestedObjectChainExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { NestedObjectChainEndExpr } from \"./NestedObjectChainEndExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\n\nexport class NestedObjectChainExpr extends Expr2<\n string,\n NestedObjectChainExpr | NestedObjectChainEndExpr,\n (oa: ObjectAccessor) => LiteralValueAnyArity\n> {\n constructor(left: string, right: NestedObjectChainExpr) {\n super(left, right);\n }\n\n evaluate(\n ctx: IfcExpressionContext\n ): (oa: ObjectAccessor) => LiteralValueAnyArity {\n const nextLink = this.right.evaluate(ctx);\n return (oa: ObjectAccessor) =>\n nextLink(oa.getNestedObjectAccessor(this.left));\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/reference/NestedObjectChainExpr.ts"],"names":[],"mappings":";;;AAGA,gDAA0C;AAC1C,sDAQ2B;AAC3B,0CAAoC;AACpC,iEAAqD;AACrD,0DAAuD;AAEvD,MAAa,qBAAsB,SAAQ,gBAG1C;IAEC,YAAY,gBAAwB,EAAE,QAA+B;QACnE,KAAK,CAAC,sBAAQ,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAES,gBAAgB,CACxB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CACjC,mCAAgB,CAAC,eAAe,CACf,CAAC;QACpB,IAAI,IAAA,8BAAS,EAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,iCAAgB,CACzB,IAAI,CAAC,OAAO,EAAE,EACd,+BAAc,CAAC,eAAe,EAC9B,yFAAyF,IAAI,CAAC,gBAAgB,EAAE,CACjH,CAAC;SACH;QACD,MAAM,oBAAoB,GAAG,cAAc,CAAC,uBAAuB,CACjE,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,IAAI,IAAA,8BAAS,EAAC,oBAAoB,CAAC,EAAE;YACnC,OAAO,IAAI,yCAAwB,CACjC,IAAI,CAAC,OAAO,EAAE,EACd,+BAAc,CAAC,eAAe,EAC9B,IAAI,CAAC,gBAAgB,EACrB,2BAA2B,IAAI,CAAC,gBAAgB,GAAG,CACpD,CAAC;SACH;QACD,QAAQ,CAAC,GAAG,CAAC,mCAAgB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACvE,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAA0B,EAC1B,MAA4B;QAE5B,QAAQ,CAAC,MAAM,CAAC,mCAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,iCAAiC,CACzC,GAAyB,EACzB,QAA0B,EAC1B,mBAAkC;QAElC,IAAI,IAAA,wCAAuB,EAAC,mBAAmB,CAAC,EAAE;YAChD,OAAO,yCAAwB,CAAC,QAAQ,CACtC,mBAAmB,EACnB,IAAI,CAAC,gBAAgB,CACtB,CAAC;SACH;QACD,OAAO,IAAI,yCAAwB,CACjC,IAAI,CAAC,OAAO,EAAE,EACd,mBAAmB,CAAC,MAAM,EAC1B,IAAI,CAAC,gBAAgB,EACrB,mBAAmB,CAAC,OAAO,CAC5B,CAAC;IACJ,CAAC;IAES,WAAW,CACnB,KAAU,EACV,SAA+C;QAE/C,OAAO,IAAI,yCAAwB,CACjC,IAAI,CAAC,OAAO,EAAE,EACd,+BAAc,CAAC,eAAe,EAC9B,IAAI,CAAC,gBAAgB,EACrB,IAAA,wCAAuB,EAAC,KAAK,CAAC,CAC/B,CAAC;IACJ,CAAC;CACF;AA7ED,sDA6EC","file":"expression/reference/NestedObjectChainExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalRefChainErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalRefChainError,\n mapErrorObjectToMessage,\n} from \"../ExprEvalResult\";\nimport { Expr1 } from \"../Expr1.js\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\n\nexport class NestedObjectChainExpr extends Expr1<\n LiteralValueAnyArity,\n LiteralValueAnyArity\n> {\n private readonly literalObjectRef: string;\n constructor(literalObjectRef: string, nextLink: NestedObjectChainExpr) {\n super(ExprKind.REF_NESTED_OBJECT_CHAIN, nextLink);\n this.literalObjectRef = literalObjectRef;\n }\n\n protected onBeforeRecusion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): undefined | ExprEvalError {\n const objectAccessor = localCtx.get(\n LocalContextKeys.OBJECT_ACCESSOR\n ) as ObjectAccessor;\n if (isNullish(objectAccessor)) {\n return new ExprEvalErrorObj(\n this.getKind(),\n ExprEvalStatus.MISSING_OPERAND,\n `No ObjectAccessor found in localContext when trying to access nested object with name'${this.literalObjectRef}`\n );\n }\n const nestedObjectAccessor = objectAccessor.getNestedObjectAccessor(\n this.literalObjectRef\n );\n if (isNullish(nestedObjectAccessor)) {\n return new ExprEvalRefChainErrorObj(\n this.getKind(),\n ExprEvalStatus.REFERENCE_ERROR,\n this.literalObjectRef,\n `No such nested object: '${this.literalObjectRef}'`\n );\n }\n localCtx.set(LocalContextKeys.OBJECT_ACCESSOR, nestedObjectAccessor);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n result: LiteralValueAnyArity\n ): LiteralValueAnyArity | ExprEvalError {\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return result;\n }\n\n protected obtainResultForSubExpressionError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: ExprEvalError\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalRefChainError(subExpressionResult)) {\n return ExprEvalRefChainErrorObj.bubbleUp(\n subExpressionResult,\n this.literalObjectRef\n );\n }\n return new ExprEvalRefChainErrorObj(\n this.getKind(),\n subExpressionResult.status,\n this.literalObjectRef,\n subExpressionResult.message\n );\n }\n\n protected handleError(\n error: any,\n subResult: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalError {\n return new ExprEvalRefChainErrorObj(\n this.getKind(),\n ExprEvalStatus.REFERENCE_ERROR,\n this.literalObjectRef,\n mapErrorObjectToMessage(error)\n );\n }\n}\n"]}
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PropObjectReferenceExpr = void 0;
4
4
  const Expr0_js_1 = require("../Expr0.js");
5
+ const ExprKind_js_1 = require("../ExprKind.js");
5
6
  class PropObjectReferenceExpr extends Expr0_js_1.Expr0 {
6
7
  constructor() {
7
- super();
8
+ super(ExprKind_js_1.ExprKind.REF_PROPERTY);
8
9
  }
9
- evaluate(ctx) {
10
+ doEvaluate(ctx) {
10
11
  return ctx.resolvePropRef();
11
12
  }
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/reference/PropObjectReferenceExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAIpC,MAAa,uBACX,SAAQ,gBAAqB;IAG7B;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF;AAXD,0DAWC","file":"expression/reference/PropObjectReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\n\nexport class PropObjectReferenceExpr\n extends Expr0<ObjectAccessor>\n implements ObjectReferenceExpr\n{\n constructor() {\n super();\n }\n\n evaluate(ctx: IfcExpressionContext): ObjectAccessor {\n return ctx.resolvePropRef();\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/reference/PropObjectReferenceExpr.ts"],"names":[],"mappings":";;;AACA,0CAAoC;AAGpC,gDAA0C;AAE1C,MAAa,uBACX,SAAQ,gBAAqB;IAG7B;QACE,KAAK,CAAC,sBAAQ,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,GAAyB;QAClC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF;AAXD,0DAWC","file":"expression/reference/PropObjectReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class PropObjectReferenceExpr\n extends Expr0<ObjectAccessor>\n implements ObjectReferenceExpr\n{\n constructor() {\n super(ExprKind.REF_PROPERTY);\n }\n\n doEvaluate(ctx: IfcExpressionContext): ObjectAccessor {\n return ctx.resolvePropRef();\n }\n}\n"]}
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringConcatExpr = void 0;
4
4
  const Expr2_js_1 = require("../Expr2.js");
5
5
  const StringValue_js_1 = require("../../value/StringValue.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
6
7
  class StringConcatExpr extends Expr2_js_1.Expr2 {
7
8
  constructor(left, right) {
8
- super(left, right);
9
+ super(ExprKind_js_1.ExprKind.STR_CONCAT, left, right);
9
10
  }
10
- evaluate(ctx) {
11
- return StringValue_js_1.StringValue.of(this.left.evaluate(ctx).getValue() + this.right.evaluate(ctx).getValue());
11
+ calculateResult(ctx, localCtx, left, right) {
12
+ return StringValue_js_1.StringValue.of(left.getValue() + right.getValue());
12
13
  }
13
14
  }
14
15
  exports.StringConcatExpr = StringConcatExpr;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/string/StringConcatExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,+DAAyD;AAEzD,MAAa,gBAAiB,SAAQ,gBAIrC;IACC,YAAY,IAAuB,EAAE,KAAwB;QAC3D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,4BAAW,CAAC,EAAE,CACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CACzE,CAAC;IACJ,CAAC;CACF;AAdD,4CAcC","file":"expression/string/StringConcatExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { StringValue } from \"../../value/StringValue.js\";\n\nexport class StringConcatExpr extends Expr2<\n Expr<StringValue>,\n Expr<StringValue>,\n StringValue\n> {\n constructor(left: Expr<StringValue>, right: Expr<StringValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): StringValue {\n return StringValue.of(\n this.left.evaluate(ctx).getValue() + this.right.evaluate(ctx).getValue()\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/string/StringConcatExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,+DAAyD;AACzD,gDAA0C;AAE1C,MAAa,gBAAiB,SAAQ,gBAIrC;IACC,YAAY,IAAuB,EAAE,KAAwB;QAC3D,KAAK,CAAC,sBAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAA0B,EAC1B,IAAiB,EACjB,KAAkB;QAElB,OAAO,4BAAW,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAjBD,4CAiBC","file":"expression/string/StringConcatExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { StringValue } from \"../../value/StringValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class StringConcatExpr extends Expr2<\n StringValue,\n StringValue,\n StringValue\n> {\n constructor(left: Expr<StringValue>, right: Expr<StringValue>) {\n super(ExprKind.STR_CONCAT, left, right);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: StringValue,\n right: StringValue\n ): StringValue {\n return StringValue.of(left.getValue() + right.getValue());\n }\n}\n"]}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringLiteralExpr = void 0;
4
- const Expr1_js_1 = require("../Expr1.js");
5
- class StringLiteralExpr extends Expr1_js_1.Expr1 {
4
+ const LiteralExpr_js_1 = require("../LiteralExpr.js");
5
+ const ExprKind_js_1 = require("../ExprKind.js");
6
+ class StringLiteralExpr extends LiteralExpr_js_1.LiteralExpr {
6
7
  constructor(value) {
7
- super(value);
8
+ super(ExprKind_js_1.ExprKind.STR_LITERAL, value);
8
9
  }
9
- evaluate(ctx) {
10
+ calculateResult(ctx) {
10
11
  return this.value;
11
12
  }
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/string/StringLiteralExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAIpC,MAAa,iBAAkB,SAAQ,gBAA+B;IACpE,YAAY,KAAkB;QAC5B,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AARD,8CAQC","file":"expression/string/StringLiteralExpr.js","sourcesContent":["import { Expr1 } from \"../Expr1.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { StringValue } from \"../../value/StringValue.js\";\n\nexport class StringLiteralExpr extends Expr1<StringValue, StringValue> {\n constructor(value: StringValue) {\n super(value);\n }\n\n evaluate(ctx: IfcExpressionContext): StringValue {\n return this.value;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/string/StringLiteralExpr.ts"],"names":[],"mappings":";;;AAEA,sDAAgD;AAChD,gDAA0C;AAE1C,MAAa,iBAAkB,SAAQ,4BAAqC;IAC1E,YAAY,KAAkB;QAC5B,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,GAAyB;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AARD,8CAQC","file":"expression/string/StringLiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { StringValue } from \"../../value/StringValue.js\";\nimport { LiteralExpr } from \"../LiteralExpr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class StringLiteralExpr extends LiteralExpr<StringValue, StringValue> {\n constructor(value: StringValue) {\n super(ExprKind.STR_LITERAL, value);\n }\n\n calculateResult(ctx: IfcExpressionContext): StringValue {\n return this.value;\n }\n}\n"]}