ifc-expressions 0.2.2 → 0.3.0

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 (322) hide show
  1. package/dist/ExprVisitor.d.ts +7 -3
  2. package/dist/IfcExpression.d.ts +27 -24
  3. package/dist/IfcExpressionErrorListener.d.ts +1 -1
  4. package/dist/IfcExpressionUtils.d.ts +2 -0
  5. package/dist/cjs/ExprVisitor.js +70 -36
  6. package/dist/cjs/ExprVisitor.js.map +1 -1
  7. package/dist/cjs/IfcExpression.js +42 -41
  8. package/dist/cjs/IfcExpression.js.map +1 -1
  9. package/dist/cjs/IfcExpressionErrorListener.js +4 -4
  10. package/dist/cjs/IfcExpressionErrorListener.js.map +1 -1
  11. package/dist/cjs/IfcExpressionUtils.js +12 -0
  12. package/dist/cjs/IfcExpressionUtils.js.map +1 -0
  13. package/dist/cjs/SyntaxErrorException.js +2 -2
  14. package/dist/cjs/SyntaxErrorException.js.map +1 -1
  15. package/dist/cjs/context/IfcElementAccessor.js +8 -8
  16. package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
  17. package/dist/cjs/context/IfcExpressionContext.js.map +1 -1
  18. package/dist/cjs/context/IfcPropertyAccessor.js +2 -2
  19. package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -1
  20. package/dist/cjs/context/IfcPropertySetAccessor.js +2 -2
  21. package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -1
  22. package/dist/cjs/context/IfcRootObjectAccessor.js +4 -4
  23. package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -1
  24. package/dist/cjs/context/IfcTypeObjectAccessor.js +4 -4
  25. package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -1
  26. package/dist/cjs/context/NamedObjectAccessor.js +3 -3
  27. package/dist/cjs/context/NamedObjectAccessor.js.map +1 -1
  28. package/dist/cjs/context/ObjectAccessor.js +9 -0
  29. package/dist/cjs/context/ObjectAccessor.js.map +1 -1
  30. package/dist/cjs/expression/Expr.js.map +1 -1
  31. package/dist/cjs/expression/Expr0.js +18 -2
  32. package/dist/cjs/expression/Expr0.js.map +1 -1
  33. package/dist/cjs/expression/Expr1.js +46 -2
  34. package/dist/cjs/expression/Expr1.js.map +1 -1
  35. package/dist/cjs/expression/Expr2.js +48 -2
  36. package/dist/cjs/expression/Expr2.js.map +1 -1
  37. package/dist/cjs/expression/Expr2LeftBeforeRight.js +45 -0
  38. package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  39. package/dist/cjs/expression/ExprBase.js +20 -0
  40. package/dist/cjs/expression/ExprBase.js.map +1 -0
  41. package/dist/cjs/expression/ExprEvalResult.js +165 -0
  42. package/dist/cjs/expression/ExprEvalResult.js.map +1 -0
  43. package/dist/cjs/expression/ExprKind.js +24 -0
  44. package/dist/cjs/expression/ExprKind.js.map +1 -0
  45. package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -1
  46. package/dist/cjs/expression/LiteralExpr.js +25 -0
  47. package/dist/cjs/expression/LiteralExpr.js.map +1 -0
  48. package/dist/cjs/expression/LocalContextKeys.js +7 -0
  49. package/dist/cjs/expression/LocalContextKeys.js.map +1 -0
  50. package/dist/cjs/expression/function/Func.js +93 -0
  51. package/dist/cjs/expression/function/Func.js.map +1 -0
  52. package/dist/cjs/expression/function/FuncArg.js +33 -0
  53. package/dist/cjs/expression/function/FuncArg.js.map +1 -0
  54. package/dist/cjs/expression/function/FunctionExpr.js +33 -0
  55. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -0
  56. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js +10 -0
  57. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  58. package/dist/cjs/expression/function/IfcExpressionFunctions.js +26 -0
  59. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  60. package/dist/cjs/expression/function/arg/FuncArgBase.js +34 -0
  61. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -0
  62. package/dist/cjs/expression/function/arg/FuncArgInt.js +25 -0
  63. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -0
  64. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +22 -0
  65. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  66. package/dist/cjs/expression/function/impl/MAP.js +77 -0
  67. package/dist/cjs/expression/function/impl/MAP.js.map +1 -0
  68. package/dist/cjs/expression/function/impl/ROUND.js +29 -0
  69. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -0
  70. package/dist/cjs/expression/numeric/DivideExpr.js +11 -9
  71. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  72. package/dist/cjs/expression/numeric/MinusExpr.js +7 -9
  73. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  74. package/dist/cjs/expression/numeric/MultiplyExpr.js +7 -9
  75. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  76. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +6 -5
  77. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  78. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +5 -4
  79. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  80. package/dist/cjs/expression/numeric/PlusExpr.js +7 -9
  81. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  82. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +21 -7
  83. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  84. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +5 -4
  85. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  86. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  87. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  88. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +33 -8
  89. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  90. package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
  91. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +5 -4
  92. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  93. package/dist/cjs/expression/string/StringConcatExpr.js +7 -6
  94. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  95. package/dist/cjs/expression/string/StringLiteralExpr.js +5 -4
  96. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  97. package/dist/cjs/expression/structure/ArrayExpr.js +26 -0
  98. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -0
  99. package/dist/cjs/gen/parser/IfcExpressionLexer.js +142 -0
  100. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -0
  101. package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -0
  102. package/dist/cjs/{parser → gen/parser}/IfcExpressionParser.js +148 -104
  103. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -0
  104. package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
  105. package/dist/cjs/value/ArrayValue.js +23 -0
  106. package/dist/cjs/value/ArrayValue.js.map +1 -0
  107. package/dist/cjs/value/BooleanValue.js +12 -3
  108. package/dist/cjs/value/BooleanValue.js.map +1 -1
  109. package/dist/cjs/value/LiteralValue.js.map +1 -1
  110. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
  111. package/dist/cjs/value/LogicalValue.js +14 -3
  112. package/dist/cjs/value/LogicalValue.js.map +1 -1
  113. package/dist/cjs/value/NumericValue.js +16 -7
  114. package/dist/cjs/value/NumericValue.js.map +1 -1
  115. package/dist/cjs/value/PrimitiveValueType.js.map +1 -1
  116. package/dist/cjs/value/ReferenceValue.js +12 -3
  117. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  118. package/dist/cjs/value/StringValue.js +12 -3
  119. package/dist/cjs/value/StringValue.js.map +1 -1
  120. package/dist/cjs/value/Value.js +0 -10
  121. package/dist/cjs/value/Value.js.map +1 -1
  122. package/dist/context/IfcElementAccessor.d.ts +6 -6
  123. package/dist/context/IfcExpressionContext.d.ts +2 -2
  124. package/dist/context/IfcPropertyAccessor.d.ts +4 -4
  125. package/dist/context/IfcPropertySetAccessor.d.ts +4 -4
  126. package/dist/context/IfcRootObjectAccessor.d.ts +2 -2
  127. package/dist/context/IfcTypeObjectAccessor.d.ts +4 -4
  128. package/dist/context/NamedObjectAccessor.d.ts +2 -2
  129. package/dist/context/ObjectAccessor.d.ts +2 -1
  130. package/dist/expression/Expr.d.ts +5 -2
  131. package/dist/expression/Expr0.d.ts +9 -5
  132. package/dist/expression/Expr1.d.ts +20 -5
  133. package/dist/expression/Expr2.d.ts +15 -6
  134. package/dist/expression/Expr2LeftBeforeRight.d.ts +14 -0
  135. package/dist/expression/ExprBase.d.ts +11 -0
  136. package/dist/expression/ExprEvalResult.d.ts +125 -0
  137. package/dist/expression/ExprKind.d.ts +19 -0
  138. package/dist/expression/LiteralExpr.d.ts +11 -0
  139. package/dist/expression/LocalContextKeys.d.ts +3 -0
  140. package/dist/expression/function/Func.d.ts +30 -0
  141. package/dist/expression/function/FuncArg.d.ts +18 -0
  142. package/dist/expression/function/FunctionExpr.d.ts +13 -0
  143. package/dist/expression/function/IfcExpressionFunctionConfigException.d.ts +3 -0
  144. package/dist/expression/function/IfcExpressionFunctions.d.ts +7 -0
  145. package/dist/expression/function/arg/FuncArgBase.d.ts +19 -0
  146. package/dist/expression/function/arg/FuncArgInt.d.ts +8 -0
  147. package/dist/expression/function/arg/FuncArgNumeric.d.ts +8 -0
  148. package/dist/expression/function/impl/MAP.d.ts +10 -0
  149. package/dist/expression/function/impl/ROUND.d.ts +9 -0
  150. package/dist/expression/numeric/DivideExpr.d.ts +8 -6
  151. package/dist/expression/numeric/MinusExpr.d.ts +7 -6
  152. package/dist/expression/numeric/MultiplyExpr.d.ts +7 -6
  153. package/dist/expression/numeric/NumParenthesisExpr.d.ts +6 -6
  154. package/dist/expression/numeric/NumericLiteralExpr.d.ts +6 -5
  155. package/dist/expression/numeric/PlusExpr.d.ts +6 -6
  156. package/dist/expression/reference/AttributeReferenceExpr.d.ts +12 -8
  157. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +5 -5
  158. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +7 -6
  159. package/dist/expression/reference/NestedObjectChainExpr.d.ts +11 -8
  160. package/dist/expression/reference/ObjectReferenceExpr.d.ts +2 -2
  161. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +5 -5
  162. package/dist/expression/string/StringConcatExpr.d.ts +6 -6
  163. package/dist/expression/string/StringLiteralExpr.d.ts +5 -5
  164. package/dist/expression/structure/ArrayExpr.d.ts +11 -0
  165. package/dist/{parser → gen/parser}/IfcExpressionLexer.d.ts +10 -9
  166. package/dist/{parser → gen/parser}/IfcExpressionParser.d.ts +10 -9
  167. package/dist/mjs/ExprVisitor.js +57 -23
  168. package/dist/mjs/ExprVisitor.js.map +1 -1
  169. package/dist/mjs/IfcExpression.js +21 -22
  170. package/dist/mjs/IfcExpression.js.map +1 -1
  171. package/dist/mjs/IfcExpressionErrorListener.js +3 -3
  172. package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
  173. package/dist/mjs/IfcExpressionUtils.js +7 -0
  174. package/dist/mjs/IfcExpressionUtils.js.map +1 -0
  175. package/dist/mjs/SyntaxErrorException.js +2 -2
  176. package/dist/mjs/SyntaxErrorException.js.map +1 -1
  177. package/dist/mjs/context/IfcElementAccessor.js +6 -6
  178. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  179. package/dist/mjs/context/IfcExpressionContext.js.map +1 -1
  180. package/dist/mjs/context/IfcPropertyAccessor.js +1 -1
  181. package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -1
  182. package/dist/mjs/context/IfcPropertySetAccessor.js +1 -1
  183. package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -1
  184. package/dist/mjs/context/IfcRootObjectAccessor.js +2 -2
  185. package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -1
  186. package/dist/mjs/context/IfcTypeObjectAccessor.js +3 -3
  187. package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -1
  188. package/dist/mjs/context/NamedObjectAccessor.js +1 -1
  189. package/dist/mjs/context/NamedObjectAccessor.js.map +1 -1
  190. package/dist/mjs/context/ObjectAccessor.js +7 -1
  191. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  192. package/dist/mjs/expression/Expr.js.map +1 -1
  193. package/dist/mjs/expression/Expr0.js +18 -2
  194. package/dist/mjs/expression/Expr0.js.map +1 -1
  195. package/dist/mjs/expression/Expr1.js +46 -2
  196. package/dist/mjs/expression/Expr1.js.map +1 -1
  197. package/dist/mjs/expression/Expr2.js +48 -2
  198. package/dist/mjs/expression/Expr2.js.map +1 -1
  199. package/dist/mjs/expression/Expr2LeftBeforeRight.js +41 -0
  200. package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  201. package/dist/mjs/expression/ExprBase.js +16 -0
  202. package/dist/mjs/expression/ExprBase.js.map +1 -0
  203. package/dist/mjs/expression/ExprEvalResult.js +144 -0
  204. package/dist/mjs/expression/ExprEvalResult.js.map +1 -0
  205. package/dist/mjs/expression/ExprKind.js +21 -0
  206. package/dist/mjs/expression/ExprKind.js.map +1 -0
  207. package/dist/mjs/expression/LiteralExpr.js +21 -0
  208. package/dist/mjs/expression/LiteralExpr.js.map +1 -0
  209. package/dist/mjs/expression/LocalContextKeys.js +4 -0
  210. package/dist/mjs/expression/LocalContextKeys.js.map +1 -0
  211. package/dist/mjs/expression/function/Func.js +89 -0
  212. package/dist/mjs/expression/function/Func.js.map +1 -0
  213. package/dist/mjs/expression/function/FuncArg.js +29 -0
  214. package/dist/mjs/expression/function/FuncArg.js.map +1 -0
  215. package/dist/mjs/expression/function/FunctionExpr.js +29 -0
  216. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -0
  217. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js +6 -0
  218. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  219. package/dist/mjs/expression/function/IfcExpressionFunctions.js +22 -0
  220. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  221. package/dist/mjs/expression/function/arg/FuncArgBase.js +30 -0
  222. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -0
  223. package/dist/mjs/expression/function/arg/FuncArgInt.js +21 -0
  224. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -0
  225. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +18 -0
  226. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  227. package/dist/mjs/expression/function/impl/MAP.js +73 -0
  228. package/dist/mjs/expression/function/impl/MAP.js.map +1 -0
  229. package/dist/mjs/expression/function/impl/ROUND.js +25 -0
  230. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -0
  231. package/dist/mjs/expression/numeric/DivideExpr.js +10 -8
  232. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  233. package/dist/mjs/expression/numeric/MinusExpr.js +6 -8
  234. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  235. package/dist/mjs/expression/numeric/MultiplyExpr.js +6 -8
  236. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  237. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +5 -4
  238. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  239. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +5 -4
  240. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  241. package/dist/mjs/expression/numeric/PlusExpr.js +6 -8
  242. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  243. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +20 -6
  244. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  245. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +4 -3
  246. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  247. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  248. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  249. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +33 -8
  250. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  251. package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
  252. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +4 -3
  253. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  254. package/dist/mjs/expression/string/StringConcatExpr.js +6 -5
  255. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  256. package/dist/mjs/expression/string/StringLiteralExpr.js +5 -4
  257. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  258. package/dist/mjs/expression/structure/ArrayExpr.js +22 -0
  259. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -0
  260. package/dist/mjs/gen/parser/IfcExpressionLexer.js +140 -0
  261. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -0
  262. package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -0
  263. package/dist/mjs/{parser → gen/parser}/IfcExpressionParser.js +148 -104
  264. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -0
  265. package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
  266. package/dist/mjs/value/ArrayValue.js +19 -0
  267. package/dist/mjs/value/ArrayValue.js.map +1 -0
  268. package/dist/mjs/value/BooleanValue.js +12 -3
  269. package/dist/mjs/value/BooleanValue.js.map +1 -1
  270. package/dist/mjs/value/LiteralValue.js.map +1 -1
  271. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
  272. package/dist/mjs/value/LogicalValue.js +14 -3
  273. package/dist/mjs/value/LogicalValue.js.map +1 -1
  274. package/dist/mjs/value/NumericValue.js +16 -4
  275. package/dist/mjs/value/NumericValue.js.map +1 -1
  276. package/dist/mjs/value/ReferenceValue.js +12 -3
  277. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  278. package/dist/mjs/value/StringValue.js +12 -3
  279. package/dist/mjs/value/StringValue.js.map +1 -1
  280. package/dist/mjs/value/Value.js +1 -8
  281. package/dist/mjs/value/Value.js.map +1 -1
  282. package/dist/value/ArrayValue.d.ts +12 -0
  283. package/dist/value/BooleanValue.d.ts +9 -2
  284. package/dist/value/LiteralValue.d.ts +7 -6
  285. package/dist/value/LiteralValueAnyArity.d.ts +2 -2
  286. package/dist/value/LogicalValue.d.ts +9 -2
  287. package/dist/value/NumericValue.d.ts +12 -5
  288. package/dist/value/ReferenceValue.d.ts +9 -2
  289. package/dist/value/StringValue.d.ts +9 -2
  290. package/dist/value/Value.d.ts +3 -4
  291. package/package.json +4 -3
  292. package/dist/cjs/expression/ArrayExpr.js +0 -3
  293. package/dist/cjs/expression/ArrayExpr.js.map +0 -1
  294. package/dist/cjs/expression/numeric/MultiplyByExpr.js +0 -18
  295. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  296. package/dist/cjs/parser/IfcExpressionLexer.js +0 -140
  297. package/dist/cjs/parser/IfcExpressionLexer.js.map +0 -1
  298. package/dist/cjs/parser/IfcExpressionListener.js.map +0 -1
  299. package/dist/cjs/parser/IfcExpressionParser.js.map +0 -1
  300. package/dist/cjs/parser/IfcExpressionVisitor.js.map +0 -1
  301. package/dist/cjs/utils.js +0 -12
  302. package/dist/cjs/utils.js.map +0 -1
  303. package/dist/expression/ArrayExpr.d.ts +0 -3
  304. package/dist/expression/numeric/MultiplyByExpr.d.ts +0 -8
  305. package/dist/mjs/expression/ArrayExpr.js +0 -2
  306. package/dist/mjs/expression/ArrayExpr.js.map +0 -1
  307. package/dist/mjs/expression/numeric/MultiplyByExpr.js +0 -14
  308. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  309. package/dist/mjs/parser/IfcExpressionLexer.js +0 -138
  310. package/dist/mjs/parser/IfcExpressionLexer.js.map +0 -1
  311. package/dist/mjs/parser/IfcExpressionListener.js.map +0 -1
  312. package/dist/mjs/parser/IfcExpressionParser.js.map +0 -1
  313. package/dist/mjs/parser/IfcExpressionVisitor.js.map +0 -1
  314. package/dist/mjs/utils.js +0 -7
  315. package/dist/mjs/utils.js.map +0 -1
  316. package/dist/utils.d.ts +0 -2
  317. /package/dist/cjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
  318. /package/dist/cjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
  319. /package/dist/{parser → gen/parser}/IfcExpressionListener.d.ts +0 -0
  320. /package/dist/{parser → gen/parser}/IfcExpressionVisitor.d.ts +0 -0
  321. /package/dist/mjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
  322. /package/dist/mjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
@@ -1,24 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IfcElementAccessor = void 0;
4
- const IfcRootObjectAccessor_1 = require("./IfcRootObjectAccessor");
5
- const StringValue_1 = require("../value/StringValue");
6
- const utils_1 = require("../utils");
7
- class IfcElementAccessor extends IfcRootObjectAccessor_1.IfcRootObjectAccessor {
4
+ const IfcRootObjectAccessor_js_1 = require("./IfcRootObjectAccessor.js");
5
+ const StringValue_js_1 = require("../value/StringValue.js");
6
+ const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
7
+ class IfcElementAccessor extends IfcRootObjectAccessor_js_1.IfcRootObjectAccessor {
8
8
  getNestedObjectAccessor(name) {
9
9
  if (name === "type") {
10
10
  return this.getTypeObjectAccessor();
11
11
  }
12
- let val = this.getIfcPropertyAccessor(name);
13
- if ((0, utils_1.notNullish)(val)) {
12
+ let val = this.getIfcPropertySetAccessor(name);
13
+ if ((0, IfcExpressionUtils_js_1.isPresent)(val)) {
14
14
  return val;
15
15
  }
16
- return this.getIfcPropertySetAccessor(name);
16
+ return this.getIfcPropertyAccessor(name);
17
17
  }
18
18
  getAttribute(name) {
19
19
  switch (name) {
20
20
  case "ifcClass":
21
- return new StringValue_1.StringValue(this.getIfcClass());
21
+ return new StringValue_js_1.StringValue(this.getIfcClass());
22
22
  default:
23
23
  return super.getAttribute(name);
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/IfcElementAccessor.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAIhE,sDAAmD;AACnD,oCAAsC;AAGtC,MAAsB,kBAAmB,SAAQ,6CAAqB;IACpE,uBAAuB,CAAC,IAAY;QAClC,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACrC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU;gBACb,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C;gBACE,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACnC;IACH,CAAC;IAID,iBAAiB;QACf,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACjD,CAAC;CAcF;AA3CD,gDA2CC","file":"context/IfcElementAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { IfcTypeObjectAccessor } from \"./IfcTypeObjectAccessor\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\nimport { notNullish } from \"../utils\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\n\nexport abstract class IfcElementAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n if (name === \"type\") {\n return this.getTypeObjectAccessor();\n }\n let val = this.getIfcPropertyAccessor(name);\n if (notNullish(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"ifcClass\":\n return new StringValue(this.getIfcClass());\n default:\n return super.getAttribute(name);\n }\n }\n\n abstract getIfcClass(): string;\n\n listNestedObjects(): Array<string> {\n return [\"type\", ...this.listIfcProperties(), ...this.listIfcPropertySets()];\n }\n\n listAttributes(): Array<string> {\n return [\"ifcClass\", ...super.listAttributes()];\n }\n\n abstract listIfcProperties(): Array<string>;\n\n abstract listIfcPropertySets(): Array<string>;\n\n abstract getTypeObjectAccessor(): IfcTypeObjectAccessor | undefined;\n abstract getIfcPropertyAccessor(\n propertyName: string\n ): IfcPropertyAccessor | undefined;\n\n abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/IfcElementAccessor.ts"],"names":[],"mappings":";;;AACA,yEAAmE;AAInE,4DAAsD;AACtD,oEAAqD;AAGrD,MAAsB,kBAAmB,SAAQ,gDAAqB;IACpE,uBAAuB,CAAC,IAAY;QAClC,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACrC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAA,iCAAS,EAAC,GAAG,CAAC,EAAE;YAClB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU;gBACb,OAAO,IAAI,4BAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C;gBACE,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACnC;IACH,CAAC;IAID,iBAAiB;QACf,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACjD,CAAC;CAcF;AA3CD,gDA2CC","file":"context/IfcElementAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./IfcTypeObjectAccessor.js\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { StringValue } from \"../value/StringValue.js\";\nimport { isPresent } from \"../IfcExpressionUtils.js\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor.js\";\n\nexport abstract class IfcElementAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n if (name === \"type\") {\n return this.getTypeObjectAccessor();\n }\n let val = this.getIfcPropertySetAccessor(name);\n if (isPresent(val)) {\n return val;\n }\n return this.getIfcPropertyAccessor(name);\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"ifcClass\":\n return new StringValue(this.getIfcClass());\n default:\n return super.getAttribute(name);\n }\n }\n\n abstract getIfcClass(): string;\n\n listNestedObjects(): Array<string> {\n return [\"type\", ...this.listIfcProperties(), ...this.listIfcPropertySets()];\n }\n\n listAttributes(): Array<string> {\n return [\"ifcClass\", ...super.listAttributes()];\n }\n\n abstract listIfcProperties(): Array<string>;\n\n abstract listIfcPropertySets(): Array<string>;\n\n abstract getTypeObjectAccessor(): IfcTypeObjectAccessor | undefined;\n abstract getIfcPropertyAccessor(\n propertyName: string\n ): IfcPropertyAccessor | undefined;\n\n abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/IfcExpressionContext.ts"],"names":[],"mappings":"","file":"context/IfcExpressionContext.js","sourcesContent":["import { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { IfcElementAccessor } from \"./IfcElementAccessor\";\n\nexport interface IfcExpressionContext {\n resolvePropRef(): IfcPropertyAccessor;\n\n resolveElemRef(): IfcElementAccessor;\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/IfcExpressionContext.ts"],"names":[],"mappings":"","file":"context/IfcExpressionContext.js","sourcesContent":["import { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\nimport { IfcElementAccessor } from \"./IfcElementAccessor.js\";\n\nexport interface IfcExpressionContext {\n resolvePropRef(): IfcPropertyAccessor;\n\n resolveElemRef(): IfcElementAccessor;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IfcPropertyAccessor = void 0;
4
- const NamedObjectAccessor_1 = require("./NamedObjectAccessor");
5
- class IfcPropertyAccessor extends NamedObjectAccessor_1.NamedObjectAccessor {
4
+ const NamedObjectAccessor_js_1 = require("./NamedObjectAccessor.js");
5
+ class IfcPropertyAccessor extends NamedObjectAccessor_js_1.NamedObjectAccessor {
6
6
  getNestedObjectAccessor(name) {
7
7
  switch (name) {
8
8
  case "pset":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/IfcPropertyAccessor.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAI5D,MAAsB,mBAAoB,SAAQ,yCAAmB;IACnE,uBAAuB,CAAC,IAAY;QAClC,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CAIF;AA3BD,kDA2BC","file":"context/IfcPropertyAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { NamedObjectAccessor } from \"./NamedObjectAccessor\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\n\nexport abstract class IfcPropertyAccessor extends NamedObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n switch (name) {\n case \"pset\":\n return this.getPropertySetAccessor();\n }\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [\"pset\"];\n }\n\n listAttributes(): Array<string> {\n return [\"value\", ...super.listAttributes()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"value\":\n return this.getValue();\n }\n return super.getAttribute(name);\n }\n\n protected abstract getValue(): LiteralValueAnyArity;\n protected abstract getPropertySetAccessor(): IfcPropertySetAccessor;\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/IfcPropertyAccessor.ts"],"names":[],"mappings":";;;AACA,qEAA+D;AAI/D,MAAsB,mBAAoB,SAAQ,4CAAmB;IACnE,uBAAuB,CAAC,IAAY;QAClC,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CAIF;AA3BD,kDA2BC","file":"context/IfcPropertyAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./NamedObjectAccessor.js\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\n\nexport abstract class IfcPropertyAccessor extends NamedObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n switch (name) {\n case \"pset\":\n return this.getPropertySetAccessor();\n }\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [\"pset\"];\n }\n\n listAttributes(): Array<string> {\n return [\"value\", ...super.listAttributes()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"value\":\n return this.getValue();\n }\n return super.getAttribute(name);\n }\n\n protected abstract getValue(): LiteralValueAnyArity;\n protected abstract getPropertySetAccessor(): IfcPropertySetAccessor;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IfcPropertySetAccessor = void 0;
4
- const IfcRootObjectAccessor_1 = require("./IfcRootObjectAccessor");
5
- class IfcPropertySetAccessor extends IfcRootObjectAccessor_1.IfcRootObjectAccessor {
4
+ const IfcRootObjectAccessor_js_1 = require("./IfcRootObjectAccessor.js");
5
+ class IfcPropertySetAccessor extends IfcRootObjectAccessor_js_1.IfcRootObjectAccessor {
6
6
  listAttributes() {
7
7
  return [...super.listAttributes(), ...this.listIfcProperties()];
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/IfcPropertySetAccessor.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAKhE,MAAsB,sBAAuB,SAAQ,6CAAqB;IACxE,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CAMF;AAjBD,wDAiBC","file":"context/IfcPropertySetAccessor.js","sourcesContent":["import { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { ObjectAccessor } from \"./ObjectAccessor\";\n\nexport abstract class IfcPropertySetAccessor extends IfcRootObjectAccessor {\n listAttributes(): Array<string> {\n return [...super.listAttributes(), ...this.listIfcProperties()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n return super.getAttribute(name);\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return this.getIfcPropertyAccessor(name);\n }\n\n protected abstract listIfcProperties(): Array<string>;\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/IfcPropertySetAccessor.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AAKnE,MAAsB,sBAAuB,SAAQ,gDAAqB;IACxE,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CAMF;AAjBD,wDAiBC","file":"context/IfcPropertySetAccessor.js","sourcesContent":["import { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\nimport { ObjectAccessor } from \"./ObjectAccessor.js\";\n\nexport abstract class IfcPropertySetAccessor extends IfcRootObjectAccessor {\n listAttributes(): Array<string> {\n return [...super.listAttributes(), ...this.listIfcProperties()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n return super.getAttribute(name);\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return this.getIfcPropertyAccessor(name);\n }\n\n protected abstract listIfcProperties(): Array<string>;\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IfcRootObjectAccessor = void 0;
4
- const NamedObjectAccessor_1 = require("./NamedObjectAccessor");
5
- const StringValue_1 = require("../value/StringValue");
6
- class IfcRootObjectAccessor extends NamedObjectAccessor_1.NamedObjectAccessor {
4
+ const NamedObjectAccessor_js_1 = require("./NamedObjectAccessor.js");
5
+ const StringValue_js_1 = require("../value/StringValue.js");
6
+ class IfcRootObjectAccessor extends NamedObjectAccessor_js_1.NamedObjectAccessor {
7
7
  getAttribute(name) {
8
8
  switch (name) {
9
9
  case "guid":
10
- return new StringValue_1.StringValue(this.getGuid());
10
+ return new StringValue_js_1.StringValue(this.getGuid());
11
11
  }
12
12
  return super.getAttribute(name);
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/IfcRootObjectAccessor.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAE5D,sDAAmD;AAEnD,MAAsB,qBAAsB,SAAQ,yCAAmB;IACrE,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC1C;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAID,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAdD,sDAcC","file":"context/IfcRootObjectAccessor.js","sourcesContent":["import { NamedObjectAccessor } from \"./NamedObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\n\nexport abstract class IfcRootObjectAccessor extends NamedObjectAccessor {\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"guid\":\n return new StringValue(this.getGuid());\n }\n return super.getAttribute(name);\n }\n\n abstract getGuid(): string;\n\n listAttributes(): Array<string> {\n return [\"guid\", ...super.listAttributes()];\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/IfcRootObjectAccessor.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAE/D,4DAAsD;AAEtD,MAAsB,qBAAsB,SAAQ,4CAAmB;IACrE,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,4BAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC1C;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAID,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAdD,sDAcC","file":"context/IfcRootObjectAccessor.js","sourcesContent":["import { NamedObjectAccessor } from \"./NamedObjectAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { StringValue } from \"../value/StringValue.js\";\n\nexport abstract class IfcRootObjectAccessor extends NamedObjectAccessor {\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"guid\":\n return new StringValue(this.getGuid());\n }\n return super.getAttribute(name);\n }\n\n abstract getGuid(): string;\n\n listAttributes(): Array<string> {\n return [\"guid\", ...super.listAttributes()];\n }\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IfcTypeObjectAccessor = void 0;
4
- const IfcRootObjectAccessor_1 = require("./IfcRootObjectAccessor");
5
- const utils_1 = require("../utils");
6
- class IfcTypeObjectAccessor extends IfcRootObjectAccessor_1.IfcRootObjectAccessor {
4
+ const IfcRootObjectAccessor_js_1 = require("./IfcRootObjectAccessor.js");
5
+ const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
6
+ class IfcTypeObjectAccessor extends IfcRootObjectAccessor_js_1.IfcRootObjectAccessor {
7
7
  getNestedObjectAccessor(name) {
8
8
  let val = this.getIfcPropertyAccessor(name);
9
- if ((0, utils_1.notNullish)(val)) {
9
+ if ((0, IfcExpressionUtils_js_1.isPresent)(val)) {
10
10
  return val;
11
11
  }
12
12
  return this.getIfcPropertySetAccessor(name);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAEhE,oCAAsC;AAGtC,MAAsB,qBAAsB,SAAQ,6CAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,CAAC;CAYF;AA3BD,sDA2BC","file":"context/IfcTypeObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\nimport { notNullish } from \"../utils\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\n\nexport abstract class IfcTypeObjectAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n let val = this.getIfcPropertyAccessor(name);\n if (notNullish(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n listNestedObjects(): Array<string> {\n return [...this.listIfcPropertyNames(), ...this.listIfcPropertySetNames()];\n }\n\n listAttributes(): Array<string> {\n return [...super.listAttributes()];\n }\n\n protected abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n\n abstract listIfcPropertySetNames(): Array<string>;\n abstract listIfcPropertyNames(): Array<string>;\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":";;;AACA,yEAAmE;AAEnE,oEAAqD;AAGrD,MAAsB,qBAAsB,SAAQ,gDAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAA,iCAAS,EAAC,GAAG,CAAC,EAAE;YAClB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,CAAC;CAYF;AA3BD,sDA2BC","file":"context/IfcTypeObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor.js\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor.js\";\nimport { isPresent } from \"../IfcExpressionUtils.js\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\n\nexport abstract class IfcTypeObjectAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n let val = this.getIfcPropertyAccessor(name);\n if (isPresent(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n listNestedObjects(): Array<string> {\n return [...this.listIfcPropertyNames(), ...this.listIfcPropertySetNames()];\n }\n\n listAttributes(): Array<string> {\n return [...super.listAttributes()];\n }\n\n protected abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n\n abstract listIfcPropertySetNames(): Array<string>;\n abstract listIfcPropertyNames(): Array<string>;\n}\n"]}
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NamedObjectAccessor = void 0;
4
- const StringValue_1 = require("../value/StringValue");
4
+ const StringValue_js_1 = require("../value/StringValue.js");
5
5
  class NamedObjectAccessor {
6
6
  getAttribute(name) {
7
7
  switch (name) {
8
8
  case "name":
9
- return new StringValue_1.StringValue(this.getName());
9
+ return new StringValue_js_1.StringValue(this.getName());
10
10
  case "description":
11
- return new StringValue_1.StringValue(this.getDescription());
11
+ return new StringValue_js_1.StringValue(this.getDescription());
12
12
  }
13
13
  return undefined;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/NamedObjectAccessor.ts"],"names":[],"mappings":";;;AAEA,sDAAmD;AAEnD,MAAsB,mBAAmB;IAKvC,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,KAAK,aAAa;gBAChB,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACjD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA1BD,kDA0BC","file":"context/NamedObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\n\nexport abstract class NamedObjectAccessor implements ObjectAccessor {\n abstract getName(): string;\n\n abstract getDescription(): string;\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"name\":\n return new StringValue(this.getName());\n case \"description\":\n return new StringValue(this.getDescription());\n }\n return undefined;\n }\n\n listAttributes(): Array<string> {\n return [\"name\", \"description\"];\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [];\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/NamedObjectAccessor.ts"],"names":[],"mappings":";;;AAEA,4DAAsD;AAEtD,MAAsB,mBAAmB;IAKvC,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,4BAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,KAAK,aAAa;gBAChB,OAAO,IAAI,4BAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACjD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA1BD,kDA0BC","file":"context/NamedObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { StringValue } from \"../value/StringValue.js\";\n\nexport abstract class NamedObjectAccessor implements ObjectAccessor {\n abstract getName(): string;\n\n abstract getDescription(): string;\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"name\":\n return new StringValue(this.getName());\n case \"description\":\n return new StringValue(this.getDescription());\n }\n return undefined;\n }\n\n listAttributes(): Array<string> {\n return [\"name\", \"description\"];\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [];\n }\n}\n"]}
@@ -1,3 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isObjectAccessor = void 0;
4
+ function isObjectAccessor(arg) {
5
+ return (typeof arg === "object" &&
6
+ typeof arg.getNestedObjectAccessor === "function" &&
7
+ typeof arg.getAttribute === "function" &&
8
+ typeof arg.listNestedObjects === "function" &&
9
+ typeof arg.listAttributes === "function");
10
+ }
11
+ exports.isObjectAccessor = isObjectAccessor;
3
12
  //# sourceMappingURL=ObjectAccessor.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/ObjectAccessor.ts"],"names":[],"mappings":"","file":"context/ObjectAccessor.js","sourcesContent":["import { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\n\nexport interface ObjectAccessor {\n /**\n * If there is a nested object with the specified name (.e.g the 'pset' in $prop.pset),\n * return an ObjectAccessor for it.\n * @param name\n */\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined;\n\n /**\n * If the object has the attribute of the specified name, return it as (an array of (array of)) LiteralValue.\n * @param name\n */\n getAttribute(name: string): LiteralValueAnyArity | undefined;\n\n listNestedObjects(): Array<string>;\n\n listAttributes(): Array<string>;\n}\n"]}
1
+ {"version":3,"sources":["../../src/context/ObjectAccessor.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,gBAAgB,CAAC,GAAQ;IACvC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,CAAC,uBAAuB,KAAK,UAAU;QACjD,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU;QACtC,OAAO,GAAG,CAAC,iBAAiB,KAAK,UAAU;QAC3C,OAAO,GAAG,CAAC,cAAc,KAAK,UAAU,CACzC,CAAC;AACJ,CAAC;AARD,4CAQC","file":"context/ObjectAccessor.js","sourcesContent":["import { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\n\nexport interface ObjectAccessor {\n /**\n * If there is a nested object with the specified name (.e.g the 'pset' in $prop.pset),\n * return an ObjectAccessor for it.\n * @param name\n */\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined;\n\n /**\n * If the object has the attribute of the specified name, return it as (an array of (array of)) LiteralValue.\n * @param name\n */\n getAttribute(name: string): LiteralValueAnyArity | undefined;\n\n listNestedObjects(): Array<string>;\n\n listAttributes(): Array<string>;\n}\n\nexport function isObjectAccessor(arg: any): arg is ObjectAccessor {\n return (\n typeof arg === \"object\" &&\n typeof arg.getNestedObjectAccessor === \"function\" &&\n typeof arg.getAttribute === \"function\" &&\n typeof arg.listNestedObjects === \"function\" &&\n typeof arg.listAttributes === \"function\"\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport interface Expr<T> {\n evaluate(ctx: IfcExpressionContext): T;\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\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,8 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Expr0 = void 0;
4
- class Expr0 {
5
- constructor() { }
4
+ const ExprBase_1 = require("./ExprBase");
5
+ const ExprEvalResult_1 = require("./ExprEvalResult");
6
+ class Expr0 extends ExprBase_1.ExprBase {
7
+ constructor(kind) {
8
+ super(kind);
9
+ }
10
+ evaluate(ctx, localCtx) {
11
+ try {
12
+ const result = this.doEvaluate(ctx, localCtx);
13
+ return this.wrapInResultIfNecessary(result);
14
+ }
15
+ catch (error) {
16
+ return this.handleError(error);
17
+ }
18
+ }
19
+ handleError(error) {
20
+ return new ExprEvalResult_1.ExprEvalErrorObj(this.getKind(), ExprEvalResult_1.ExprEvalStatus.ERROR, error);
21
+ }
6
22
  }
7
23
  exports.Expr0 = Expr0;
8
24
  //# sourceMappingURL=Expr0.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/expression/Expr0.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IACzB,gBAAyB,CAAC;CAG3B;AAJD,sBAIC","file":"expression/Expr0.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr0<E> implements Expr<E> {\n protected constructor() {}\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/Expr0.ts"],"names":[],"mappings":";;;AAEA,yCAAsC;AACtC,qDAK0B;AAE1B,MAAsB,KAAS,SAAQ,mBAAW;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,iCAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,+BAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAzBD,sBAyBC","file":"expression/Expr0.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\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,10 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Expr1 = void 0;
4
- class Expr1 {
5
- constructor(value) {
4
+ const ExprEvalResult_1 = require("./ExprEvalResult");
5
+ const ExprBase_1 = require("./ExprBase");
6
+ const IfcExpressionUtils_1 = require("../IfcExpressionUtils");
7
+ class Expr1 extends ExprBase_1.ExprBase {
8
+ constructor(exprKind, value) {
9
+ super(exprKind);
6
10
  this.value = value;
7
11
  }
12
+ /**
13
+ * Override to generate a more specific error result.
14
+ * @param ctx
15
+ * @param localCtx
16
+ * @param subExpressionResult
17
+ * @protected
18
+ */
19
+ obtainResultForSubExpressionError(ctx, localCtx, subExpressionResult) {
20
+ return new ExprEvalResult_1.ExprEvalConsequentialError1Obj(this.getKind(), subExpressionResult);
21
+ }
22
+ // calculate the final result
23
+ makeErrorOrCalculate(ctx, localCtx, subExpressionResult) {
24
+ if ((0, ExprEvalResult_1.isExprEvalError)(subExpressionResult)) {
25
+ return this.obtainResultForSubExpressionError(ctx, localCtx, subExpressionResult);
26
+ }
27
+ return this.wrapInResultIfNecessary(this.calculateResult(ctx, localCtx, subExpressionResult.result));
28
+ }
29
+ onBeforeRecusion(ctx, localCtx) {
30
+ // do something before we calculate the subresult
31
+ return undefined;
32
+ }
33
+ evaluate(ctx, localCtx) {
34
+ const beforeRecursionError = this.onBeforeRecusion(ctx, localCtx);
35
+ if (!(0, IfcExpressionUtils_1.isNullish)(beforeRecursionError)) {
36
+ return beforeRecursionError;
37
+ }
38
+ const subResult = this.value.evaluate(ctx, localCtx);
39
+ if ((0, IfcExpressionUtils_1.isNullish)(subResult)) {
40
+ return new ExprEvalResult_1.ExprEvalError1Obj(this.getKind(), new ExprEvalResult_1.ExprEvalErrorUndefinedResult(this.value.getKind()), ExprEvalResult_1.ExprEvalStatus.MISSING_OPERAND);
41
+ }
42
+ try {
43
+ return this.makeErrorOrCalculate(ctx, localCtx, subResult);
44
+ }
45
+ catch (error) {
46
+ return this.handleError(error, subResult);
47
+ }
48
+ }
49
+ handleError(error, subResult) {
50
+ return new ExprEvalResult_1.ExprEvalError1Obj(this.getKind(), subResult, ExprEvalResult_1.ExprEvalStatus.ERROR, error);
51
+ }
8
52
  }
9
53
  exports.Expr1 = Expr1;
10
54
  //# sourceMappingURL=Expr1.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/expression/Expr1.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IAGzB,YAAsB,KAAQ;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CAGF;AARD,sBAQC","file":"expression/Expr1.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr1<V, E> implements Expr<E> {\n readonly value: V;\n\n protected constructor(value: V) {\n this.value = value;\n }\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/Expr1.ts"],"names":[],"mappings":";;;AAEA,qDAQ0B;AAC1B,yCAAsC;AAEtC,8DAAkD;AAElD,MAAsB,KAAY,SAAQ,mBAAW;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,+CAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,6BAA6B;IACrB,oBAAoB,CAC1B,GAAyB,EACzB,QAA0B,EAC1B,mBAAsC;QAEtC,IAAI,IAAA,gCAAe,EAAC,mBAAmB,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC,iCAAiC,CAC3C,GAAG,EACH,QAAQ,EACR,mBAAmB,CACpB,CAAC;SACH;QACD,OAAO,IAAI,CAAC,uBAAuB,CACjC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAChE,CAAC;IACJ,CAAC;IAES,gBAAgB,CACxB,GAAyB,EACzB,QAA0B;QAE1B,iDAAiD;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,IAAA,8BAAS,EAAC,oBAAoB,CAAC,EAAE;YACpC,OAAO,oBAAoB,CAAC;SAC7B;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAA,8BAAS,EAAC,SAAS,CAAC,EAAE;YACxB,OAAO,IAAI,kCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,6CAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACtD,+BAAc,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,kCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,SAAS,EACT,+BAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AA5FD,sBA4FC","file":"expression/Expr1.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\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,11 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Expr2 = void 0;
4
- class Expr2 {
5
- constructor(left, right) {
4
+ const ExprBase_1 = require("./ExprBase");
5
+ const ExprEvalResult_1 = require("./ExprEvalResult");
6
+ const IfcExpressionUtils_1 = require("../IfcExpressionUtils");
7
+ class Expr2 extends ExprBase_1.ExprBase {
8
+ constructor(exprKind, left, right) {
9
+ super(exprKind);
6
10
  this.left = left;
7
11
  this.right = right;
8
12
  }
13
+ onBeforeRecursion(ctx, localCtx) {
14
+ // override if subclass needs to do something before recursing
15
+ }
16
+ onAfterLeftRecursion(ctx, localCtx, leftResult) {
17
+ // override if subclass needs to do something with the left result, such as put it in the local context
18
+ }
19
+ evaluate(ctx, localCtx) {
20
+ this.onBeforeRecursion(ctx, localCtx);
21
+ const leftResult = this.left.evaluate(ctx, localCtx);
22
+ if ((0, IfcExpressionUtils_1.isNullish)(leftResult)) {
23
+ return new ExprEvalResult_1.ExprEvalErrorUndefinedResult(this.left.getKind());
24
+ }
25
+ if ((0, ExprEvalResult_1.isExprEvalError)(leftResult)) {
26
+ return this.makeErrorForLeftSubExprError(ctx, localCtx, leftResult);
27
+ }
28
+ this.onAfterLeftRecursion(ctx, localCtx, leftResult.result);
29
+ const rightResult = this.right.evaluate(ctx, localCtx);
30
+ if ((0, IfcExpressionUtils_1.isNullish)(rightResult)) {
31
+ return new ExprEvalResult_1.ExprEvalErrorUndefinedResult(this.right.getKind());
32
+ }
33
+ if ((0, ExprEvalResult_1.isExprEvalSuccess)(rightResult)) {
34
+ try {
35
+ const result = this.calculateResult(ctx, localCtx, leftResult.result, rightResult.result);
36
+ return this.wrapInResultIfNecessary(result);
37
+ }
38
+ catch (error) {
39
+ return this.handleError(error, leftResult, rightResult);
40
+ }
41
+ }
42
+ else {
43
+ return this.makeResultForRightSubExprError(ctx, localCtx, leftResult, rightResult);
44
+ }
45
+ }
46
+ makeResultForRightSubExprError(ctx, localCtx, leftResult, rightResult) {
47
+ return new ExprEvalResult_1.ExprEvalConsequentialError2Obj(this.getKind(), leftResult, rightResult);
48
+ }
49
+ makeErrorForLeftSubExprError(ctx, localCtx, leftResult) {
50
+ return new ExprEvalResult_1.ExprEvalConsequentialError1Obj(this.getKind(), leftResult, "Cannot evaluate attribute reference");
51
+ }
52
+ handleError(error, leftResult, rightResult) {
53
+ return new ExprEvalResult_1.ExprEvalError2Obj(this.getKind(), leftResult, rightResult, ExprEvalResult_1.ExprEvalStatus.ERROR, error);
54
+ }
9
55
  }
10
56
  exports.Expr2 = Expr2;
11
57
  //# sourceMappingURL=Expr2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/expression/Expr2.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IAIzB,YAAsB,IAAO,EAAE,KAAQ;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CAGF;AAVD,sBAUC","file":"expression/Expr2.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr2<L, R, E> implements Expr<E> {\n readonly left: L;\n readonly right: R;\n\n protected constructor(left: L, right: R) {\n this.left = left;\n this.right = right;\n }\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/Expr2.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AAEtC,qDAU0B;AAC1B,8DAAkD;AAGlD,MAAsB,KAAe,SAAQ,mBAAW;IAItD,YAAsB,QAAkB,EAAE,IAAa,EAAE,KAAc;QACrE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IASS,iBAAiB,CACzB,GAAyB,EACzB,QAA0B;QAE1B,8DAA8D;IAChE,CAAC;IAES,oBAAoB,CAC5B,GAAyB,EACzB,QAA0B,EAC1B,UAAa;QAEb,uGAAuG;IACzG,CAAC;IAEM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAA,8BAAS,EAAC,UAAU,CAAC,EAAE;YACzB,OAAO,IAAI,6CAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;QACD,IAAI,IAAA,gCAAe,EAAC,UAAU,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAA,8BAAS,EAAC,WAAW,CAAC,EAAE;YAC1B,OAAO,IAAI,6CAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC/D;QACD,IAAI,IAAA,kCAAiB,EAAC,WAAW,CAAC,EAAE;YAClC,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CACjC,GAAG,EACH,QAAQ,EACR,UAAU,CAAC,MAAM,EACjB,WAAW,CAAC,MAAM,CACnB,CAAC;gBACF,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;aACzD;SACF;aAAM;YACL,OAAO,IAAI,CAAC,8BAA8B,CACxC,GAAG,EACH,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;SACH;IACH,CAAC;IAES,8BAA8B,CACtC,GAAyB,EACzB,QAA0B,EAC1B,UAA6B,EAC7B,WAA0B;QAE1B,OAAO,IAAI,+CAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAES,4BAA4B,CACpC,GAAyB,EACzB,QAA0B,EAC1B,UAAyB;QAEzB,OAAO,IAAI,+CAA8B,CACvC,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAA6B,EAC7B,WAA8B;QAE9B,OAAO,IAAI,kCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,+BAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AA7GD,sBA6GC","file":"expression/Expr2.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase\";\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"]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expr2LeftBeforeRight = void 0;
4
+ const ExprBase_1 = require("./ExprBase");
5
+ const ExprEvalResult_1 = require("./ExprEvalResult");
6
+ const IfcExpressionUtils_1 = require("../IfcExpressionUtils");
7
+ class Expr2LeftBeforeRight extends ExprBase_1.ExprBase {
8
+ constructor(exprKind, left, right) {
9
+ super(exprKind);
10
+ this.left = left;
11
+ this.right = right;
12
+ }
13
+ evaluate(ctx, localCtx) {
14
+ const leftResult = this.left.evaluate(ctx, localCtx);
15
+ if ((0, IfcExpressionUtils_1.isNullish)(leftResult)) {
16
+ return new ExprEvalResult_1.ExprEvalErrorUndefinedResult(this.left.getKind());
17
+ }
18
+ this.handleLeftResult(leftResult);
19
+ const rightResult = this.right.evaluate(ctx, localCtx);
20
+ if ((0, IfcExpressionUtils_1.isNullish)(leftResult) || (0, IfcExpressionUtils_1.isNullish)(rightResult)) {
21
+ return new ExprEvalResult_1.ExprEvalError2Obj(this.getKind(), (0, IfcExpressionUtils_1.isNullish)(leftResult)
22
+ ? new ExprEvalResult_1.ExprEvalErrorUndefinedResult(this.left.getKind())
23
+ : leftResult, (0, IfcExpressionUtils_1.isNullish)(rightResult)
24
+ ? new ExprEvalResult_1.ExprEvalErrorUndefinedResult(this.right.getKind())
25
+ : rightResult, ExprEvalResult_1.ExprEvalStatus.MISSING_OPERAND);
26
+ }
27
+ if ((0, ExprEvalResult_1.isExprEvalSuccess)(leftResult) && (0, ExprEvalResult_1.isExprEvalSuccess)(rightResult)) {
28
+ try {
29
+ const result = this.doEvaluate(ctx, leftResult.result, rightResult.result);
30
+ return this.wrapInResultIfNecessary(result);
31
+ }
32
+ catch (error) {
33
+ return this.handleError(error, leftResult, rightResult);
34
+ }
35
+ }
36
+ else {
37
+ return new ExprEvalResult_1.ExprEvalConsequentialError2Obj(this.getKind(), leftResult, rightResult);
38
+ }
39
+ }
40
+ handleError(error, leftResult, rightResult) {
41
+ return new ExprEvalResult_1.ExprEvalError2Obj(this.getKind(), leftResult, rightResult, ExprEvalResult_1.ExprEvalStatus.ERROR, error);
42
+ }
43
+ }
44
+ exports.Expr2LeftBeforeRight = Expr2LeftBeforeRight;
45
+ //# sourceMappingURL=Expr2LeftBeforeRight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/Expr2LeftBeforeRight.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AAEtC,qDAQ0B;AAC1B,8DAAkD;AAGlD,MAAsB,oBAA8B,SAAQ,mBAAW;IAIrE,YAAsB,QAAkB,EAAE,IAAa,EAAE,KAAc;QACrE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAUM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAA,8BAAS,EAAC,UAAU,CAAC,EAAE;YACzB,OAAO,IAAI,6CAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAA,8BAAS,EAAC,UAAU,CAAC,IAAI,IAAA,8BAAS,EAAC,WAAW,CAAC,EAAE;YACnD,OAAO,IAAI,kCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,IAAA,8BAAS,EAAC,UAAU,CAAC;gBACnB,CAAC,CAAC,IAAI,6CAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvD,CAAC,CAAC,UAAU,EACd,IAAA,8BAAS,EAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,IAAI,6CAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxD,CAAC,CAAC,WAAW,EACf,+BAAc,CAAC,eAAe,CAC/B,CAAC;SACH;QACD,IAAI,IAAA,kCAAiB,EAAC,UAAU,CAAC,IAAI,IAAA,kCAAiB,EAAC,WAAW,CAAC,EAAE;YACnE,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAC5B,GAAG,EACH,UAAU,CAAC,MAAM,EACjB,WAAW,CAAC,MAAM,CACnB,CAAC;gBACF,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;aACzD;SACF;aAAM;YACL,OAAO,IAAI,+CAA8B,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,kCAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,+BAAc,CAAC,KAAK,EACpB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AAzED,oDAyEC","file":"expression/Expr2LeftBeforeRight.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprBase } from \"./ExprBase\";\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"]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExprBase = void 0;
4
+ const ExprEvalResult_1 = require("./ExprEvalResult");
5
+ class ExprBase {
6
+ constructor(exprKind) {
7
+ this.exprKind = exprKind;
8
+ }
9
+ getKind() {
10
+ return this.exprKind;
11
+ }
12
+ wrapInResultIfNecessary(result) {
13
+ if ((0, ExprEvalResult_1.isExprEvalError)(result)) {
14
+ return result;
15
+ }
16
+ return new ExprEvalResult_1.ExprEvalSuccessObj(result);
17
+ }
18
+ }
19
+ exports.ExprBase = ExprBase;
20
+ //# sourceMappingURL=ExprBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,qDAK0B;AAG1B,MAAsB,QAAQ;IAG5B,YAAY,QAAkB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAOD,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,uBAAuB,CAC/B,MAAyB;QAEzB,IAAI,IAAA,gCAAe,EAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,mCAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAxBD,4BAwBC","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"]}