ifc-expressions 2.1.1 → 2.2.0-beta.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 (205) hide show
  1. package/README.md +9 -1
  2. package/dist/cjs/E.js.map +1 -1
  3. package/dist/cjs/IfcExpression.js.map +1 -1
  4. package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
  5. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  6. package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
  7. package/dist/cjs/error/SpuriousFunctionArgumentException.js.map +1 -1
  8. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
  9. package/dist/cjs/error/value/DateFormatException.js +10 -0
  10. package/dist/cjs/error/value/DateFormatException.js.map +1 -0
  11. package/dist/cjs/expression/boolean/AndExpr.js.map +1 -1
  12. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
  13. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
  14. package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
  15. package/dist/cjs/expression/boolean/OrExpr.js.map +1 -1
  16. package/dist/cjs/expression/boolean/XorExpr.js.map +1 -1
  17. package/dist/cjs/expression/function/Func.js +2 -0
  18. package/dist/cjs/expression/function/Func.js.map +1 -1
  19. package/dist/cjs/expression/function/IfcExpressionFunctions.js +12 -0
  20. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  21. package/dist/cjs/expression/function/arg/FuncArgArray.js.map +1 -1
  22. package/dist/cjs/expression/function/arg/FuncArgBase.js +9 -2
  23. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
  24. package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js +34 -0
  25. package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
  26. package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js +27 -0
  27. package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
  28. package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js +35 -0
  29. package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
  30. package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js +27 -0
  31. package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
  32. package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js +30 -0
  33. package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
  34. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js +27 -0
  35. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
  36. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +28 -0
  37. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
  38. package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js +34 -0
  39. package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
  40. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
  41. package/dist/cjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
  42. package/dist/cjs/expression/function/arg/FuncArgUnion.js +32 -0
  43. package/dist/cjs/expression/function/arg/FuncArgUnion.js.map +1 -0
  44. package/dist/cjs/expression/function/impl/ADDDURATION.js +53 -0
  45. package/dist/cjs/expression/function/impl/ADDDURATION.js.map +1 -0
  46. package/dist/cjs/expression/function/impl/AT.js.map +1 -1
  47. package/dist/cjs/expression/function/impl/ApplyRegex.js.map +1 -1
  48. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  49. package/dist/cjs/expression/function/impl/IF.js.map +1 -1
  50. package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
  51. package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -1
  52. package/dist/cjs/expression/function/impl/SPLIT.js.map +1 -1
  53. package/dist/cjs/expression/function/impl/SUBSTRING.js.map +1 -1
  54. package/dist/cjs/expression/function/impl/TOBOOLEAN.js +0 -1
  55. package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  56. package/dist/cjs/expression/function/impl/TOIFCDATE.js +33 -0
  57. package/dist/cjs/expression/function/impl/TOIFCDATE.js.map +1 -0
  58. package/dist/cjs/expression/function/impl/TOIFCDATETIME.js +36 -0
  59. package/dist/cjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
  60. package/dist/cjs/expression/function/impl/TOIFCDURATION.js +21 -0
  61. package/dist/cjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
  62. package/dist/cjs/expression/function/impl/TOIFCTIME.js +33 -0
  63. package/dist/cjs/expression/function/impl/TOIFCTIME.js.map +1 -0
  64. package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js +36 -0
  65. package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
  66. package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -1
  67. package/dist/cjs/expression/function/impl/TONUMERIC.js +0 -1
  68. package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
  69. package/dist/cjs/type/Types.js +35 -0
  70. package/dist/cjs/type/Types.js.map +1 -1
  71. package/dist/cjs/util/TextSpan.js +0 -1
  72. package/dist/cjs/util/TextSpan.js.map +1 -1
  73. package/dist/cjs/value/BooleanValue.js.map +1 -1
  74. package/dist/cjs/value/ExpressionValue.js.map +1 -1
  75. package/dist/cjs/value/IfcDateTimeValue.js +194 -0
  76. package/dist/cjs/value/IfcDateTimeValue.js.map +1 -0
  77. package/dist/cjs/value/IfcDateValue.js +68 -0
  78. package/dist/cjs/value/IfcDateValue.js.map +1 -0
  79. package/dist/cjs/value/IfcDurationValue.js +149 -0
  80. package/dist/cjs/value/IfcDurationValue.js.map +1 -0
  81. package/dist/cjs/value/IfcTimeStampValue.js +62 -0
  82. package/dist/cjs/value/IfcTimeStampValue.js.map +1 -0
  83. package/dist/cjs/value/IfcTimeValue.js +93 -0
  84. package/dist/cjs/value/IfcTimeValue.js.map +1 -0
  85. package/dist/cjs/value/LogicalValue.js.map +1 -1
  86. package/dist/cjs/value/NonBoxedValueTypes.js +3 -0
  87. package/dist/cjs/value/NonBoxedValueTypes.js.map +1 -0
  88. package/dist/cjs/value/Value.js.map +1 -1
  89. package/dist/error/value/DateFormatException.d.ts +3 -0
  90. package/dist/expression/function/Func.d.ts +3 -0
  91. package/dist/expression/function/arg/FuncArgBase.d.ts +1 -0
  92. package/dist/expression/function/arg/FuncArgIfcDateString.d.ts +11 -0
  93. package/dist/expression/function/arg/FuncArgIfcDateTime.d.ts +11 -0
  94. package/dist/expression/function/arg/FuncArgIfcDateTimeString.d.ts +11 -0
  95. package/dist/expression/function/arg/FuncArgIfcDuration.d.ts +11 -0
  96. package/dist/expression/function/arg/FuncArgIfcDurationString.d.ts +11 -0
  97. package/dist/expression/function/arg/FuncArgIfcTimeStamp.d.ts +11 -0
  98. package/dist/expression/function/arg/FuncArgIfcTimeStampNumeric.d.ts +11 -0
  99. package/dist/expression/function/arg/FuncArgIfcTimeString.d.ts +11 -0
  100. package/dist/expression/function/arg/FuncArgUnion.d.ts +14 -0
  101. package/dist/expression/function/impl/ADDDURATION.d.ts +10 -0
  102. package/dist/expression/function/impl/TOBOOLEAN.d.ts +0 -1
  103. package/dist/expression/function/impl/TOIFCDATE.d.ts +10 -0
  104. package/dist/expression/function/impl/TOIFCDATETIME.d.ts +10 -0
  105. package/dist/expression/function/impl/TOIFCDURATION.d.ts +10 -0
  106. package/dist/expression/function/impl/TOIFCTIME.d.ts +10 -0
  107. package/dist/expression/function/impl/TOIFCTIMESTAMP.d.ts +10 -0
  108. package/dist/expression/function/impl/TONUMERIC.d.ts +0 -1
  109. package/dist/mjs/E.js.map +1 -1
  110. package/dist/mjs/IfcExpression.js.map +1 -1
  111. package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
  112. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  113. package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
  114. package/dist/mjs/error/SpuriousFunctionArgumentException.js.map +1 -1
  115. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
  116. package/dist/mjs/error/value/DateFormatException.js +6 -0
  117. package/dist/mjs/error/value/DateFormatException.js.map +1 -0
  118. package/dist/mjs/expression/boolean/AndExpr.js.map +1 -1
  119. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
  120. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
  121. package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
  122. package/dist/mjs/expression/boolean/OrExpr.js.map +1 -1
  123. package/dist/mjs/expression/boolean/XorExpr.js.map +1 -1
  124. package/dist/mjs/expression/function/Func.js +2 -0
  125. package/dist/mjs/expression/function/Func.js.map +1 -1
  126. package/dist/mjs/expression/function/IfcExpressionFunctions.js +12 -0
  127. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  128. package/dist/mjs/expression/function/arg/FuncArgArray.js.map +1 -1
  129. package/dist/mjs/expression/function/arg/FuncArgBase.js +10 -3
  130. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
  131. package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js +30 -0
  132. package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
  133. package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js +23 -0
  134. package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
  135. package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js +31 -0
  136. package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
  137. package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js +23 -0
  138. package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
  139. package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js +26 -0
  140. package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
  141. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js +23 -0
  142. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
  143. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +24 -0
  144. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
  145. package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js +30 -0
  146. package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
  147. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
  148. package/dist/mjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
  149. package/dist/mjs/expression/function/arg/FuncArgUnion.js +28 -0
  150. package/dist/mjs/expression/function/arg/FuncArgUnion.js.map +1 -0
  151. package/dist/mjs/expression/function/impl/ADDDURATION.js +49 -0
  152. package/dist/mjs/expression/function/impl/ADDDURATION.js.map +1 -0
  153. package/dist/mjs/expression/function/impl/AT.js.map +1 -1
  154. package/dist/mjs/expression/function/impl/ApplyRegex.js.map +1 -1
  155. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  156. package/dist/mjs/expression/function/impl/IF.js.map +1 -1
  157. package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
  158. package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -1
  159. package/dist/mjs/expression/function/impl/SPLIT.js.map +1 -1
  160. package/dist/mjs/expression/function/impl/SUBSTRING.js.map +1 -1
  161. package/dist/mjs/expression/function/impl/TOBOOLEAN.js +0 -1
  162. package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  163. package/dist/mjs/expression/function/impl/TOIFCDATE.js +29 -0
  164. package/dist/mjs/expression/function/impl/TOIFCDATE.js.map +1 -0
  165. package/dist/mjs/expression/function/impl/TOIFCDATETIME.js +32 -0
  166. package/dist/mjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
  167. package/dist/mjs/expression/function/impl/TOIFCDURATION.js +17 -0
  168. package/dist/mjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
  169. package/dist/mjs/expression/function/impl/TOIFCTIME.js +29 -0
  170. package/dist/mjs/expression/function/impl/TOIFCTIME.js.map +1 -0
  171. package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js +32 -0
  172. package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
  173. package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -1
  174. package/dist/mjs/expression/function/impl/TONUMERIC.js +0 -1
  175. package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
  176. package/dist/mjs/type/Types.js +35 -0
  177. package/dist/mjs/type/Types.js.map +1 -1
  178. package/dist/mjs/util/TextSpan.js +0 -1
  179. package/dist/mjs/util/TextSpan.js.map +1 -1
  180. package/dist/mjs/value/BooleanValue.js.map +1 -1
  181. package/dist/mjs/value/ExpressionValue.js.map +1 -1
  182. package/dist/mjs/value/IfcDateTimeValue.js +186 -0
  183. package/dist/mjs/value/IfcDateTimeValue.js.map +1 -0
  184. package/dist/mjs/value/IfcDateValue.js +64 -0
  185. package/dist/mjs/value/IfcDateValue.js.map +1 -0
  186. package/dist/mjs/value/IfcDurationValue.js +142 -0
  187. package/dist/mjs/value/IfcDurationValue.js.map +1 -0
  188. package/dist/mjs/value/IfcTimeStampValue.js +58 -0
  189. package/dist/mjs/value/IfcTimeStampValue.js.map +1 -0
  190. package/dist/mjs/value/IfcTimeValue.js +86 -0
  191. package/dist/mjs/value/IfcTimeValue.js.map +1 -0
  192. package/dist/mjs/value/LogicalValue.js.map +1 -1
  193. package/dist/mjs/value/NonBoxedValueTypes.js +2 -0
  194. package/dist/mjs/value/NonBoxedValueTypes.js.map +1 -0
  195. package/dist/mjs/value/Value.js.map +1 -1
  196. package/dist/type/Types.d.ts +15 -0
  197. package/dist/value/ExpressionValue.d.ts +6 -1
  198. package/dist/value/IfcDateTimeValue.d.ts +44 -0
  199. package/dist/value/IfcDateValue.d.ts +24 -0
  200. package/dist/value/IfcDurationValue.d.ts +53 -0
  201. package/dist/value/IfcTimeStampValue.d.ts +18 -0
  202. package/dist/value/IfcTimeValue.d.ts +27 -0
  203. package/dist/value/NonBoxedValueTypes.d.ts +6 -0
  204. package/dist/value/Value.d.ts +2 -1
  205. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/impl/TOIFCDATE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC;QACE,KAAK,CAAC,WAAW,EAAE;YACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAClE;aAAM,IAAI,KAAK,YAAY,gBAAgB,EAAE;YAC5C,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;SACvD;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF","file":"expression/function/impl/TOIFCDATE.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgIfcDateString } from \"../arg/FuncArgIfcDateString.js\";\nimport { IfcDateValue } from \"../../../value/IfcDateValue.js\";\nimport { IfcDateTimeValue } from \"../../../value/IfcDateTimeValue.js\";\nimport { FuncArgUnion } from \"../arg/FuncArgUnion.js\";\nimport { FuncArgIfcDateTime } from \"../arg/FuncArgIfcDateTime.js\";\n\nexport class TOIFCDATE extends Func {\n constructor() {\n super(\"TOIFCDATE\", [\n FuncArgUnion.of(true, \"date\", [FuncArgIfcDateTime, FuncArgIfcDateString]),\n ]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const input = evaluatedArguments.get(\"date\");\n if (input instanceof StringValue) {\n return new ExprEvalSuccessObj(IfcDateValue.of(input.getValue()));\n } else if (input instanceof IfcDateTimeValue) {\n return new ExprEvalSuccessObj(input.toIfcDateValue());\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_DATE;\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import { Func } from "../Func.js";
2
+ import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
3
+ import { StringValue } from "../../../value/StringValue.js";
4
+ import { Type } from "../../../type/Types.js";
5
+ import { IfcDateTimeValue } from "../../../value/IfcDateTimeValue.js";
6
+ import { FuncArgIfcDateTimeString } from "../arg/FuncArgIfcDateTimeString.js";
7
+ import { IfcTimeStampValue } from "../../../value/IfcTimeStampValue.js";
8
+ import { FuncArgUnion } from "../arg/FuncArgUnion.js";
9
+ import { FuncArgIfcTimeStamp } from "../arg/FuncArgIfcTimeStamp.js";
10
+ export class TOIFCDATETIME extends Func {
11
+ constructor() {
12
+ super("TOIFCDATETIME", [
13
+ FuncArgUnion.of(true, "pointInTime", [
14
+ FuncArgIfcDateTimeString,
15
+ FuncArgIfcTimeStamp,
16
+ ]),
17
+ ]);
18
+ }
19
+ calculateResult(callingExpr, evaluatedArguments) {
20
+ const value = evaluatedArguments.get("pointInTime");
21
+ if (value instanceof StringValue) {
22
+ return new ExprEvalSuccessObj(IfcDateTimeValue.of(value.getValue()));
23
+ }
24
+ else if (value instanceof IfcTimeStampValue) {
25
+ return new ExprEvalSuccessObj(value.toIfcDateTimeValue());
26
+ }
27
+ }
28
+ getReturnType(argumentTypes) {
29
+ return Type.IFC_DATE_TIME;
30
+ }
31
+ }
32
+ //# sourceMappingURL=TOIFCDATETIME.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/impl/TOIFCDATETIME.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,OAAO,aAAc,SAAQ,IAAI;IACrC;QACE,KAAK,CAAC,eAAe,EAAE;YACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE;gBACnC,wBAAwB;gBACxB,mBAAmB;aACpB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,OAAO,IAAI,kBAAkB,CAC3B,gBAAgB,CAAC,EAAE,CAAE,KAAqB,CAAC,QAAQ,EAAE,CAAC,CACvD,CAAC;SACH;aAAM,IAAI,KAAK,YAAY,iBAAiB,EAAE;YAC7C,OAAO,IAAI,kBAAkB,CAC1B,KAA2B,CAAC,kBAAkB,EAAE,CAClD,CAAC;SACH;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF","file":"expression/function/impl/TOIFCDATETIME.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { IfcDateTimeValue } from \"../../../value/IfcDateTimeValue.js\";\nimport { FuncArgIfcDateTimeString } from \"../arg/FuncArgIfcDateTimeString.js\";\nimport { IfcTimeStampValue } from \"../../../value/IfcTimeStampValue.js\";\nimport { FuncArgUnion } from \"../arg/FuncArgUnion.js\";\nimport { FuncArgIfcTimeStamp } from \"../arg/FuncArgIfcTimeStamp.js\";\n\nexport class TOIFCDATETIME extends Func {\n constructor() {\n super(\"TOIFCDATETIME\", [\n FuncArgUnion.of(true, \"pointInTime\", [\n FuncArgIfcDateTimeString,\n FuncArgIfcTimeStamp,\n ]),\n ]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const value = evaluatedArguments.get(\"pointInTime\");\n if (value instanceof StringValue) {\n return new ExprEvalSuccessObj(\n IfcDateTimeValue.of((value as StringValue).getValue())\n );\n } else if (value instanceof IfcTimeStampValue) {\n return new ExprEvalSuccessObj(\n (value as IfcTimeStampValue).toIfcDateTimeValue()\n );\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_DATE_TIME;\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { Func } from "../Func.js";
2
+ import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
3
+ import { Type } from "../../../type/Types.js";
4
+ import { FuncArgIfcDurationString } from "../arg/FuncArgIfcDurationString.js";
5
+ import { IfcDurationValue } from "../../../value/IfcDurationValue.js";
6
+ export class TOIFCDURATION extends Func {
7
+ constructor() {
8
+ super("TOIFCDURATION", [new FuncArgIfcDurationString(true, "duration")]);
9
+ }
10
+ calculateResult(callingExpr, evaluatedArguments) {
11
+ return new ExprEvalSuccessObj(IfcDurationValue.of(evaluatedArguments.get("duration").getValue()));
12
+ }
13
+ getReturnType(argumentTypes) {
14
+ return Type.IFC_DURATION;
15
+ }
16
+ }
17
+ //# sourceMappingURL=TOIFCDURATION.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/impl/TOIFCDURATION.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,MAAM,OAAO,aAAc,SAAQ,IAAI;IACrC;QACE,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,OAAO,IAAI,kBAAkB,CAC3B,gBAAgB,CAAC,EAAE,CAChB,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAiB,CAAC,QAAQ,EAAE,CAC/D,CACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF","file":"expression/function/impl/TOIFCDURATION.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgIfcDurationString } from \"../arg/FuncArgIfcDurationString.js\";\nimport { IfcDurationValue } from \"../../../value/IfcDurationValue.js\";\n\nexport class TOIFCDURATION extends Func {\n constructor() {\n super(\"TOIFCDURATION\", [new FuncArgIfcDurationString(true, \"duration\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return new ExprEvalSuccessObj(\n IfcDurationValue.of(\n (evaluatedArguments.get(\"duration\") as StringValue).getValue()\n )\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_DURATION;\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import { Func } from "../Func.js";
2
+ import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
3
+ import { StringValue } from "../../../value/StringValue.js";
4
+ import { Type } from "../../../type/Types.js";
5
+ import { IfcDateTimeValue } from "../../../value/IfcDateTimeValue.js";
6
+ import { FuncArgIfcTimeString } from "../arg/FuncArgIfcTimeString.js";
7
+ import { IfcTimeValue } from "../../../value/IfcTimeValue.js";
8
+ import { FuncArgUnion } from "../arg/FuncArgUnion.js";
9
+ import { FuncArgIfcDateTime } from "../arg/FuncArgIfcDateTime.js";
10
+ export class TOIFCTIME extends Func {
11
+ constructor() {
12
+ super("TOIFCTIME", [
13
+ FuncArgUnion.of(true, "time", [FuncArgIfcTimeString, FuncArgIfcDateTime]),
14
+ ]);
15
+ }
16
+ calculateResult(callingExpr, evaluatedArguments) {
17
+ const input = evaluatedArguments.get("time");
18
+ if (input instanceof StringValue) {
19
+ return new ExprEvalSuccessObj(IfcTimeValue.of(input.getValue()));
20
+ }
21
+ else if (input instanceof IfcDateTimeValue) {
22
+ return new ExprEvalSuccessObj(input.toIfcTimeValue());
23
+ }
24
+ }
25
+ getReturnType(argumentTypes) {
26
+ return Type.IFC_TIME;
27
+ }
28
+ }
29
+ //# sourceMappingURL=TOIFCTIME.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/impl/TOIFCTIME.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC;QACE,KAAK,CAAC,WAAW,EAAE;YACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAClE;aAAM,IAAI,KAAK,YAAY,gBAAgB,EAAE;YAC5C,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;SACvD;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF","file":"expression/function/impl/TOIFCTIME.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { IfcDateTimeValue } from \"../../../value/IfcDateTimeValue.js\";\nimport { FuncArgIfcTimeString } from \"../arg/FuncArgIfcTimeString.js\";\nimport { IfcTimeValue } from \"../../../value/IfcTimeValue.js\";\nimport { FuncArgUnion } from \"../arg/FuncArgUnion.js\";\nimport { FuncArgIfcDateTime } from \"../arg/FuncArgIfcDateTime.js\";\n\nexport class TOIFCTIME extends Func {\n constructor() {\n super(\"TOIFCTIME\", [\n FuncArgUnion.of(true, \"time\", [FuncArgIfcTimeString, FuncArgIfcDateTime]),\n ]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const input = evaluatedArguments.get(\"time\");\n if (input instanceof StringValue) {\n return new ExprEvalSuccessObj(IfcTimeValue.of(input.getValue()));\n } else if (input instanceof IfcDateTimeValue) {\n return new ExprEvalSuccessObj(input.toIfcTimeValue());\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_TIME;\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import { Func } from "../Func.js";
2
+ import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
3
+ import { Type } from "../../../type/Types.js";
4
+ import { FuncArgIfcTimeStampNumeric } from "../arg/FuncArgIfcTimeStampNumeric.js";
5
+ import { IfcTimeStampValue } from "../../../value/IfcTimeStampValue.js";
6
+ import { NumericValue } from "../../../IfcExpression.js";
7
+ import { IfcDateTimeValue } from "../../../value/IfcDateTimeValue.js";
8
+ import { FuncArgUnion } from "../arg/FuncArgUnion.js";
9
+ import { FuncArgIfcDateTime } from "../arg/FuncArgIfcDateTime.js";
10
+ export class TOIFCTIMESTAMP extends Func {
11
+ constructor() {
12
+ super("TOIFCTIMESTAMP", [
13
+ FuncArgUnion.of(true, "timeStamp", [
14
+ FuncArgIfcTimeStampNumeric,
15
+ FuncArgIfcDateTime,
16
+ ]),
17
+ ]);
18
+ }
19
+ calculateResult(callingExpr, evaluatedArguments) {
20
+ const input = evaluatedArguments.get("timeStamp");
21
+ if (input instanceof NumericValue) {
22
+ return new ExprEvalSuccessObj(IfcTimeStampValue.of(input.getValue()));
23
+ }
24
+ else if (input instanceof IfcDateTimeValue) {
25
+ return new ExprEvalSuccessObj(input.toIfcTimeStampValue());
26
+ }
27
+ }
28
+ getReturnType(argumentTypes) {
29
+ return Type.IFC_TIME_STAMP;
30
+ }
31
+ }
32
+ //# sourceMappingURL=TOIFCTIMESTAMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/impl/TOIFCTIMESTAMP.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,OAAO,cAAe,SAAQ,IAAI;IACtC;QACE,KAAK,CAAC,gBAAgB,EAAE;YACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE;gBACjC,0BAA0B;gBAC1B,kBAAkB;aACnB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACvE;aAAM,IAAI,KAAK,YAAY,gBAAgB,EAAE;YAC5C,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF","file":"expression/function/impl/TOIFCTIMESTAMP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgIfcTimeStampNumeric } from \"../arg/FuncArgIfcTimeStampNumeric.js\";\nimport { IfcTimeStampValue } from \"../../../value/IfcTimeStampValue.js\";\nimport { NumericValue } from \"../../../IfcExpression.js\";\nimport { IfcDateTimeValue } from \"../../../value/IfcDateTimeValue.js\";\nimport { FuncArgUnion } from \"../arg/FuncArgUnion.js\";\nimport { FuncArgIfcDateTime } from \"../arg/FuncArgIfcDateTime.js\";\n\nexport class TOIFCTIMESTAMP extends Func {\n constructor() {\n super(\"TOIFCTIMESTAMP\", [\n FuncArgUnion.of(true, \"timeStamp\", [\n FuncArgIfcTimeStampNumeric,\n FuncArgIfcDateTime,\n ]),\n ]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const input = evaluatedArguments.get(\"timeStamp\");\n if (input instanceof NumericValue) {\n return new ExprEvalSuccessObj(IfcTimeStampValue.of(input.getValue()));\n } else if (input instanceof IfcDateTimeValue) {\n return new ExprEvalSuccessObj(input.toIfcTimeStampValue());\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.IFC_TIME_STAMP;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/impl/TOLOGICAL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,OAAO,SAAU,SAAQ,IAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAES,kBAAkB,CAC1B,WAAsB,EACtB,kBAAgE;QAEhE,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,CAAC,sBAAsB,EAAE;gBACxD,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAC/C,CAAC;aACH;SACF;aAAM;YACL,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,kBAAkB,CACpB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAa,CAAC,CAClD,CACF,CAAC;SACH;IACH,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI;YACF,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,kCAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,cAAc,CAAC,KAAK,EACpB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AA/CuB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TOLOGICAL.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../../ExprEvalResult.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean\";\nimport { Expr } from \"../../Expr\";\n\nexport class TOLOGICAL extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOLOGICAL\", [new FuncArgBoolean(true, \"object\")]);\n }\n\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ) {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n if (isExprEvalError(val)) {\n if (val.status === ExprEvalStatus.IFC_PROPERTY_NOT_FOUND) {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(LogicalValue.unknown())\n );\n }\n } else {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(\n LogicalValue.of(val.result.getValue() as boolean)\n )\n );\n }\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n try {\n return new ExprEvalSuccessObj(val);\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/impl/TOLOGICAL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,OAAO,SAAU,SAAQ,IAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAES,kBAAkB,CAC1B,WAAsB,EACtB,kBAAgE;QAEhE,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,CAAC,sBAAsB,EAAE;gBACxD,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAC/C,CAAC;aACH;SACF;aAAM;YACL,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,kBAAkB,CACpB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAa,CAAC,CAClD,CACF,CAAC;SACH;IACH,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI;YACF,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,kCAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,cAAc,CAAC,KAAK,EACpB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AA/CuB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TOLOGICAL.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../../ExprEvalResult.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { LogicalValue } from \"../../../value/LogicalValue.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { Expr } from \"../../Expr.js\";\n\nexport class TOLOGICAL extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOLOGICAL\", [new FuncArgBoolean(true, \"object\")]);\n }\n\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ) {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n if (isExprEvalError(val)) {\n if (val.status === ExprEvalStatus.IFC_PROPERTY_NOT_FOUND) {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(LogicalValue.unknown())\n );\n }\n } else {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(\n LogicalValue.of(val.result.getValue() as boolean)\n )\n );\n }\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n try {\n return new ExprEvalSuccessObj(val);\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
@@ -44,5 +44,4 @@ export class TONUMERIC extends Func {
44
44
  return Type.NUMERIC;
45
45
  }
46
46
  }
47
- TONUMERIC.KEY_OBJECT = "object";
48
47
  //# sourceMappingURL=TONUMERIC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/impl/TONUMERIC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,MAAM,OAAO,SAAU,SAAQ,IAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,kCAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,cAAc,CAAC,UAAU,EACzB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,cAAc,EAAE;YACnE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS;gBACnC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAClB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AA/CuB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TONUMERIC.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\n\nexport class TONUMERIC extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TONUMERIC\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(NumericValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.MATH_ERROR,\n `Cannot convert ${val.getValue()} to numeric: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): Decimal {\n if (value instanceof BooleanValue) {\n return value.getValue() ? new Decimal(1) : new Decimal(0);\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n return new Decimal(value.getValue());\n }\n if (value instanceof NumericValue) {\n return value.getValue();\n }\n if (value instanceof LogicalValue) {\n return value.getValue() === \"UNKNOWN\"\n ? new Decimal(-1)\n : value.getValue()\n ? new Decimal(1)\n : new Decimal(0);\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.NUMERIC;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/impl/TONUMERIC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,kCAAkC,EAElC,cAAc,EACd,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,kCAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,cAAc,CAAC,UAAU,EACzB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,cAAc,EAAE;YACnE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,YAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS;gBACnC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAClB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"expression/function/impl/TONUMERIC.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { LogicalValue } from \"../../../value/LogicalValue.js\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue.js\";\n\nexport class TONUMERIC extends Func {\n constructor() {\n super(\"TONUMERIC\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(NumericValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.MATH_ERROR,\n `Cannot convert ${val.getValue()} to numeric: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): Decimal {\n if (value instanceof BooleanValue) {\n return value.getValue() ? new Decimal(1) : new Decimal(0);\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n return new Decimal(value.getValue());\n }\n if (value instanceof NumericValue) {\n return value.getValue();\n }\n if (value instanceof LogicalValue) {\n return value.getValue() === \"UNKNOWN\"\n ? new Decimal(-1)\n : value.getValue()\n ? new Decimal(1)\n : new Decimal(0);\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.NUMERIC;\n }\n}\n"]}
@@ -9,6 +9,11 @@ Type.NUMERIC = new SimpleType("numeric");
9
9
  Type.STRING = new SimpleType("string");
10
10
  Type.LOGICAL = new SimpleType("logical");
11
11
  Type.BOOLEAN = new SimpleType("boolean", Type.LOGICAL);
12
+ Type.IFC_DATE = new SimpleType("ifcDate", Type.STRING);
13
+ Type.IFC_DATE_TIME = new SimpleType("ifcDateTime", Type.STRING);
14
+ Type.IFC_TIME = new SimpleType("ifcTime", Type.STRING);
15
+ Type.IFC_DURATION = new SimpleType("ifcDuration", Type.STRING);
16
+ Type.IFC_TIME_STAMP = new SimpleType("ifcTimeStamp", Type.NUMERIC);
12
17
  Type.IFC_OBJECT_REF = new SimpleType("ifcObjectRef");
13
18
  Type.IFC_ELEMENT_REF = new SimpleType("ifcElementRef", Type.IFC_OBJECT_REF);
14
19
  Type.IFC_PROPERTY_REF = new SimpleType("ifcPropertyRef", Type.IFC_OBJECT_REF);
@@ -41,6 +46,21 @@ export class Types {
41
46
  static isString(actualType) {
42
47
  return this.isType(actualType, Type.STRING);
43
48
  }
49
+ static isIfcDate(actualType) {
50
+ return this.isType(actualType, Type.IFC_DATE);
51
+ }
52
+ static isIfcDateTime(actualType) {
53
+ return this.isType(actualType, Type.IFC_DATE_TIME);
54
+ }
55
+ static isIfcTime(actualType) {
56
+ return this.isType(actualType, Type.IFC_TIME);
57
+ }
58
+ static isIfcDuration(actualType) {
59
+ return this.isType(actualType, Type.IFC_DURATION);
60
+ }
61
+ static isIfcTimeStamp(actualType) {
62
+ return this.isType(actualType, Type.IFC_TIME_STAMP);
63
+ }
44
64
  static isType(actualType, type) {
45
65
  return actualType === type;
46
66
  }
@@ -53,6 +73,21 @@ export class Types {
53
73
  static string() {
54
74
  return Type.STRING;
55
75
  }
76
+ static ifcDate() {
77
+ return Type.IFC_DATE;
78
+ }
79
+ static ifcDateTime() {
80
+ return Type.IFC_DATE_TIME;
81
+ }
82
+ static ifcTime() {
83
+ return Type.IFC_TIME;
84
+ }
85
+ static ifcDuration() {
86
+ return Type.IFC_DURATION;
87
+ }
88
+ static ifcTimeStamp() {
89
+ return Type.IFC_TIME_STAMP;
90
+ }
56
91
  static numeric() {
57
92
  return Type.NUMERIC;
58
93
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["type/Types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,IAAI;;AACC,QAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,WAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClC,YAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,YAAO,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAClD,mBAAc,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;AAChD,oBAAe,GAAG,IAAI,UAAU,CAC9C,eAAe,EACf,IAAI,CAAC,cAAc,CACpB,CAAC;AACc,qBAAgB,GAAG,IAAI,UAAU,CAC/C,gBAAgB,EAChB,IAAI,CAAC,cAAc,CACpB,CAAC;AACc,yBAAoB,GAAG,IAAI,UAAU,CACnD,mBAAmB,EACnB,IAAI,CAAC,cAAc,CACpB,CAAC;AACc,wBAAmB,GAAG,IAAI,UAAU,CAClD,kBAAkB,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;AACc,UAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AAGlD,MAAM,OAAO,KAAK;IACT,MAAM,CAAC,EAAE,CAAC,GAAG,KAAsB;QACxC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,GAAG,KAAK,CAAC,CAAC;QAClD,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YACtC,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,WAAqB;QACvC,OAAO,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,GAAG,KAAsB;QAC3C,OAAO,IAAI,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC;IACjC,CAAC;IACM,MAAM,CAAC,SAAS,CAAC,UAAoB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACM,MAAM,CAAC,SAAS,CAAC,UAAoB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACM,MAAM,CAAC,SAAS,CAAC,UAAoB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACM,MAAM,CAAC,QAAQ,CAAC,UAAoB;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,UAAoB,EAAE,IAAc;QACvD,OAAO,UAAU,KAAK,IAAI,CAAC;IAC7B,CAAC;IACM,MAAM,CAAC,OAAO;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACM,MAAM,CAAC,OAAO;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACM,MAAM,CAAC,MAAM;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACM,MAAM,CAAC,OAAO;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACM,MAAM,CAAC,YAAY;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,uBAAuB,CACnC,YAAsB,EACtB,UAAoB,EACpB,iBAA4C;QAE5C,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;YAC9C,MAAM,iBAAiB,EAAE,CAAC;SAC3B;IACH,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,2BAA2B,CACvC,YAAsB,EACtB,UAAoB,EACpB,iBAA4C;QAE5C,IAAI,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;YAC7C,OAAO;SACR;QACD,IAAI,UAAU,YAAY,eAAe,EAAE;YACzC,IAAI,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;gBACzC,OAAO;aACR;SACF;QACD,IAAI,UAAU,YAAY,SAAS,EAAE;YACnC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACnE,IAAI,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;gBAC7C,OAAO;aACR;SACF;QACD,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,mBAAmB,CACxB,UAAoB,EACpB,WAAqB,EACrB,iBAA4C;QAE5C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YACzC,MAAM,iBAAiB,EAAE,CAAC;SAC3B;IACH,CAAC;CACF","file":"type/Types.js","sourcesContent":["import { ExpressionTypeError } from \"../error/ExpressionTypeError.js\";\nimport { SimpleType } from \"./SimpleType.js\";\nimport { TypeDisjunction } from \"./TypeDisjunction.js\";\nimport { ExprType } from \"./ExprType.js\";\nimport { ArrayType } from \"./ArrayType.js\";\nimport { TupleType } from \"./TupleType.js\";\n\nexport class Type {\n static readonly ANY = new SimpleType(\"any\");\n static readonly NUMERIC = new SimpleType(\"numeric\");\n static readonly STRING = new SimpleType(\"string\");\n static readonly LOGICAL = new SimpleType(\"logical\");\n static readonly BOOLEAN = new SimpleType(\"boolean\", Type.LOGICAL);\n static readonly IFC_OBJECT_REF = new SimpleType(\"ifcObjectRef\");\n static readonly IFC_ELEMENT_REF = new SimpleType(\n \"ifcElementRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly IFC_PROPERTY_REF = new SimpleType(\n \"ifcPropertyRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly IFC_PROPERTY_SET_REF = new SimpleType(\n \"ifcPropertySetRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly IFC_TYPE_OBJECT_REF = new SimpleType(\n \"ifcTypeObjectRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly ARRAY = new SimpleType(\"array\");\n}\n\nexport class Types {\n public static or(...types: Array<ExprType>) {\n const disjunction = new TypeDisjunction(...types);\n if (disjunction.getTypes().length == 1) {\n return disjunction.getTypes()[0];\n }\n return disjunction;\n }\n public static array(elementType: ExprType): ArrayType {\n return new ArrayType(elementType);\n }\n public static tuple(...types: Array<ExprType>): TupleType {\n return new TupleType(...types);\n }\n public static isNumeric(actualType: ExprType) {\n return this.isType(actualType, Type.NUMERIC);\n }\n public static isBoolean(actualType: ExprType) {\n return this.isType(actualType, Type.BOOLEAN);\n }\n public static isLogical(actualType: ExprType) {\n return this.isType(actualType, Type.LOGICAL);\n }\n public static isString(actualType: ExprType) {\n return this.isType(actualType, Type.STRING);\n }\n public static isType(actualType: ExprType, type: ExprType) {\n return actualType === type;\n }\n public static boolean() {\n return Type.BOOLEAN;\n }\n public static logical() {\n return Type.LOGICAL;\n }\n public static string() {\n return Type.STRING;\n }\n public static numeric() {\n return Type.NUMERIC;\n }\n public static ifcObjectRef() {\n return Type.IFC_OBJECT_REF;\n }\n\n public static requireIsAssignableFrom(\n expectedType: ExprType,\n actualType: ExprType,\n exceptionProducer: () => ExpressionTypeError\n ) {\n if (!expectedType.isAssignableFrom(actualType)) {\n throw exceptionProducer();\n }\n }\n\n /**\n * Requires overlap if actual is a disjunction, assignable from if it is a type\n * @param expectedType\n * @param actualType\n * @param exceptionProducer\n */\n public static requireWeakIsAssignableFrom(\n expectedType: ExprType,\n actualType: ExprType,\n exceptionProducer: () => ExpressionTypeError\n ) {\n if (expectedType.isAssignableFrom(actualType)) {\n return;\n }\n if (actualType instanceof TypeDisjunction) {\n if (expectedType.overlapsWith(actualType)) {\n return;\n }\n }\n if (actualType instanceof TupleType) {\n const weakerType = Types.array(Types.or(...actualType.getTypes()));\n if (expectedType.isAssignableFrom(weakerType)) {\n return;\n }\n }\n throw exceptionProducer();\n }\n\n static requireTypesOverlap(\n actualType: ExprType,\n actualType2: ExprType,\n exceptionProducer: () => ExpressionTypeError\n ) {\n if (!actualType.overlapsWith(actualType2)) {\n throw exceptionProducer();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["type/Types.ts"],"names":[],"mappings":"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","file":"type/Types.js","sourcesContent":["import { ExpressionTypeError } from \"../error/ExpressionTypeError.js\";\nimport { SimpleType } from \"./SimpleType.js\";\nimport { TypeDisjunction } from \"./TypeDisjunction.js\";\nimport { ExprType } from \"./ExprType.js\";\nimport { ArrayType } from \"./ArrayType.js\";\nimport { TupleType } from \"./TupleType.js\";\n\nexport class Type {\n static readonly ANY = new SimpleType(\"any\");\n static readonly NUMERIC = new SimpleType(\"numeric\");\n static readonly STRING = new SimpleType(\"string\");\n static readonly LOGICAL = new SimpleType(\"logical\");\n static readonly BOOLEAN = new SimpleType(\"boolean\", Type.LOGICAL);\n static readonly IFC_DATE = new SimpleType(\"ifcDate\", Type.STRING);\n static readonly IFC_DATE_TIME = new SimpleType(\"ifcDateTime\", Type.STRING);\n static readonly IFC_TIME = new SimpleType(\"ifcTime\", Type.STRING);\n static readonly IFC_DURATION = new SimpleType(\"ifcDuration\", Type.STRING);\n static readonly IFC_TIME_STAMP = new SimpleType(\"ifcTimeStamp\", Type.NUMERIC);\n\n static readonly IFC_OBJECT_REF = new SimpleType(\"ifcObjectRef\");\n static readonly IFC_ELEMENT_REF = new SimpleType(\n \"ifcElementRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly IFC_PROPERTY_REF = new SimpleType(\n \"ifcPropertyRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly IFC_PROPERTY_SET_REF = new SimpleType(\n \"ifcPropertySetRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly IFC_TYPE_OBJECT_REF = new SimpleType(\n \"ifcTypeObjectRef\",\n Type.IFC_OBJECT_REF\n );\n static readonly ARRAY = new SimpleType(\"array\");\n}\n\nexport class Types {\n public static or(...types: Array<ExprType>) {\n const disjunction = new TypeDisjunction(...types);\n if (disjunction.getTypes().length == 1) {\n return disjunction.getTypes()[0];\n }\n return disjunction;\n }\n public static array(elementType: ExprType): ArrayType {\n return new ArrayType(elementType);\n }\n public static tuple(...types: Array<ExprType>): TupleType {\n return new TupleType(...types);\n }\n public static isNumeric(actualType: ExprType) {\n return this.isType(actualType, Type.NUMERIC);\n }\n public static isBoolean(actualType: ExprType) {\n return this.isType(actualType, Type.BOOLEAN);\n }\n public static isLogical(actualType: ExprType) {\n return this.isType(actualType, Type.LOGICAL);\n }\n public static isString(actualType: ExprType) {\n return this.isType(actualType, Type.STRING);\n }\n public static isIfcDate(actualType: ExprType) {\n return this.isType(actualType, Type.IFC_DATE);\n }\n public static isIfcDateTime(actualType: ExprType) {\n return this.isType(actualType, Type.IFC_DATE_TIME);\n }\n public static isIfcTime(actualType: ExprType) {\n return this.isType(actualType, Type.IFC_TIME);\n }\n public static isIfcDuration(actualType: ExprType) {\n return this.isType(actualType, Type.IFC_DURATION);\n }\n public static isIfcTimeStamp(actualType: ExprType) {\n return this.isType(actualType, Type.IFC_TIME_STAMP);\n }\n public static isType(actualType: ExprType, type: ExprType) {\n return actualType === type;\n }\n public static boolean() {\n return Type.BOOLEAN;\n }\n public static logical() {\n return Type.LOGICAL;\n }\n public static string() {\n return Type.STRING;\n }\n public static ifcDate() {\n return Type.IFC_DATE;\n }\n public static ifcDateTime() {\n return Type.IFC_DATE_TIME;\n }\n public static ifcTime() {\n return Type.IFC_TIME;\n }\n public static ifcDuration() {\n return Type.IFC_DURATION;\n }\n public static ifcTimeStamp() {\n return Type.IFC_TIME_STAMP;\n }\n public static numeric() {\n return Type.NUMERIC;\n }\n public static ifcObjectRef() {\n return Type.IFC_OBJECT_REF;\n }\n\n public static requireIsAssignableFrom(\n expectedType: ExprType,\n actualType: ExprType,\n exceptionProducer: () => ExpressionTypeError\n ) {\n if (!expectedType.isAssignableFrom(actualType)) {\n throw exceptionProducer();\n }\n }\n\n /**\n * Requires overlap if actual is a disjunction, assignable from if it is a type\n * @param expectedType\n * @param actualType\n * @param exceptionProducer\n */\n public static requireWeakIsAssignableFrom(\n expectedType: ExprType,\n actualType: ExprType,\n exceptionProducer: () => ExpressionTypeError\n ) {\n if (expectedType.isAssignableFrom(actualType)) {\n return;\n }\n if (actualType instanceof TypeDisjunction) {\n if (expectedType.overlapsWith(actualType)) {\n return;\n }\n }\n if (actualType instanceof TupleType) {\n const weakerType = Types.array(Types.or(...actualType.getTypes()));\n if (expectedType.isAssignableFrom(weakerType)) {\n return;\n }\n }\n throw exceptionProducer();\n }\n\n static requireTypesOverlap(\n actualType: ExprType,\n actualType2: ExprType,\n exceptionProducer: () => ExpressionTypeError\n ) {\n if (!actualType.overlapsWith(actualType2)) {\n throw exceptionProducer();\n }\n }\n}\n"]}
@@ -92,7 +92,6 @@ export class TextSpan {
92
92
  }
93
93
  }
94
94
  return result.join("\n");
95
- throw new Error("Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.");
96
95
  }
97
96
  underlineOneLine(line, ulChar = "~", ulStart = 0, ulLength = line.length - ulStart) {
98
97
  if (ulChar.length != 1) {
@@ -1 +1 @@
1
- {"version":3,"sources":["util/TextSpan.ts"],"names":[],"mappings":"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","file":"util/TextSpan.js","sourcesContent":["import { TextPosition } from \"./TextPosition.js\";\n\nexport class TextSpan {\n private _start: TextPosition;\n private _end: TextPosition;\n\n constructor(start: TextPosition, end: TextPosition) {\n if (start.isBefore(end)) {\n this._start = start;\n this._end = end;\n } else {\n this._start = end;\n this._end = start;\n }\n }\n\n static of(\n fromLine: number,\n fromColumn: number,\n toLine: number,\n toColumn: number\n ) {\n return new TextSpan(\n new TextPosition(fromLine, fromColumn),\n new TextPosition(toLine, toColumn)\n );\n }\n\n get start(): TextPosition {\n return this._start;\n }\n\n get end(): TextPosition {\n return this._end;\n }\n\n toString(): string {\n return this._start.toString() + \" - \" + this._end.toString();\n }\n\n public getCoveredText(input: string) {\n if (\n this._start.isFirstLine() &&\n this._end.isFirstLine() &&\n this.end.column <= input.length\n ) {\n return input.substr(this._start.column - 1, this._end.column - 1);\n }\n const lines = input.split(\"\\n\");\n if (lines.length > this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length > this._end.column\n ) {\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n if (this._start.isAtSameLine(this._end)) {\n return lines[this.start.line - 1].substr(\n this._start.column - 1,\n this._end.column - 1\n );\n }\n let result = \"\";\n let copying = false;\n for (let line = this._start.line; line <= this.end.line; line++) {\n if (line === this._start.line) {\n result += lines[line - 1].substr(this.start.column - 1);\n copying = true;\n } else if (line === this._end.line) {\n result += lines[line - 1].substr(0, this.end.column - 1);\n return result;\n } else if (copying) {\n result += lines[line - 1];\n }\n }\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n public underline(input: string, underlineChar: string = \"~\"): string {\n const lines = input.split(\"\\n\");\n if (lines.length < this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length + 1 < this._end.column\n ) {\n //tolerate a one-off error as the antlr4 syntax error is sometimes at index 0, sometimes at index [length].\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n let result = [];\n let underlining = false;\n for (let line = 1; line <= lines.length; line++) {\n if (line === this._start.line && line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1,\n this._end.column - this._start.column + 1\n )\n );\n } else if (line === this._start.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1\n )\n );\n underlining = true;\n } else if (line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n 0,\n this.end.column\n )\n );\n underlining = false;\n } else {\n if (underlining) {\n result.push(...this.underlineOneLine(lines[line - 1], underlineChar));\n } else {\n result.push(lines[line - 1]);\n }\n }\n }\n return result.join(\"\\n\");\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n private underlineOneLine(\n line: string,\n ulChar: string = \"~\",\n ulStart: number = 0,\n ulLength: number = line.length - ulStart\n ): Array<string> {\n if (ulChar.length != 1) {\n throw new Error(\n `Underline char must be a string of length 1, ${ulChar} does not qualify`\n );\n }\n if (ulLength <= 0) {\n ulLength = 1;\n }\n return [line, \" \".repeat(ulStart) + ulChar.repeat(ulLength)];\n }\n}\n"]}
1
+ {"version":3,"sources":["util/TextSpan.ts"],"names":[],"mappings":"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","file":"util/TextSpan.js","sourcesContent":["import { TextPosition } from \"./TextPosition.js\";\n\nexport class TextSpan {\n private _start: TextPosition;\n private _end: TextPosition;\n\n constructor(start: TextPosition, end: TextPosition) {\n if (start.isBefore(end)) {\n this._start = start;\n this._end = end;\n } else {\n this._start = end;\n this._end = start;\n }\n }\n\n static of(\n fromLine: number,\n fromColumn: number,\n toLine: number,\n toColumn: number\n ) {\n return new TextSpan(\n new TextPosition(fromLine, fromColumn),\n new TextPosition(toLine, toColumn)\n );\n }\n\n get start(): TextPosition {\n return this._start;\n }\n\n get end(): TextPosition {\n return this._end;\n }\n\n toString(): string {\n return this._start.toString() + \" - \" + this._end.toString();\n }\n\n public getCoveredText(input: string) {\n if (\n this._start.isFirstLine() &&\n this._end.isFirstLine() &&\n this.end.column <= input.length\n ) {\n return input.substr(this._start.column - 1, this._end.column - 1);\n }\n const lines = input.split(\"\\n\");\n if (lines.length > this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length > this._end.column\n ) {\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n if (this._start.isAtSameLine(this._end)) {\n return lines[this.start.line - 1].substr(\n this._start.column - 1,\n this._end.column - 1\n );\n }\n let result = \"\";\n let copying = false;\n for (let line = this._start.line; line <= this.end.line; line++) {\n if (line === this._start.line) {\n result += lines[line - 1].substr(this.start.column - 1);\n copying = true;\n } else if (line === this._end.line) {\n result += lines[line - 1].substr(0, this.end.column - 1);\n return result;\n } else if (copying) {\n result += lines[line - 1];\n }\n }\n throw new Error(\n \"Cannot compute text coverage, this should not have happened. There is a bug in the sanity checks for the start and end positions.\"\n );\n }\n\n public underline(input: string, underlineChar: string = \"~\"): string {\n const lines = input.split(\"\\n\");\n if (lines.length < this._end.line) {\n // this is correct: _end.line is 1-based, so if there are 3 lines, length is 3 and the last TextPosition is line is line 3, col x.\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the number of lines in the text (${\n lines.length\n })`\n );\n }\n if (\n lines.length == this.end.line &&\n lines[lines.length - 1].length + 1 < this._end.column\n ) {\n //tolerate a one-off error as the antlr4 syntax error is sometimes at index 0, sometimes at index [length].\n throw new Error(\n `Cannot compute covered text. End position ${this._end.toString()} is past the last position in the last column in the last line of the text (${\n lines.length\n }:${lines[lines.length - 1].length})`\n );\n }\n let result = [];\n let underlining = false;\n for (let line = 1; line <= lines.length; line++) {\n if (line === this._start.line && line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1,\n this._end.column - this._start.column + 1\n )\n );\n } else if (line === this._start.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n this.start.column - 1\n )\n );\n underlining = true;\n } else if (line === this._end.line) {\n result.push(\n ...this.underlineOneLine(\n lines[line - 1],\n underlineChar,\n 0,\n this.end.column\n )\n );\n underlining = false;\n } else {\n if (underlining) {\n result.push(...this.underlineOneLine(lines[line - 1], underlineChar));\n } else {\n result.push(lines[line - 1]);\n }\n }\n }\n return result.join(\"\\n\");\n }\n\n private underlineOneLine(\n line: string,\n ulChar: string = \"~\",\n ulStart: number = 0,\n ulLength: number = line.length - ulStart\n ): Array<string> {\n if (ulChar.length != 1) {\n throw new Error(\n `Underline char must be a string of length 1, ${ulChar} does not qualify`\n );\n }\n if (ulLength <= 0) {\n ulLength = 1;\n }\n return [line, \" \".repeat(ulStart) + ulChar.repeat(ulLength)];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["value/BooleanValue.ts"],"names":[],"mappings":"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","file":"value/BooleanValue.js","sourcesContent":["import { Value } from \"./Value.js\";\nimport { Comparable } from \"./Comparable.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { Type } from \"../type/Types.js\";\nimport { LogicalValue } from \"./LogicalValue\";\n\nexport class BooleanValue implements Value<boolean>, Comparable<BooleanValue> {\n private readonly booleanValue: boolean;\n\n private static readonly TRUE_VALUE = new BooleanValue(true);\n private static readonly FALSE_VALUE = new BooleanValue(false);\n\n private constructor(value: boolean) {\n this.booleanValue = value;\n }\n\n public static of(value: boolean): BooleanValue {\n if (value === true) {\n return this.TRUE_VALUE;\n } else if (value === false) {\n return this.FALSE_VALUE;\n }\n throw new Error(`Cannot get boolean value of ${value}`);\n }\n\n getValue(): boolean {\n return this.booleanValue;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n\n static true() {\n return BooleanValue.of(true);\n }\n\n static false() {\n return BooleanValue.of(false);\n }\n\n static isBoolean(val: any): val is boolean {\n return typeof val === \"boolean\";\n }\n\n isTrue() {\n return this.booleanValue === true;\n }\n\n isFalse() {\n return this.booleanValue === false;\n }\n\n compareTo(other: BooleanValue): number {\n return this.booleanValue ? (other.booleanValue ? 0 : 1) : -1;\n }\n\n toString(): string {\n return this.booleanValue ? \"TRUE\" : \"FALSE\";\n }\n\n static isBooleanValueType(arg: any): arg is BooleanValueType {\n return typeof arg.booleanValue === \"boolean\";\n }\n\n and<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n return other.and(this) as T;\n }\n return BooleanValue.of(this.booleanValue && other.booleanValue) as T;\n }\n\n or<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n return other.or(this) as T;\n }\n return BooleanValue.of(this.booleanValue || other.booleanValue) as T;\n }\n\n xor<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n return other.xor(this) as T;\n }\n return BooleanValue.of(this.booleanValue != other.booleanValue) as T;\n }\n\n implies<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n if (other.isUnknown()) {\n return (\n this.isFalse() ? LogicalValue.true() : LogicalValue.unknown()\n ) as T;\n } else {\n return LogicalValue.of(!this.booleanValue || other.getValue()) as T;\n }\n }\n return BooleanValue.of(!this.booleanValue || other.booleanValue) as T;\n }\n\n not(): BooleanValue {\n return this.isTrue() ? BooleanValue.false() : BooleanValue.true();\n }\n\n equals(other: Value<any>): boolean {\n if (LogicalValue.isLogicalValueType(other)) {\n return this.booleanValue === other.getValue();\n } else if (BooleanValue.isBooleanValueType(other)) {\n return this.booleanValue === other.booleanValue;\n }\n return false;\n }\n}\n\nexport type BooleanValueType = {\n booleanValue: boolean;\n};\n"]}
1
+ {"version":3,"sources":["value/BooleanValue.ts"],"names":[],"mappings":"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","file":"value/BooleanValue.js","sourcesContent":["import { Value } from \"./Value.js\";\nimport { Comparable } from \"./Comparable.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { Type } from \"../type/Types.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\n\nexport class BooleanValue implements Value<boolean>, Comparable<BooleanValue> {\n private readonly booleanValue: boolean;\n\n private static readonly TRUE_VALUE = new BooleanValue(true);\n private static readonly FALSE_VALUE = new BooleanValue(false);\n\n private constructor(value: boolean) {\n this.booleanValue = value;\n }\n\n public static of(value: boolean): BooleanValue {\n if (value === true) {\n return this.TRUE_VALUE;\n } else if (value === false) {\n return this.FALSE_VALUE;\n }\n throw new Error(`Cannot get boolean value of ${value}`);\n }\n\n getValue(): boolean {\n return this.booleanValue;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n\n static true() {\n return BooleanValue.of(true);\n }\n\n static false() {\n return BooleanValue.of(false);\n }\n\n static isBoolean(val: any): val is boolean {\n return typeof val === \"boolean\";\n }\n\n isTrue() {\n return this.booleanValue === true;\n }\n\n isFalse() {\n return this.booleanValue === false;\n }\n\n compareTo(other: BooleanValue): number {\n return this.booleanValue ? (other.booleanValue ? 0 : 1) : -1;\n }\n\n toString(): string {\n return this.booleanValue ? \"TRUE\" : \"FALSE\";\n }\n\n static isBooleanValueType(arg: any): arg is BooleanValueType {\n return typeof arg.booleanValue === \"boolean\";\n }\n\n and<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n return other.and(this) as T;\n }\n return BooleanValue.of(this.booleanValue && other.booleanValue) as T;\n }\n\n or<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n return other.or(this) as T;\n }\n return BooleanValue.of(this.booleanValue || other.booleanValue) as T;\n }\n\n xor<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n return other.xor(this) as T;\n }\n return BooleanValue.of(this.booleanValue != other.booleanValue) as T;\n }\n\n implies<T extends LogicalValue | BooleanValue>(other: T): T {\n if (other instanceof LogicalValue) {\n if (other.isUnknown()) {\n return (\n this.isFalse() ? LogicalValue.true() : LogicalValue.unknown()\n ) as T;\n } else {\n return LogicalValue.of(!this.booleanValue || other.getValue()) as T;\n }\n }\n return BooleanValue.of(!this.booleanValue || other.booleanValue) as T;\n }\n\n not(): BooleanValue {\n return this.isTrue() ? BooleanValue.false() : BooleanValue.true();\n }\n\n equals(other: Value<any>): boolean {\n if (LogicalValue.isLogicalValueType(other)) {\n return this.booleanValue === other.getValue();\n } else if (BooleanValue.isBooleanValueType(other)) {\n return this.booleanValue === other.booleanValue;\n }\n return false;\n }\n}\n\nexport type BooleanValueType = {\n booleanValue: boolean;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["value/ExpressionValue.ts"],"names":[],"mappings":"","file":"value/ExpressionValue.js","sourcesContent":["import { NumericValue } from \"./NumericValue.js\";\nimport { StringValue } from \"./StringValue.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\nimport { ReferenceValue } from \"./ReferenceValue.js\";\nimport { ArrayValue } from \"./ArrayValue.js\";\nimport { ObjectAccessorValue } from \"./ObjectAccessorValue.js\";\n\nexport type ExpressionValue =\n | NumericValue\n | StringValue\n | BooleanValue\n | LogicalValue\n | ReferenceValue\n | ObjectAccessorValue\n | ArrayValue;\n"]}
1
+ {"version":3,"sources":["value/ExpressionValue.ts"],"names":[],"mappings":"","file":"value/ExpressionValue.js","sourcesContent":["import { NumericValue } from \"./NumericValue.js\";\nimport { StringValue } from \"./StringValue.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\nimport { ReferenceValue } from \"./ReferenceValue.js\";\nimport { ArrayValue } from \"./ArrayValue.js\";\nimport { ObjectAccessorValue } from \"./ObjectAccessorValue.js\";\nimport { IfcDateValue } from \"./IfcDateValue.js\";\nimport { IfcDateTimeValue } from \"./IfcDateTimeValue.js\";\nimport { IfcTimeValue } from \"./IfcTimeValue.js\";\nimport { IfcDurationValue } from \"./IfcDurationValue.js\";\nimport { IfcTimeStampValue } from \"./IfcTimeStampValue.js\";\n\nexport type ExpressionValue =\n | NumericValue\n | StringValue\n | BooleanValue\n | LogicalValue\n | IfcDateValue\n | IfcDateTimeValue\n | IfcTimeValue\n | IfcDurationValue\n | IfcTimeStampValue\n | ReferenceValue\n | ObjectAccessorValue\n | ArrayValue;\n"]}
@@ -0,0 +1,186 @@
1
+ import { Type } from "../type/Types.js";
2
+ import { isNullish } from "../util/IfcExpressionUtils.js";
3
+ import { DateFormatException } from "../error/value/DateFormatException.js";
4
+ import Decimal from "decimal.js";
5
+ import { IfcDateValue } from "./IfcDateValue.js";
6
+ import { IfcTimeValue } from "./IfcTimeValue.js";
7
+ import { IfcTimeStampValue } from "./IfcTimeStampValue.js";
8
+ export class IfcDateTimeValue {
9
+ constructor(value) {
10
+ if (typeof value === "string") {
11
+ var parsed = IfcDateTimeValue.parseIfcDate(value);
12
+ this.utcDateValue = parsed.utcDate;
13
+ this.originalTimeZoneHours = parsed.originalTimeZoneHours;
14
+ this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;
15
+ this.secondFraction = parsed.secondFraction;
16
+ }
17
+ else if (typeof value === "number" || value instanceof Decimal) {
18
+ let timeStampSeconds = value;
19
+ if (value instanceof Decimal) {
20
+ timeStampSeconds = value.round().toNumber();
21
+ }
22
+ this.utcDateValue = new Date(timeStampSeconds);
23
+ this.originalTimeZoneHours = 0;
24
+ this.originalTimeZoneMinutes = 0;
25
+ this.secondFraction = new Decimal(0);
26
+ }
27
+ else if (value instanceof IfcDateTimeValue) {
28
+ this.utcDateValue = value.utcDateValue;
29
+ this.originalTimeZoneMinutes = value.originalTimeZoneMinutes;
30
+ this.originalTimeZoneHours = value.originalTimeZoneHours;
31
+ this.secondFraction = value.secondFraction;
32
+ }
33
+ else if (isParsedIfcDateTimeValue(value)) {
34
+ this.utcDateValue = value.utcDate;
35
+ this.secondFraction = value.secondFraction;
36
+ this.originalTimeZoneHours = value.originalTimeZoneHours;
37
+ this.originalTimeZoneMinutes = value.originalTimeZoneMinutes;
38
+ }
39
+ this.stringRepresentation = this.toCanonicalString();
40
+ }
41
+ static parseIfcDate(value) {
42
+ Decimal.set({ defaults: true });
43
+ let match = value.match(this.regex);
44
+ if (isNullish(match)) {
45
+ throw new DateFormatException("Not an IfcDateTime: " + value);
46
+ }
47
+ let [wholeString, year, month, day, hours, minutes, seconds, fractionSeconds, timeZoneWhole, timeZoneSign, timeZoneHours, timeZoneMinutes,] = match;
48
+ var utcDate = new Date(0);
49
+ utcDate.setUTCFullYear(Number.parseInt(year));
50
+ utcDate.setUTCMonth(Number.parseInt(month) - 1);
51
+ utcDate.setUTCDate(Number.parseInt(day));
52
+ utcDate.setUTCHours(Number.parseInt(hours));
53
+ utcDate.setUTCMinutes(Number.parseInt(minutes));
54
+ utcDate.setUTCSeconds(Number.parseInt(seconds));
55
+ var secondFraction = isNullish(fractionSeconds)
56
+ ? new Decimal("0")
57
+ : new Decimal("0" + fractionSeconds); //arbitrary precision fractions (to the precision of Decimal.precision)
58
+ var originalZoneSign = isNullish(timeZoneSign)
59
+ ? 0
60
+ : timeZoneSign === "+"
61
+ ? 1
62
+ : -1;
63
+ var originalTimeZoneHours = originalZoneSign *
64
+ (isNullish(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));
65
+ var originalTimeZoneMinutes = originalZoneSign *
66
+ (isNullish(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));
67
+ utcDate.setUTCHours(utcDate.getUTCHours() - originalTimeZoneHours);
68
+ utcDate.setUTCMinutes(utcDate.getUTCMinutes() - originalTimeZoneMinutes);
69
+ return {
70
+ utcDate,
71
+ secondFraction,
72
+ originalTimeZoneHours,
73
+ originalTimeZoneMinutes,
74
+ };
75
+ }
76
+ static of(value) {
77
+ return new IfcDateTimeValue(value);
78
+ }
79
+ getTimeAsString() {
80
+ const fraction = isNullish(this.secondFraction)
81
+ ? ""
82
+ : this.secondFraction.isZero()
83
+ ? ""
84
+ : this.secondFraction.toString().substring(1);
85
+ return `${this.pad00(this.utcDateValue.getUTCHours() + this.originalTimeZoneHours)}:${this.pad00(this.utcDateValue.getUTCMinutes() + this.originalTimeZoneMinutes)}:${this.pad00(this.utcDateValue.getUTCSeconds())}${fraction}`;
86
+ }
87
+ pad00(num) {
88
+ return ("" + num).padStart(2, "0");
89
+ }
90
+ getDateAsString() {
91
+ return `${this.utcDateValue.getUTCFullYear()}-${this.pad00(this.utcDateValue.getUTCMonth() + 1)}-${this.pad00(this.utcDateValue.getUTCDate())}`;
92
+ }
93
+ getTimeZoneAsString() {
94
+ if (this.originalTimeZoneMinutes === 0 &&
95
+ this.originalTimeZoneHours === 0) {
96
+ return "Z";
97
+ }
98
+ const sign = this.originalTimeZoneHours >= 0 && this.originalTimeZoneMinutes >= 0
99
+ ? "+"
100
+ : "-";
101
+ return `${sign}${this.pad00(Math.abs(this.originalTimeZoneHours))}:${this.pad00(Math.abs(this.originalTimeZoneMinutes))}`;
102
+ }
103
+ getTimeStampSeconds() {
104
+ return new Decimal(this.utcDateValue.getTime()).divToInt(1000);
105
+ }
106
+ getValue() {
107
+ return this;
108
+ }
109
+ getType() {
110
+ return Type.IFC_DATE_TIME;
111
+ }
112
+ static isIfcDateTimeValueType(arg) {
113
+ return (arg instanceof IfcDateTimeValue ||
114
+ (!isNullish(arg.stringRepresentation) &&
115
+ !isNullish(arg.stringRepresentation.match(IfcDateTimeValue.regex))));
116
+ }
117
+ static isValidStringRepresentation(str) {
118
+ return !isNullish(str.match(this.regex));
119
+ }
120
+ equals(other) {
121
+ return (IfcDateTimeValue.isIfcDateTimeValueType(other) &&
122
+ this.utcDateValue.getTime() === other.utcDateValue.getTime() &&
123
+ this.secondFraction.eq(other.secondFraction));
124
+ }
125
+ toCanonicalString() {
126
+ return (this.getDateAsString() +
127
+ "T" +
128
+ this.getTimeAsString() +
129
+ this.getTimeZoneAsString());
130
+ }
131
+ toString() {
132
+ return this.stringRepresentation;
133
+ }
134
+ compareTo(other) {
135
+ var diff = this.utcDateValue.getTime() - other.utcDateValue.getTime();
136
+ if (diff != 0) {
137
+ return diff;
138
+ }
139
+ return Decimal.sign(this.secondFraction.minus(other.secondFraction));
140
+ }
141
+ static ofTimeStampSeconds(timeStampSeconds) {
142
+ var timeStampMillis = timeStampSeconds;
143
+ if (timeStampSeconds instanceof Decimal) {
144
+ timeStampMillis = timeStampSeconds.round().toNumber();
145
+ }
146
+ timeStampMillis = timeStampMillis * 1000;
147
+ return new IfcDateTimeValue(timeStampMillis);
148
+ }
149
+ toIfcDateValue() {
150
+ return IfcDateValue.of(this.getDateAsString() + this.getTimeZoneAsString());
151
+ }
152
+ toIfcTimeValue() {
153
+ return IfcTimeValue.of(this.getTimeAsString() + this.getTimeZoneAsString());
154
+ }
155
+ toIfcTimeStampValue() {
156
+ return IfcTimeStampValue.of(this.getTimeStampSeconds());
157
+ }
158
+ addDuration(duration) {
159
+ const resultDate = new Date(this.utcDateValue.getTime());
160
+ const accumulatedFractions = this.secondFraction.add(duration.getFractionAsSeconds());
161
+ const newSecondFraction = accumulatedFractions.minus(accumulatedFractions.divToInt(1));
162
+ resultDate.setUTCSeconds(resultDate.getUTCSeconds() + accumulatedFractions.divToInt(1).toNumber());
163
+ resultDate.setUTCSeconds(resultDate.getUTCSeconds() + duration.getSeconds().divToInt(1).toNumber());
164
+ resultDate.setUTCMinutes(resultDate.getUTCMinutes() + duration.getMinutes().divToInt(1).toNumber());
165
+ resultDate.setUTCHours(resultDate.getUTCHours() + duration.getHours().divToInt(1).toNumber());
166
+ resultDate.setUTCDate(resultDate.getUTCDate() + duration.getDays().divToInt(1).toNumber());
167
+ resultDate.setUTCDate(resultDate.getUTCDate() +
168
+ duration.getWeeks().divToInt(1).times(7).toNumber());
169
+ resultDate.setUTCMonth(resultDate.getUTCMonth() + duration.getMonths().divToInt(1).toNumber());
170
+ resultDate.setUTCFullYear(resultDate.getUTCFullYear() + duration.getYears().divToInt(1).toNumber());
171
+ return new IfcDateTimeValue({
172
+ utcDate: resultDate,
173
+ secondFraction: newSecondFraction,
174
+ originalTimeZoneHours: this.originalTimeZoneHours,
175
+ originalTimeZoneMinutes: this.originalTimeZoneMinutes,
176
+ });
177
+ }
178
+ }
179
+ IfcDateTimeValue.regex = /^([+\-]?(?:[1-9]\d*)?\d{4}(?<!0000))-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|(?<=23:59:)60)(\.\d+)?(Z|([+\-])(0[0-9]|1[0-2])(?::?([0-5][0-9]))?)?$/;
180
+ export function isParsedIfcDateTimeValue(arg) {
181
+ return (!isNullish(arg.utcDate) &&
182
+ !isNullish(arg.secondFraction) &&
183
+ !isNullish(arg.originalTimeZoneHours) &&
184
+ !isNullish(arg.originalTimeZoneMinutes));
185
+ }
186
+ //# sourceMappingURL=IfcDateTimeValue.js.map