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,4 +1,4 @@
1
- import { Expr } from "../Expr";
2
- import { ObjectAccessor } from "../../context/ObjectAccessor";
1
+ import { Expr } from "../Expr.js";
2
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
3
3
  export interface ObjectReferenceExpr extends Expr<ObjectAccessor> {
4
4
  }
@@ -1,8 +1,8 @@
1
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
- import { Expr0 } from "../Expr0";
3
- import { ObjectReferenceExpr } from "./ObjectReferenceExpr";
4
- import { ObjectAccessor } from "../../context/ObjectAccessor";
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { Expr0 } from "../Expr0.js";
3
+ import { ObjectReferenceExpr } from "./ObjectReferenceExpr.js";
4
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
5
5
  export declare class PropObjectReferenceExpr extends Expr0<ObjectAccessor> implements ObjectReferenceExpr {
6
6
  constructor();
7
- evaluate(ctx: IfcExpressionContext): ObjectAccessor;
7
+ doEvaluate(ctx: IfcExpressionContext): ObjectAccessor;
8
8
  }
@@ -1,8 +1,8 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { StringValue } from "../../value/StringValue";
5
- export declare class StringConcatExpr extends Expr2<Expr<StringValue>, Expr<StringValue>, StringValue> {
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { StringValue } from "../../value/StringValue.js";
5
+ export declare class StringConcatExpr extends Expr2<StringValue, StringValue, StringValue> {
6
6
  constructor(left: Expr<StringValue>, right: Expr<StringValue>);
7
- evaluate(ctx: IfcExpressionContext): StringValue;
7
+ calculateResult(ctx: IfcExpressionContext, localCtx: Map<string, any>, left: StringValue, right: StringValue): StringValue;
8
8
  }
@@ -1,7 +1,7 @@
1
- import { Expr1 } from "../Expr1";
2
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
3
- import { StringValue } from "../../value/StringValue";
4
- export declare class StringLiteralExpr extends Expr1<StringValue, StringValue> {
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { StringValue } from "../../value/StringValue.js";
3
+ import { LiteralExpr } from "../LiteralExpr";
4
+ export declare class StringLiteralExpr extends LiteralExpr<StringValue, StringValue> {
5
5
  constructor(value: StringValue);
6
- evaluate(ctx: IfcExpressionContext): StringValue;
6
+ calculateResult(ctx: IfcExpressionContext): StringValue;
7
7
  }
@@ -0,0 +1,11 @@
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
+ import { ExprEvalError } from "../ExprEvalResult";
3
+ import { Expr } from "../Expr";
4
+ import { Expr0 } from "../Expr0";
5
+ import { ArrayValue } from "../../value/ArrayValue";
6
+ import { LiteralValue } from "../../value/LiteralValue";
7
+ export declare class ArrayExpr extends Expr0<ArrayValue> {
8
+ private elements;
9
+ constructor(elements: Array<Expr<LiteralValue>>);
10
+ protected doEvaluate(ctx: IfcExpressionContext, localCtx: Map<string, any>): ExprEvalError | ArrayValue;
11
+ }
@@ -13,15 +13,16 @@ export default class IfcExpressionLexer extends Lexer {
13
13
  static readonly T__10 = 11;
14
14
  static readonly INT = 12;
15
15
  static readonly FLOAT = 13;
16
- static readonly PROP = 14;
17
- static readonly ELEM = 15;
18
- static readonly RESERVED_ATTRIBUTE_NAME = 16;
19
- static readonly RESERVED_RELATION_NAME = 17;
20
- static readonly QUOTED_STRING = 18;
21
- static readonly BRACKETED_STRING = 19;
22
- static readonly IDENTIFIER = 20;
23
- static readonly WS = 21;
24
- static readonly NEWLINE = 22;
16
+ static readonly SIGN = 14;
17
+ static readonly PROP = 15;
18
+ static readonly ELEM = 16;
19
+ static readonly RESERVED_ATTRIBUTE_NAME = 17;
20
+ static readonly RESERVED_RELATION_NAME = 18;
21
+ static readonly QUOTED_STRING = 19;
22
+ static readonly BRACKETED_STRING = 20;
23
+ static readonly IDENTIFIER = 21;
24
+ static readonly WS = 22;
25
+ static readonly NEWLINE = 23;
25
26
  static readonly EOF: number;
26
27
  static readonly channelNames: string[];
27
28
  static readonly literalNames: (string | null)[];
@@ -15,15 +15,16 @@ export default class IfcExpressionParser extends Parser {
15
15
  static readonly T__10 = 11;
16
16
  static readonly INT = 12;
17
17
  static readonly FLOAT = 13;
18
- static readonly PROP = 14;
19
- static readonly ELEM = 15;
20
- static readonly RESERVED_ATTRIBUTE_NAME = 16;
21
- static readonly RESERVED_RELATION_NAME = 17;
22
- static readonly QUOTED_STRING = 18;
23
- static readonly BRACKETED_STRING = 19;
24
- static readonly IDENTIFIER = 20;
25
- static readonly WS = 21;
26
- static readonly NEWLINE = 22;
18
+ static readonly SIGN = 14;
19
+ static readonly PROP = 15;
20
+ static readonly ELEM = 16;
21
+ static readonly RESERVED_ATTRIBUTE_NAME = 17;
22
+ static readonly RESERVED_RELATION_NAME = 18;
23
+ static readonly QUOTED_STRING = 19;
24
+ static readonly BRACKETED_STRING = 20;
25
+ static readonly IDENTIFIER = 21;
26
+ static readonly WS = 22;
27
+ static readonly NEWLINE = 23;
27
28
  static readonly EOF: number;
28
29
  static readonly RULE_expr = 0;
29
30
  static readonly RULE_numExpr = 1;
@@ -1,21 +1,23 @@
1
- import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
2
- import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr";
3
- import { notNullish } from "./utils";
1
+ import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
2
+ import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr.js";
3
+ import { isNullish, isPresent } from "./IfcExpressionUtils.js";
4
4
  import Decimal from "decimal.js";
5
- import { PlusExpr } from "./expression/numeric/PlusExpr";
6
- import { MinusExpr } from "./expression/numeric/MinusExpr";
7
- import { MultiplyExpr } from "./expression/numeric/MultiplyExpr";
8
- import { DivideExpr } from "./expression/numeric/DivideExpr";
9
- import { NumParenthesisExpr } from "./expression/numeric/NumParenthesisExpr";
10
- import { AttributeReferenceExpr } from "./expression/reference/AttributeReferenceExpr";
11
- import { PropObjectReferenceExpr } from "./expression/reference/PropObjectReferenceExpr";
12
- import { ElemObjectReferenceExpr } from "./expression/reference/ElemObjectReferenceExpr";
13
- import { NestedObjectChainExpr } from "./expression/reference/NestedObjectChainExpr";
14
- import { NestedObjectChainEndExpr } from "./expression/reference/NestedObjectChainEndExpr";
15
- import { NumericValue } from "./value/NumericValue";
16
- import { StringValue } from "./value/StringValue";
17
- import { StringLiteralExpr } from "./expression/string/StringLiteralExpr";
18
- import { StringConcatExpr } from "./expression/string/StringConcatExpr";
5
+ import { PlusExpr } from "./expression/numeric/PlusExpr.js";
6
+ import { MinusExpr } from "./expression/numeric/MinusExpr.js";
7
+ import { MultiplyExpr } from "./expression/numeric/MultiplyExpr.js";
8
+ import { DivideExpr } from "./expression/numeric/DivideExpr.js";
9
+ import { NumParenthesisExpr } from "./expression/numeric/NumParenthesisExpr.js";
10
+ import { AttributeReferenceExpr } from "./expression/reference/AttributeReferenceExpr.js";
11
+ import { PropObjectReferenceExpr } from "./expression/reference/PropObjectReferenceExpr.js";
12
+ import { ElemObjectReferenceExpr } from "./expression/reference/ElemObjectReferenceExpr.js";
13
+ import { NestedObjectChainExpr } from "./expression/reference/NestedObjectChainExpr.js";
14
+ import { NestedObjectChainEndExpr } from "./expression/reference/NestedObjectChainEndExpr.js";
15
+ import { NumericValue } from "./value/NumericValue.js";
16
+ import { StringValue } from "./value/StringValue.js";
17
+ import { StringLiteralExpr } from "./expression/string/StringLiteralExpr.js";
18
+ import { StringConcatExpr } from "./expression/string/StringConcatExpr.js";
19
+ import { ArrayExpr } from "./expression/structure/ArrayExpr";
20
+ import { FunctionExpr } from "./expression/function/FunctionExpr";
19
21
  export class ExprVisitor extends IfcExpressionVisitor {
20
22
  constructor() {
21
23
  super();
@@ -28,10 +30,10 @@ export class ExprVisitor extends IfcExpressionVisitor {
28
30
  return new AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
29
31
  };
30
32
  this.visitObjectRef = (ctx) => {
31
- if (notNullish(ctx.PROP())) {
33
+ if (isPresent(ctx.PROP())) {
32
34
  return new PropObjectReferenceExpr();
33
35
  }
34
- else if (notNullish(ctx.ELEM())) {
36
+ else if (isPresent(ctx.ELEM())) {
35
37
  return new ElemObjectReferenceExpr();
36
38
  }
37
39
  this.failNode(ctx);
@@ -67,12 +69,12 @@ export class ExprVisitor extends IfcExpressionVisitor {
67
69
  };
68
70
  this.visitNumLiteral = (ctx) => {
69
71
  let val = ctx.INT();
70
- if (notNullish(val)) {
71
- return new NumericLiteralExpr(new NumericValue(new Decimal(val.symbol.text)));
72
+ if (isPresent(val)) {
73
+ return new NumericLiteralExpr(new NumericValue(new Decimal(ctx.getText())));
72
74
  }
73
75
  val = ctx.FLOAT();
74
- if (notNullish(val)) {
75
- return new NumericLiteralExpr(new NumericValue(new Decimal(val.symbol.text)));
76
+ if (isPresent(val)) {
77
+ return new NumericLiteralExpr(new NumericValue(new Decimal(ctx.getText())));
76
78
  }
77
79
  this.failNode(ctx);
78
80
  };
@@ -105,6 +107,38 @@ export class ExprVisitor extends IfcExpressionVisitor {
105
107
  this.visitNumLit = (ctx) => {
106
108
  return this.visit(ctx.getChild(0));
107
109
  };
110
+ /*================================================
111
+ * ArrayExpr
112
+ *===============================================*/
113
+ this.visitArray = (ctx) => {
114
+ return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));
115
+ };
116
+ this.collectArrayElements = (ctx) => {
117
+ const first = this.visit(ctx.expr());
118
+ const rest = ctx.arrayElementList();
119
+ if (!isNullish(rest)) {
120
+ const arr = this.collectArrayElements(rest);
121
+ arr.unshift(first);
122
+ return arr;
123
+ }
124
+ return [first];
125
+ };
126
+ /*================================================
127
+ * FuncExpr
128
+ *===============================================*/
129
+ this.visitFunctionCall = (ctx) => {
130
+ return new FunctionExpr(ctx._name.text, this.collectFunctionArguments(ctx.exprList()));
131
+ };
132
+ this.collectFunctionArguments = (ctx) => {
133
+ const first = this.visit(ctx.expr());
134
+ const rest = ctx.exprList();
135
+ if (!isNullish(rest)) {
136
+ const arr = this.collectFunctionArguments(rest);
137
+ arr.unshift(first);
138
+ return arr;
139
+ }
140
+ return [first];
141
+ };
108
142
  }
109
143
  stripBrackets(name) {
110
144
  if (name.startsWith("{")) {
@@ -1 +1 @@
1
- {"version":3,"sources":["ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"../generated/parser/IfcExpressionVisitor\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr\";\nimport {\n AttributeRefContext,\n ExprContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"../generated/parser/IfcExpressionParser\";\nimport { Expr } from \"./expression/Expr\";\nimport { notNullish } from \"./utils\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr\";\nimport { NumericValue } from \"./value/NumericValue\";\nimport { StringValue } from \"./value/StringValue\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (notNullish(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (notNullish(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n val = ctx.FLOAT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
1
+ {"version":3,"sources":["ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr.js\";\nimport {\n ArrayContext,\n ArrayElementListContext,\n AttributeRefContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr.js\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr.js\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr.js\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr.js\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr.js\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr.js\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr.js\";\nimport { ArrayExpr } from \"./expression/structure/ArrayExpr\";\nimport { FunctionExpr } from \"./expression/function/FunctionExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (isPresent(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (isPresent(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArray: (ctx: ArrayContext) => Expr<any> = (ctx) => {\n return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n return new FunctionExpr(\n ctx._name.text,\n this.collectFunctionArguments(ctx.exprList())\n );\n };\n\n collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n const arr = this.collectFunctionArguments(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
@@ -1,31 +1,30 @@
1
1
  import { CharStream, CommonTokenStream } from "antlr4";
2
- import { ExprVisitor } from "./ExprVisitor";
3
- import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener";
4
- import { notNullish } from "./utils";
5
- import IfcExpressionParser from "../generated/parser/IfcExpressionParser";
6
- import IfcExpressionLexer from "../generated/parser/IfcExpressionLexer";
7
- import { IfcElementAccessor } from "./context/IfcElementAccessor";
8
- import { Value } from "./value/Value";
9
- import { StringValue } from "./value/StringValue";
10
- import { NumericValue } from "./value/NumericValue";
11
- import { BooleanValue } from "./value/BooleanValue";
12
- import { LogicalValue } from "./value/LogicalValue";
13
- import { ReferenceValue } from "./value/ReferenceValue";
14
- import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor";
15
- import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor";
16
- import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor";
17
- import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor";
18
- import { NamedObjectAccessor } from "./context/NamedObjectAccessor";
19
- import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException";
20
- import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
21
- export { IfcElementAccessor, Value, StringValue, BooleanValue, LogicalValue, NumericValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, };
2
+ import { ExprVisitor } from "./ExprVisitor.js";
3
+ import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener.js";
4
+ import { isNullish, isPresent } from "./IfcExpressionUtils.js";
5
+ import { IfcElementAccessor } from "./context/IfcElementAccessor.js";
6
+ import { StringValue } from "./value/StringValue.js";
7
+ import { NumericValue } from "./value/NumericValue.js";
8
+ import { BooleanValue } from "./value/BooleanValue.js";
9
+ import { LogicalValue } from "./value/LogicalValue.js";
10
+ import { ReferenceValue } from "./value/ReferenceValue.js";
11
+ import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor.js";
12
+ import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor.js";
13
+ import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor.js";
14
+ import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor.js";
15
+ import { NamedObjectAccessor } from "./context/NamedObjectAccessor.js";
16
+ import IfcExpressionParser from "./gen/parser/IfcExpressionParser.js";
17
+ import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
18
+ import IfcExpressionLexer from "./gen/parser/IfcExpressionLexer.js";
19
+ import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
20
+ export { IfcElementAccessor, StringValue, BooleanValue, LogicalValue, NumericValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ExprVisitor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, };
22
21
  export class IfcExpression {
23
22
  static parse(input, errorListener) {
24
23
  const chars = new CharStream(input); // replace this with a FileStream as required
25
24
  const lexer = new IfcExpressionLexer(chars);
26
25
  const tokens = new CommonTokenStream(lexer);
27
26
  const parser = new IfcExpressionParser(tokens);
28
- if (notNullish(errorListener)) {
27
+ if (isPresent(errorListener)) {
29
28
  parser.removeErrorListeners();
30
29
  parser.addErrorListener(errorListener);
31
30
  }
@@ -38,7 +37,7 @@ export class IfcExpression {
38
37
  throw errorListener.getException();
39
38
  }
40
39
  const parsedExpression = this.extractExprTree(tree);
41
- return parsedExpression.evaluate(context);
40
+ return parsedExpression.evaluate(context, new Map());
42
41
  }
43
42
  static extractExprTree(tree) {
44
43
  const visitor = new ExprVisitor();
@@ -1 +1 @@
1
- {"version":3,"sources":["IfcExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAwB,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,mBAEN,MAAM,yCAAyC,CAAC;AACjD,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAG5E,OAAO,EACL,kBAAkB,EAElB,KAAK,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,GACrB,CAAC;AAIF,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE;YAC7B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,IAAiB;QAC9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener\";\nimport { notNullish } from \"./utils\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext\";\nimport { Expr } from \"./expression/Expr\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"../generated/parser/IfcExpressionParser\";\nimport IfcExpressionLexer from \"../generated/parser/IfcExpressionLexer\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor\";\nimport { Value } from \"./value/Value\";\nimport { StringValue } from \"./value/StringValue\";\nimport { NumericValue } from \"./value/NumericValue\";\nimport { BooleanValue } from \"./value/BooleanValue\";\nimport { LogicalValue } from \"./value/LogicalValue\";\nimport { LiteralValue } from \"./value/LiteralValue\";\nimport { ReferenceValue } from \"./value/ReferenceValue\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException\";\nimport IfcExpressionVisitor from \"../generated/parser/IfcExpressionVisitor\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType\";\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (notNullish(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): LiteralValueAnyArity {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context);\n }\n\n private static extractExprTree(tree: ExprContext): Expr<any> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
1
+ {"version":3,"sources":["IfcExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAwB,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,mBAEN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AAKpG,OAAO,EACL,kBAAkB,EAGlB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,WAAW,EACX,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,EACpB,SAAS,EACT,SAAS,GACV,CAAC;AAIF,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE;YAC5B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,EAAe,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,IAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { LiteralValue } from \"./value/LiteralValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity.js\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType.js\";\nimport { ExprEvalResult } from \"./expression/ExprEvalResult\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprVisitor,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (isPresent(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): ExprEvalResult<any> {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context, new Map<string, any>());\n }\n\n private static extractExprTree(\n tree: ExprContext\n ): Expr<LiteralValueAnyArity> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { ErrorListener } from "antlr4";
2
- import { notNullish } from "./utils";
3
- import { SyntaxErrorException } from "./SyntaxErrorException";
2
+ import { isPresent } from "./IfcExpressionUtils.js";
3
+ import { SyntaxErrorException } from "./SyntaxErrorException.js";
4
4
  export class IfcExpressionErrorListener extends ErrorListener {
5
5
  constructor() {
6
6
  super(...arguments);
@@ -10,7 +10,7 @@ export class IfcExpressionErrorListener extends ErrorListener {
10
10
  this.exception = new SyntaxErrorException(offendingSymbol, line, column, msg);
11
11
  }
12
12
  isErrorOccurred() {
13
- return notNullish(this.exception);
13
+ return isPresent(this.exception);
14
14
  }
15
15
  getException() {
16
16
  return this.exception;
@@ -1 +1 @@
1
- {"version":3,"sources":["IfcExpressionErrorListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,OAAO,0BAA2B,SAAQ,aAAoB;IAApE;;QACU,cAAS,GAAyB,IAAI,CAAC;IAyBjD,CAAC;IAvBC,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CACvC,eAAe,EACf,IAAI,EACJ,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,eAAe;QACpB,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { notNullish } from \"./utils\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException\";\n\nexport class IfcExpressionErrorListener extends ErrorListener<Token> {\n private exception: SyntaxErrorException = null;\n\n syntaxError(\n recognizer: Recognizer<Token>,\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string,\n e: RecognitionException | undefined\n ) {\n this.exception = new SyntaxErrorException(\n offendingSymbol,\n line,\n column,\n msg\n );\n }\n\n public isErrorOccurred(): boolean {\n return notNullish(this.exception);\n }\n\n public getException(): SyntaxErrorException {\n return this.exception;\n }\n}\n"]}
1
+ {"version":3,"sources":["IfcExpressionErrorListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,OAAO,0BAA2B,SAAQ,aAAoB;IAApE;;QACU,cAAS,GAAyB,IAAI,CAAC;IAyBjD,CAAC;IAvBC,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CACvC,eAAe,EACf,IAAI,EACJ,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,eAAe;QACpB,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { isPresent } from \"./IfcExpressionUtils.js\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException.js\";\n\nexport class IfcExpressionErrorListener extends ErrorListener<Token> {\n private exception: SyntaxErrorException = null;\n\n syntaxError(\n recognizer: Recognizer<Token>,\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string,\n e: RecognitionException | undefined\n ) {\n this.exception = new SyntaxErrorException(\n offendingSymbol,\n line,\n column,\n msg\n );\n }\n\n public isErrorOccurred(): boolean {\n return isPresent(this.exception);\n }\n\n public getException(): SyntaxErrorException {\n return this.exception;\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export function isNullish(val) {
2
+ return typeof val === "undefined" || val === null;
3
+ }
4
+ export function isPresent(val) {
5
+ return !isNullish(val);
6
+ }
7
+ //# sourceMappingURL=IfcExpressionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["IfcExpressionUtils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC","file":"IfcExpressionUtils.js","sourcesContent":["export function isNullish(val: any) {\n return typeof val === \"undefined\" || val === null;\n}\n\nexport function isPresent(val: any): boolean {\n return !isNullish(val);\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { notNullish } from "./utils";
1
+ import { isPresent } from "./IfcExpressionUtils.js";
2
2
  export class SyntaxErrorException extends Error {
3
3
  constructor(offendingSymbol, line, column, msg) {
4
4
  super(`Syntax Error in line ${line}, column ${column}` +
5
- (notNullish(msg) ? `: ${msg}` : ""));
5
+ (isPresent(msg) ? `: ${msg}` : ""));
6
6
  this._offendingSymbol = offendingSymbol;
7
7
  this._line = line;
8
8
  this._column = column;
@@ -1 +1 @@
1
- {"version":3,"sources":["SyntaxErrorException.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"SyntaxErrorException.js","sourcesContent":["import { Token } from \"antlr4\";\nimport { notNullish } from \"./utils\";\n\nexport class SyntaxErrorException extends Error {\n private readonly _offendingSymbol: Token;\n private readonly _line: number;\n private readonly _column: number;\n\n constructor(\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string\n ) {\n super(\n `Syntax Error in line ${line}, column ${column}` +\n (notNullish(msg) ? `: ${msg}` : \"\")\n );\n this._offendingSymbol = offendingSymbol;\n this._line = line;\n this._column = column;\n }\n\n get offendingSymbol(): Token {\n return this._offendingSymbol;\n }\n\n get line(): number {\n return this._line;\n }\n\n get column(): number {\n return this._column;\n }\n}\n"]}
1
+ {"version":3,"sources":["SyntaxErrorException.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"SyntaxErrorException.js","sourcesContent":["import { Token } from \"antlr4\";\nimport { isPresent } from \"./IfcExpressionUtils.js\";\n\nexport class SyntaxErrorException extends Error {\n private readonly _offendingSymbol: Token;\n private readonly _line: number;\n private readonly _column: number;\n\n constructor(\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string\n ) {\n super(\n `Syntax Error in line ${line}, column ${column}` +\n (isPresent(msg) ? `: ${msg}` : \"\")\n );\n this._offendingSymbol = offendingSymbol;\n this._line = line;\n this._column = column;\n }\n\n get offendingSymbol(): Token {\n return this._offendingSymbol;\n }\n\n get line(): number {\n return this._line;\n }\n\n get column(): number {\n return this._column;\n }\n}\n"]}
@@ -1,16 +1,16 @@
1
- import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
2
- import { StringValue } from "../value/StringValue";
3
- import { notNullish } from "../utils";
1
+ import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
2
+ import { StringValue } from "../value/StringValue.js";
3
+ import { isPresent } from "../IfcExpressionUtils.js";
4
4
  export class IfcElementAccessor extends IfcRootObjectAccessor {
5
5
  getNestedObjectAccessor(name) {
6
6
  if (name === "type") {
7
7
  return this.getTypeObjectAccessor();
8
8
  }
9
- let val = this.getIfcPropertyAccessor(name);
10
- if (notNullish(val)) {
9
+ let val = this.getIfcPropertySetAccessor(name);
10
+ if (isPresent(val)) {
11
11
  return val;
12
12
  }
13
- return this.getIfcPropertySetAccessor(name);
13
+ return this.getIfcPropertyAccessor(name);
14
14
  }
15
15
  getAttribute(name) {
16
16
  switch (name) {
@@ -1 +1 @@
1
- {"version":3,"sources":["context/IfcElementAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,OAAgB,kBAAmB,SAAQ,qBAAqB;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,UAAU,CAAC,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,WAAW,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","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":["context/IfcElementAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,MAAM,OAAgB,kBAAmB,SAAQ,qBAAqB;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,SAAS,CAAC,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,WAAW,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","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":["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":["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,4 +1,4 @@
1
- import { NamedObjectAccessor } from "./NamedObjectAccessor";
1
+ import { NamedObjectAccessor } from "./NamedObjectAccessor.js";
2
2
  export class IfcPropertyAccessor extends NamedObjectAccessor {
3
3
  getNestedObjectAccessor(name) {
4
4
  switch (name) {
@@ -1 +1 @@
1
- {"version":3,"sources":["context/IfcPropertyAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,OAAgB,mBAAoB,SAAQ,mBAAmB;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","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":["context/IfcPropertyAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,OAAgB,mBAAoB,SAAQ,mBAAmB;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","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,4 +1,4 @@
1
- import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
1
+ import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
2
2
  export class IfcPropertySetAccessor extends IfcRootObjectAccessor {
3
3
  listAttributes() {
4
4
  return [...super.listAttributes(), ...this.listIfcProperties()];
@@ -1 +1 @@
1
- {"version":3,"sources":["context/IfcPropertySetAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,MAAM,OAAgB,sBAAuB,SAAQ,qBAAqB;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","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":["context/IfcPropertySetAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKnE,MAAM,OAAgB,sBAAuB,SAAQ,qBAAqB;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","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,5 +1,5 @@
1
- import { NamedObjectAccessor } from "./NamedObjectAccessor";
2
- import { StringValue } from "../value/StringValue";
1
+ import { NamedObjectAccessor } from "./NamedObjectAccessor.js";
2
+ import { StringValue } from "../value/StringValue.js";
3
3
  export class IfcRootObjectAccessor extends NamedObjectAccessor {
4
4
  getAttribute(name) {
5
5
  switch (name) {
@@ -1 +1 @@
1
- {"version":3,"sources":["context/IfcRootObjectAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAgB,qBAAsB,SAAQ,mBAAmB;IACrE,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,WAAW,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","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":["context/IfcRootObjectAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,OAAgB,qBAAsB,SAAQ,mBAAmB;IACrE,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,WAAW,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","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,9 +1,9 @@
1
- import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
2
- import { notNullish } from "../utils";
1
+ import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
2
+ import { isPresent } from "../IfcExpressionUtils.js";
3
3
  export class IfcTypeObjectAccessor extends IfcRootObjectAccessor {
4
4
  getNestedObjectAccessor(name) {
5
5
  let val = this.getIfcPropertyAccessor(name);
6
- if (notNullish(val)) {
6
+ if (isPresent(val)) {
7
7
  return val;
8
8
  }
9
9
  return this.getIfcPropertySetAccessor(name);
@@ -1 +1 @@
1
- {"version":3,"sources":["context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,OAAgB,qBAAsB,SAAQ,qBAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,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","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":["context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,MAAM,OAAgB,qBAAsB,SAAQ,qBAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,CAAC,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","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,4 +1,4 @@
1
- import { StringValue } from "../value/StringValue";
1
+ import { StringValue } from "../value/StringValue.js";
2
2
  export class NamedObjectAccessor {
3
3
  getAttribute(name) {
4
4
  switch (name) {