ifc-expressions 0.2.3 → 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 (249) hide show
  1. package/dist/ExprVisitor.d.ts +5 -1
  2. package/dist/IfcExpression.d.ts +3 -2
  3. package/dist/cjs/ExprVisitor.js +36 -2
  4. package/dist/cjs/ExprVisitor.js.map +1 -1
  5. package/dist/cjs/IfcExpression.js +3 -5
  6. package/dist/cjs/IfcExpression.js.map +1 -1
  7. package/dist/cjs/context/IfcElementAccessor.js +2 -2
  8. package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
  9. package/dist/cjs/context/ObjectAccessor.js +9 -0
  10. package/dist/cjs/context/ObjectAccessor.js.map +1 -1
  11. package/dist/cjs/expression/Expr.js.map +1 -1
  12. package/dist/cjs/expression/Expr0.js +18 -2
  13. package/dist/cjs/expression/Expr0.js.map +1 -1
  14. package/dist/cjs/expression/Expr1.js +46 -2
  15. package/dist/cjs/expression/Expr1.js.map +1 -1
  16. package/dist/cjs/expression/Expr2.js +48 -2
  17. package/dist/cjs/expression/Expr2.js.map +1 -1
  18. package/dist/cjs/expression/Expr2LeftBeforeRight.js +45 -0
  19. package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  20. package/dist/cjs/expression/ExprBase.js +20 -0
  21. package/dist/cjs/expression/ExprBase.js.map +1 -0
  22. package/dist/cjs/expression/ExprEvalResult.js +165 -0
  23. package/dist/cjs/expression/ExprEvalResult.js.map +1 -0
  24. package/dist/cjs/expression/ExprKind.js +24 -0
  25. package/dist/cjs/expression/ExprKind.js.map +1 -0
  26. package/dist/cjs/expression/LiteralExpr.js +25 -0
  27. package/dist/cjs/expression/LiteralExpr.js.map +1 -0
  28. package/dist/cjs/expression/LocalContextKeys.js +7 -0
  29. package/dist/cjs/expression/LocalContextKeys.js.map +1 -0
  30. package/dist/cjs/expression/function/Func.js +93 -0
  31. package/dist/cjs/expression/function/Func.js.map +1 -0
  32. package/dist/cjs/expression/function/FuncArg.js +33 -0
  33. package/dist/cjs/expression/function/FuncArg.js.map +1 -0
  34. package/dist/cjs/expression/function/FunctionExpr.js +33 -0
  35. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -0
  36. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js +10 -0
  37. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  38. package/dist/cjs/expression/function/IfcExpressionFunctions.js +26 -0
  39. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  40. package/dist/cjs/expression/function/arg/FuncArgBase.js +34 -0
  41. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -0
  42. package/dist/cjs/expression/function/arg/FuncArgInt.js +25 -0
  43. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -0
  44. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +22 -0
  45. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  46. package/dist/cjs/expression/function/impl/MAP.js +77 -0
  47. package/dist/cjs/expression/function/impl/MAP.js.map +1 -0
  48. package/dist/cjs/expression/function/impl/ROUND.js +29 -0
  49. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -0
  50. package/dist/cjs/expression/numeric/DivideExpr.js +8 -6
  51. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  52. package/dist/cjs/expression/numeric/MinusExpr.js +4 -6
  53. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  54. package/dist/cjs/expression/numeric/MultiplyExpr.js +4 -6
  55. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  56. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +4 -3
  57. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  58. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +5 -4
  59. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  60. package/dist/cjs/expression/numeric/PlusExpr.js +4 -6
  61. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  62. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +19 -5
  63. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  64. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +3 -2
  65. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  66. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  67. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  68. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +33 -8
  69. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  70. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +3 -2
  71. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  72. package/dist/cjs/expression/string/StringConcatExpr.js +4 -3
  73. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  74. package/dist/cjs/expression/string/StringLiteralExpr.js +5 -4
  75. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  76. package/dist/cjs/expression/structure/ArrayExpr.js +26 -0
  77. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -0
  78. package/dist/cjs/gen/parser/IfcExpressionLexer.js +74 -72
  79. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  80. package/dist/cjs/gen/parser/IfcExpressionParser.js +148 -104
  81. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
  82. package/dist/cjs/value/ArrayValue.js +23 -0
  83. package/dist/cjs/value/ArrayValue.js.map +1 -0
  84. package/dist/cjs/value/BooleanValue.js +12 -3
  85. package/dist/cjs/value/BooleanValue.js.map +1 -1
  86. package/dist/cjs/value/LiteralValue.js.map +1 -1
  87. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
  88. package/dist/cjs/value/LogicalValue.js +14 -3
  89. package/dist/cjs/value/LogicalValue.js.map +1 -1
  90. package/dist/cjs/value/NumericValue.js +16 -7
  91. package/dist/cjs/value/NumericValue.js.map +1 -1
  92. package/dist/cjs/value/ReferenceValue.js +12 -3
  93. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  94. package/dist/cjs/value/StringValue.js +12 -3
  95. package/dist/cjs/value/StringValue.js.map +1 -1
  96. package/dist/cjs/value/Value.js +0 -10
  97. package/dist/cjs/value/Value.js.map +1 -1
  98. package/dist/context/ObjectAccessor.d.ts +1 -0
  99. package/dist/expression/Expr.d.ts +4 -1
  100. package/dist/expression/Expr0.d.ts +8 -4
  101. package/dist/expression/Expr1.d.ts +20 -5
  102. package/dist/expression/Expr2.d.ts +15 -6
  103. package/dist/expression/Expr2LeftBeforeRight.d.ts +14 -0
  104. package/dist/expression/ExprBase.d.ts +11 -0
  105. package/dist/expression/ExprEvalResult.d.ts +125 -0
  106. package/dist/expression/ExprKind.d.ts +19 -0
  107. package/dist/expression/LiteralExpr.d.ts +11 -0
  108. package/dist/expression/LocalContextKeys.d.ts +3 -0
  109. package/dist/expression/function/Func.d.ts +30 -0
  110. package/dist/expression/function/FuncArg.d.ts +18 -0
  111. package/dist/expression/function/FunctionExpr.d.ts +13 -0
  112. package/dist/expression/function/IfcExpressionFunctionConfigException.d.ts +3 -0
  113. package/dist/expression/function/IfcExpressionFunctions.d.ts +7 -0
  114. package/dist/expression/function/arg/FuncArgBase.d.ts +19 -0
  115. package/dist/expression/function/arg/FuncArgInt.d.ts +8 -0
  116. package/dist/expression/function/arg/FuncArgNumeric.d.ts +8 -0
  117. package/dist/expression/function/impl/MAP.d.ts +10 -0
  118. package/dist/expression/function/impl/ROUND.d.ts +9 -0
  119. package/dist/expression/numeric/DivideExpr.d.ts +4 -2
  120. package/dist/expression/numeric/MinusExpr.d.ts +3 -2
  121. package/dist/expression/numeric/MultiplyExpr.d.ts +3 -2
  122. package/dist/expression/numeric/NumParenthesisExpr.d.ts +2 -2
  123. package/dist/expression/numeric/NumericLiteralExpr.d.ts +4 -3
  124. package/dist/expression/numeric/PlusExpr.d.ts +2 -2
  125. package/dist/expression/reference/AttributeReferenceExpr.d.ts +9 -5
  126. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +1 -1
  127. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +5 -4
  128. package/dist/expression/reference/NestedObjectChainExpr.d.ts +9 -6
  129. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +1 -1
  130. package/dist/expression/string/StringConcatExpr.d.ts +2 -2
  131. package/dist/expression/string/StringLiteralExpr.d.ts +3 -3
  132. package/dist/expression/structure/ArrayExpr.d.ts +11 -0
  133. package/dist/gen/parser/IfcExpressionLexer.d.ts +10 -9
  134. package/dist/gen/parser/IfcExpressionParser.d.ts +10 -9
  135. package/dist/mjs/ExprVisitor.js +37 -3
  136. package/dist/mjs/ExprVisitor.js.map +1 -1
  137. package/dist/mjs/IfcExpression.js +3 -4
  138. package/dist/mjs/IfcExpression.js.map +1 -1
  139. package/dist/mjs/context/IfcElementAccessor.js +2 -2
  140. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  141. package/dist/mjs/context/ObjectAccessor.js +7 -1
  142. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  143. package/dist/mjs/expression/Expr.js.map +1 -1
  144. package/dist/mjs/expression/Expr0.js +18 -2
  145. package/dist/mjs/expression/Expr0.js.map +1 -1
  146. package/dist/mjs/expression/Expr1.js +46 -2
  147. package/dist/mjs/expression/Expr1.js.map +1 -1
  148. package/dist/mjs/expression/Expr2.js +48 -2
  149. package/dist/mjs/expression/Expr2.js.map +1 -1
  150. package/dist/mjs/expression/Expr2LeftBeforeRight.js +41 -0
  151. package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  152. package/dist/mjs/expression/ExprBase.js +16 -0
  153. package/dist/mjs/expression/ExprBase.js.map +1 -0
  154. package/dist/mjs/expression/ExprEvalResult.js +144 -0
  155. package/dist/mjs/expression/ExprEvalResult.js.map +1 -0
  156. package/dist/mjs/expression/ExprKind.js +21 -0
  157. package/dist/mjs/expression/ExprKind.js.map +1 -0
  158. package/dist/mjs/expression/LiteralExpr.js +21 -0
  159. package/dist/mjs/expression/LiteralExpr.js.map +1 -0
  160. package/dist/mjs/expression/LocalContextKeys.js +4 -0
  161. package/dist/mjs/expression/LocalContextKeys.js.map +1 -0
  162. package/dist/mjs/expression/function/Func.js +89 -0
  163. package/dist/mjs/expression/function/Func.js.map +1 -0
  164. package/dist/mjs/expression/function/FuncArg.js +29 -0
  165. package/dist/mjs/expression/function/FuncArg.js.map +1 -0
  166. package/dist/mjs/expression/function/FunctionExpr.js +29 -0
  167. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -0
  168. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js +6 -0
  169. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  170. package/dist/mjs/expression/function/IfcExpressionFunctions.js +22 -0
  171. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  172. package/dist/mjs/expression/function/arg/FuncArgBase.js +30 -0
  173. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -0
  174. package/dist/mjs/expression/function/arg/FuncArgInt.js +21 -0
  175. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -0
  176. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +18 -0
  177. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  178. package/dist/mjs/expression/function/impl/MAP.js +73 -0
  179. package/dist/mjs/expression/function/impl/MAP.js.map +1 -0
  180. package/dist/mjs/expression/function/impl/ROUND.js +25 -0
  181. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -0
  182. package/dist/mjs/expression/numeric/DivideExpr.js +8 -6
  183. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  184. package/dist/mjs/expression/numeric/MinusExpr.js +4 -6
  185. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  186. package/dist/mjs/expression/numeric/MultiplyExpr.js +4 -6
  187. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  188. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +4 -3
  189. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  190. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +5 -4
  191. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  192. package/dist/mjs/expression/numeric/PlusExpr.js +4 -6
  193. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  194. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +19 -5
  195. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  196. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +3 -2
  197. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  198. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  199. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  200. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +33 -8
  201. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  202. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +3 -2
  203. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  204. package/dist/mjs/expression/string/StringConcatExpr.js +4 -3
  205. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  206. package/dist/mjs/expression/string/StringLiteralExpr.js +5 -4
  207. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  208. package/dist/mjs/expression/structure/ArrayExpr.js +22 -0
  209. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -0
  210. package/dist/mjs/gen/parser/IfcExpressionLexer.js +74 -72
  211. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  212. package/dist/mjs/gen/parser/IfcExpressionParser.js +148 -104
  213. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
  214. package/dist/mjs/value/ArrayValue.js +19 -0
  215. package/dist/mjs/value/ArrayValue.js.map +1 -0
  216. package/dist/mjs/value/BooleanValue.js +12 -3
  217. package/dist/mjs/value/BooleanValue.js.map +1 -1
  218. package/dist/mjs/value/LiteralValue.js.map +1 -1
  219. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
  220. package/dist/mjs/value/LogicalValue.js +14 -3
  221. package/dist/mjs/value/LogicalValue.js.map +1 -1
  222. package/dist/mjs/value/NumericValue.js +16 -4
  223. package/dist/mjs/value/NumericValue.js.map +1 -1
  224. package/dist/mjs/value/ReferenceValue.js +12 -3
  225. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  226. package/dist/mjs/value/StringValue.js +12 -3
  227. package/dist/mjs/value/StringValue.js.map +1 -1
  228. package/dist/mjs/value/Value.js +1 -8
  229. package/dist/mjs/value/Value.js.map +1 -1
  230. package/dist/value/ArrayValue.d.ts +12 -0
  231. package/dist/value/BooleanValue.d.ts +8 -1
  232. package/dist/value/LiteralValue.d.ts +2 -1
  233. package/dist/value/LiteralValueAnyArity.d.ts +1 -1
  234. package/dist/value/LogicalValue.d.ts +8 -1
  235. package/dist/value/NumericValue.d.ts +11 -4
  236. package/dist/value/ReferenceValue.d.ts +8 -1
  237. package/dist/value/StringValue.d.ts +8 -1
  238. package/dist/value/Value.d.ts +2 -3
  239. package/package.json +1 -1
  240. package/dist/cjs/expression/ArrayExpr.js +0 -3
  241. package/dist/cjs/expression/ArrayExpr.js.map +0 -1
  242. package/dist/cjs/expression/numeric/MultiplyByExpr.js +0 -18
  243. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  244. package/dist/expression/ArrayExpr.d.ts +0 -3
  245. package/dist/expression/numeric/MultiplyByExpr.d.ts +0 -8
  246. package/dist/mjs/expression/ArrayExpr.js +0 -2
  247. package/dist/mjs/expression/ArrayExpr.js.map +0 -1
  248. package/dist/mjs/expression/numeric/MultiplyByExpr.js +0 -14
  249. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +0 -1
@@ -1,11 +1,23 @@
1
- import { Value } from "./Value.js";
2
- import Decimal from "decimal.js";
3
- export class NumericValue extends Value {
1
+ import { Decimal } from "decimal.js";
2
+ export class NumericValue {
4
3
  constructor(value) {
5
- super(value instanceof Decimal ? value : new Decimal(value));
4
+ if (Decimal.isDecimal(value)) {
5
+ this.numericValue = value;
6
+ }
7
+ this.numericValue = new Decimal(value);
6
8
  }
7
9
  static of(value) {
8
10
  return new NumericValue(value);
9
11
  }
12
+ getValue() {
13
+ return this.numericValue;
14
+ }
15
+ static isNumericValueType(arg) {
16
+ return Decimal.isDecimal(arg.numericValue);
17
+ }
18
+ equals(other) {
19
+ return (NumericValue.isNumericValueType(other) &&
20
+ this.numericValue.eq(other.numericValue));
21
+ }
10
22
  }
11
23
  //# sourceMappingURL=NumericValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["value/NumericValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,MAAM,OAAO,YAAa,SAAQ,KAAc;IAC9C,YAAY,KAAgC;QAC1C,KAAK,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAgC;QAC/C,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF","file":"value/NumericValue.js","sourcesContent":["import { Value } from \"./Value.js\";\nimport Decimal from \"decimal.js\";\n\nexport class NumericValue extends Value<Decimal> {\n constructor(value: string | number | Decimal) {\n super(value instanceof Decimal ? value : new Decimal(value));\n }\n\n public static of(value: string | number | Decimal): NumericValue {\n return new NumericValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["value/NumericValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,OAAO,YAAY;IAGvB,YAAY,KAAgC;QAC1C,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAgC;QAC/C,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAQ;QAChC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CACzC,CAAC;IACJ,CAAC;CACF","file":"value/NumericValue.js","sourcesContent":["import { Decimal } from \"decimal.js\";\nimport { Value } from \"./Value.js\";\n\nexport class NumericValue implements Value<Decimal> {\n private readonly numericValue: Decimal;\n\n constructor(value: Decimal | string | number) {\n if (Decimal.isDecimal(value)) {\n this.numericValue = value;\n }\n this.numericValue = new Decimal(value);\n }\n\n public static of(value: Decimal | string | number): NumericValue {\n return new NumericValue(value);\n }\n\n getValue(): Decimal {\n return this.numericValue;\n }\n\n static isNumericValueType(arg: any): arg is NumericValueType {\n return Decimal.isDecimal(arg.numericValue);\n }\n\n equals(other: Value<any>): boolean {\n return (\n NumericValue.isNumericValueType(other) &&\n this.numericValue.eq(other.numericValue)\n );\n }\n}\n\nexport type NumericValueType = {\n numericValue: Decimal;\n};\n"]}
@@ -1,10 +1,19 @@
1
- import { Value } from "./Value.js";
2
- export class ReferenceValue extends Value {
1
+ export class ReferenceValue {
3
2
  constructor(value) {
4
- super(value);
3
+ this.referenceValue = value;
5
4
  }
6
5
  static of(value) {
7
6
  return new ReferenceValue(value);
8
7
  }
8
+ getValue() {
9
+ return this.referenceValue;
10
+ }
11
+ equals(other) {
12
+ return (ReferenceValue.isReferenceValueType(other) &&
13
+ other.referenceValue === this.referenceValue);
14
+ }
15
+ static isReferenceValueType(arg) {
16
+ return typeof arg.referenceValue === "string";
17
+ }
9
18
  }
10
19
  //# sourceMappingURL=ReferenceValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["value/ReferenceValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,cAAe,SAAQ,KAAa;IAC/C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF","file":"value/ReferenceValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class ReferenceValue extends Value<string> {\n constructor(value: string) {\n super(value);\n }\n\n public static of(value: string): ReferenceValue {\n return new ReferenceValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["value/ReferenceValue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IAGzB,YAAY,KAAa;QACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,cAAc,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC1C,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,GAAQ;QAClC,OAAO,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC;IAChD,CAAC;CACF","file":"value/ReferenceValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class ReferenceValue implements Value<string> {\n private readonly referenceValue: string;\n\n constructor(value: string) {\n this.referenceValue = value;\n }\n\n public static of(value: string): ReferenceValue {\n return new ReferenceValue(value);\n }\n\n getValue(): string {\n return this.referenceValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n ReferenceValue.isReferenceValueType(other) &&\n other.referenceValue === this.referenceValue\n );\n }\n\n static isReferenceValueType(arg: any): arg is ReferenceValueType {\n return typeof arg.referenceValue === \"string\";\n }\n}\n\nexport type ReferenceValueType = {\n referenceValue: string;\n};\n"]}
@@ -1,10 +1,19 @@
1
- import { Value } from "./Value.js";
2
- export class StringValue extends Value {
1
+ export class StringValue {
3
2
  constructor(value) {
4
- super(value);
3
+ this.stringValue = value;
5
4
  }
6
5
  static of(value) {
7
6
  return new StringValue(value);
8
7
  }
8
+ getValue() {
9
+ return this.stringValue;
10
+ }
11
+ equals(other) {
12
+ return (StringValue.isStringValueType(other) &&
13
+ other.stringValue === this.stringValue);
14
+ }
15
+ static isStringValueType(arg) {
16
+ return typeof arg.stringValue === "string";
17
+ }
9
18
  }
10
19
  //# sourceMappingURL=StringValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["value/StringValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,WAAY,SAAQ,KAAa;IAC5C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF","file":"value/StringValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class StringValue extends Value<string> {\n constructor(value: string) {\n super(value);\n }\n\n public static of(value: string): StringValue {\n return new StringValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["value/StringValue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IAGtB,YAAY,KAAa;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACpC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CACvC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAQ;QAC/B,OAAO,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC;IAC7C,CAAC;CACF","file":"value/StringValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class StringValue implements Value<string> {\n private readonly stringValue: string;\n\n constructor(value: string) {\n this.stringValue = value;\n }\n\n public static of(value: string): StringValue {\n return new StringValue(value);\n }\n\n getValue(): string {\n return this.stringValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n StringValue.isStringValueType(other) &&\n other.stringValue === this.stringValue\n );\n }\n\n static isStringValueType(arg: any): arg is StringValueType {\n return typeof arg.stringValue === \"string\";\n }\n}\n\nexport type StringValueType = {\n stringValue: string;\n};\n"]}
@@ -1,9 +1,2 @@
1
- export class Value {
2
- constructor(value) {
3
- this.value = value;
4
- }
5
- getValue() {
6
- return this.value;
7
- }
8
- }
1
+ export {};
9
2
  //# sourceMappingURL=Value.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["value/Value.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,KAAK;IAGhB,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","file":"value/Value.js","sourcesContent":["import { PrimitiveValueType } from \"./PrimitiveValueType.js\";\n\nexport class Value<T extends PrimitiveValueType> {\n private readonly value: T;\n\n constructor(value: T) {\n this.value = value;\n }\n\n public getValue(): T {\n return this.value;\n }\n}\n"]}
1
+ {"version":3,"sources":["value/Value.ts"],"names":[],"mappings":"","file":"value/Value.js","sourcesContent":["import { PrimitiveValueType } from \"./PrimitiveValueType.js\";\n\nexport interface Value<\n T extends\n | PrimitiveValueType\n | Array<Value<PrimitiveValueType | Array<Value<PrimitiveValueType>>>>\n> {\n getValue(): T;\n equals(other: Value<any>): boolean;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { Value } from "./Value";
2
+ export declare class ArrayValue implements Value<Array<Value<any>>> {
3
+ private readonly arrayValue;
4
+ constructor(value: Array<Value<any>>);
5
+ static of(value: Array<Value<any>>): ArrayValue;
6
+ getValue(): Array<Value<any>>;
7
+ equals(other: Value<any>): boolean;
8
+ static isArrayValueType(arg: any): arg is ArrayValueType;
9
+ }
10
+ export type ArrayValueType = {
11
+ arrayValue: Array<Value<any>>;
12
+ };
@@ -1,5 +1,12 @@
1
1
  import { Value } from "./Value.js";
2
- export declare class BooleanValue extends Value<boolean> {
2
+ export declare class BooleanValue implements Value<boolean> {
3
+ private readonly booleanValue;
3
4
  constructor(value: boolean);
4
5
  static of(value: boolean): BooleanValue;
6
+ getValue(): boolean;
7
+ equals(other: Value<any>): boolean;
8
+ static isBooleanValueType(arg: any): arg is BooleanValueType;
5
9
  }
10
+ export type BooleanValueType = {
11
+ booleanValue: boolean;
12
+ };
@@ -3,4 +3,5 @@ import { StringValue } from "./StringValue.js";
3
3
  import { BooleanValue } from "./BooleanValue.js";
4
4
  import { LogicalValue } from "./LogicalValue.js";
5
5
  import { ReferenceValue } from "./ReferenceValue.js";
6
- export type LiteralValue = NumericValue | StringValue | BooleanValue | LogicalValue | ReferenceValue;
6
+ import { ArrayValue } from "./ArrayValue";
7
+ export type LiteralValue = NumericValue | StringValue | BooleanValue | LogicalValue | ReferenceValue | ArrayValue;
@@ -1,2 +1,2 @@
1
1
  import { LiteralValue } from "./LiteralValue.js";
2
- export type LiteralValueAnyArity = LiteralValue | Array<LiteralValue> | Array<Array<LiteralValue>>;
2
+ export type LiteralValueAnyArity = LiteralValue;
@@ -1,5 +1,12 @@
1
1
  import { Value } from "./Value.js";
2
- export declare class LogicalValue extends Value<boolean | "UNKNOWN"> {
2
+ export declare class LogicalValue implements Value<boolean | "UNKNOWN"> {
3
+ private readonly logicalValue;
3
4
  constructor(value: boolean | "UNKNOWN");
4
5
  static of(value: boolean | "UNKNOWN"): LogicalValue;
6
+ getValue(): boolean | "UNKNOWN";
7
+ equals(other: Value<any>): boolean;
8
+ static isLogicalValueType(arg: any): arg is LogicalValueType;
5
9
  }
10
+ export type LogicalValueType = {
11
+ logicalValue: boolean | "UNKNOWN";
12
+ };
@@ -1,6 +1,13 @@
1
+ import { Decimal } from "decimal.js";
1
2
  import { Value } from "./Value.js";
2
- import Decimal from "decimal.js";
3
- export declare class NumericValue extends Value<Decimal> {
4
- constructor(value: string | number | Decimal);
5
- static of(value: string | number | Decimal): NumericValue;
3
+ export declare class NumericValue implements Value<Decimal> {
4
+ private readonly numericValue;
5
+ constructor(value: Decimal | string | number);
6
+ static of(value: Decimal | string | number): NumericValue;
7
+ getValue(): Decimal;
8
+ static isNumericValueType(arg: any): arg is NumericValueType;
9
+ equals(other: Value<any>): boolean;
6
10
  }
11
+ export type NumericValueType = {
12
+ numericValue: Decimal;
13
+ };
@@ -1,5 +1,12 @@
1
1
  import { Value } from "./Value.js";
2
- export declare class ReferenceValue extends Value<string> {
2
+ export declare class ReferenceValue implements Value<string> {
3
+ private readonly referenceValue;
3
4
  constructor(value: string);
4
5
  static of(value: string): ReferenceValue;
6
+ getValue(): string;
7
+ equals(other: Value<any>): boolean;
8
+ static isReferenceValueType(arg: any): arg is ReferenceValueType;
5
9
  }
10
+ export type ReferenceValueType = {
11
+ referenceValue: string;
12
+ };
@@ -1,5 +1,12 @@
1
1
  import { Value } from "./Value.js";
2
- export declare class StringValue extends Value<string> {
2
+ export declare class StringValue implements Value<string> {
3
+ private readonly stringValue;
3
4
  constructor(value: string);
4
5
  static of(value: string): StringValue;
6
+ getValue(): string;
7
+ equals(other: Value<any>): boolean;
8
+ static isStringValueType(arg: any): arg is StringValueType;
5
9
  }
10
+ export type StringValueType = {
11
+ stringValue: string;
12
+ };
@@ -1,6 +1,5 @@
1
1
  import { PrimitiveValueType } from "./PrimitiveValueType.js";
2
- export declare class Value<T extends PrimitiveValueType> {
3
- private readonly value;
4
- constructor(value: T);
2
+ export interface Value<T extends PrimitiveValueType | Array<Value<PrimitiveValueType | Array<Value<PrimitiveValueType>>>>> {
5
3
  getValue(): T;
4
+ equals(other: Value<any>): boolean;
6
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ifc-expressions",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Parsing and evaluation of IFC expressions",
5
5
  "main": "dist/cjs/ifcExpression.js",
6
6
  "module": "dist/mjs/ifcExpression.js",
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ArrayExpr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/expression/ArrayExpr.ts"],"names":[],"mappings":"","file":"expression/ArrayExpr.js","sourcesContent":["export interface ArrayExpr<T> {\n evaluate(): Array<T>;\n}\n"]}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlusExpr = void 0;
4
- const Expr2_js_1 = require("../Expr2.js");
5
- const NumericValue_js_1 = require("../../value/NumericValue.js");
6
- class PlusExpr extends Expr2_js_1.Expr2 {
7
- constructor(left, right) {
8
- super(left, right);
9
- }
10
- evaluate(ctx) {
11
- return NumericValue_js_1.NumericValue.of(this.left
12
- .evaluate(ctx)
13
- .getValue()
14
- .mul(this.right.evaluate(ctx).getValue()));
15
- }
16
- }
17
- exports.PlusExpr = PlusExpr;
18
- //# sourceMappingURL=MultiplyByExpr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/expression/numeric/MultiplyByExpr.ts"],"names":[],"mappings":";;;AAAA,0CAAoC;AAGpC,iEAA2D;AAE3D,MAAa,QAAS,SAAQ,gBAI7B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,8BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF;AAjBD,4BAiBC","file":"expression/numeric/MultiplyByExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class PlusExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .mul(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- export interface ArrayExpr<T> {
2
- evaluate(): Array<T>;
3
- }
@@ -1,8 +0,0 @@
1
- import { Expr2 } from "../Expr2.js";
2
- import { Expr } from "../Expr.js";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
- import { NumericValue } from "../../value/NumericValue.js";
5
- export declare class PlusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
6
- constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
7
- evaluate(ctx: IfcExpressionContext): NumericValue;
8
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ArrayExpr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["expression/ArrayExpr.ts"],"names":[],"mappings":"","file":"expression/ArrayExpr.js","sourcesContent":["export interface ArrayExpr<T> {\n evaluate(): Array<T>;\n}\n"]}
@@ -1,14 +0,0 @@
1
- import { Expr2 } from "../Expr2.js";
2
- import { NumericValue } from "../../value/NumericValue.js";
3
- export class PlusExpr extends Expr2 {
4
- constructor(left, right) {
5
- super(left, right);
6
- }
7
- evaluate(ctx) {
8
- return NumericValue.of(this.left
9
- .evaluate(ctx)
10
- .getValue()
11
- .mul(this.right.evaluate(ctx).getValue()));
12
- }
13
- }
14
- //# sourceMappingURL=MultiplyByExpr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["expression/numeric/MultiplyByExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,OAAO,QAAS,SAAQ,KAI7B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,YAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF","file":"expression/numeric/MultiplyByExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\n\nexport class PlusExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .mul(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}