ifc-expressions 2.1.1 → 2.3.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 (208) hide show
  1. package/README.md +9 -1
  2. package/dist/IfcExpression.d.ts +6 -1
  3. package/dist/cjs/E.js.map +1 -1
  4. package/dist/cjs/IfcExpression.js +11 -1
  5. package/dist/cjs/IfcExpression.js.map +1 -1
  6. package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
  7. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  8. package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
  9. package/dist/cjs/error/SpuriousFunctionArgumentException.js.map +1 -1
  10. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
  11. package/dist/cjs/error/value/DateFormatException.js +10 -0
  12. package/dist/cjs/error/value/DateFormatException.js.map +1 -0
  13. package/dist/cjs/expression/boolean/AndExpr.js.map +1 -1
  14. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
  15. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
  16. package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
  17. package/dist/cjs/expression/boolean/OrExpr.js.map +1 -1
  18. package/dist/cjs/expression/boolean/XorExpr.js.map +1 -1
  19. package/dist/cjs/expression/function/Func.js +2 -0
  20. package/dist/cjs/expression/function/Func.js.map +1 -1
  21. package/dist/cjs/expression/function/IfcExpressionFunctions.js +12 -0
  22. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  23. package/dist/cjs/expression/function/arg/FuncArgArray.js.map +1 -1
  24. package/dist/cjs/expression/function/arg/FuncArgBase.js +9 -2
  25. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
  26. package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js +34 -0
  27. package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
  28. package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js +27 -0
  29. package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
  30. package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js +35 -0
  31. package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
  32. package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js +27 -0
  33. package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
  34. package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js +30 -0
  35. package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
  36. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js +27 -0
  37. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
  38. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +28 -0
  39. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
  40. package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js +34 -0
  41. package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
  42. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
  43. package/dist/cjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
  44. package/dist/cjs/expression/function/arg/FuncArgUnion.js +32 -0
  45. package/dist/cjs/expression/function/arg/FuncArgUnion.js.map +1 -0
  46. package/dist/cjs/expression/function/impl/ADDDURATION.js +53 -0
  47. package/dist/cjs/expression/function/impl/ADDDURATION.js.map +1 -0
  48. package/dist/cjs/expression/function/impl/AT.js.map +1 -1
  49. package/dist/cjs/expression/function/impl/ApplyRegex.js.map +1 -1
  50. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  51. package/dist/cjs/expression/function/impl/IF.js.map +1 -1
  52. package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
  53. package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -1
  54. package/dist/cjs/expression/function/impl/SPLIT.js.map +1 -1
  55. package/dist/cjs/expression/function/impl/SUBSTRING.js.map +1 -1
  56. package/dist/cjs/expression/function/impl/TOBOOLEAN.js +0 -1
  57. package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  58. package/dist/cjs/expression/function/impl/TOIFCDATE.js +33 -0
  59. package/dist/cjs/expression/function/impl/TOIFCDATE.js.map +1 -0
  60. package/dist/cjs/expression/function/impl/TOIFCDATETIME.js +36 -0
  61. package/dist/cjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
  62. package/dist/cjs/expression/function/impl/TOIFCDURATION.js +21 -0
  63. package/dist/cjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
  64. package/dist/cjs/expression/function/impl/TOIFCTIME.js +33 -0
  65. package/dist/cjs/expression/function/impl/TOIFCTIME.js.map +1 -0
  66. package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js +36 -0
  67. package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
  68. package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -1
  69. package/dist/cjs/expression/function/impl/TONUMERIC.js +0 -1
  70. package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
  71. package/dist/cjs/type/Types.js +35 -0
  72. package/dist/cjs/type/Types.js.map +1 -1
  73. package/dist/cjs/util/TextSpan.js +0 -1
  74. package/dist/cjs/util/TextSpan.js.map +1 -1
  75. package/dist/cjs/value/BooleanValue.js.map +1 -1
  76. package/dist/cjs/value/ExpressionValue.js.map +1 -1
  77. package/dist/cjs/value/IfcDateTimeValue.js +194 -0
  78. package/dist/cjs/value/IfcDateTimeValue.js.map +1 -0
  79. package/dist/cjs/value/IfcDateValue.js +68 -0
  80. package/dist/cjs/value/IfcDateValue.js.map +1 -0
  81. package/dist/cjs/value/IfcDurationValue.js +149 -0
  82. package/dist/cjs/value/IfcDurationValue.js.map +1 -0
  83. package/dist/cjs/value/IfcTimeStampValue.js +62 -0
  84. package/dist/cjs/value/IfcTimeStampValue.js.map +1 -0
  85. package/dist/cjs/value/IfcTimeValue.js +93 -0
  86. package/dist/cjs/value/IfcTimeValue.js.map +1 -0
  87. package/dist/cjs/value/LogicalValue.js.map +1 -1
  88. package/dist/cjs/value/Value.js.map +1 -1
  89. package/dist/cjs/value/ValueType.js +3 -0
  90. package/dist/cjs/value/ValueType.js.map +1 -0
  91. package/dist/error/value/DateFormatException.d.ts +3 -0
  92. package/dist/expression/function/Func.d.ts +3 -0
  93. package/dist/expression/function/arg/FuncArgBase.d.ts +1 -0
  94. package/dist/expression/function/arg/FuncArgIfcDateString.d.ts +11 -0
  95. package/dist/expression/function/arg/FuncArgIfcDateTime.d.ts +11 -0
  96. package/dist/expression/function/arg/FuncArgIfcDateTimeString.d.ts +11 -0
  97. package/dist/expression/function/arg/FuncArgIfcDuration.d.ts +11 -0
  98. package/dist/expression/function/arg/FuncArgIfcDurationString.d.ts +11 -0
  99. package/dist/expression/function/arg/FuncArgIfcTimeStamp.d.ts +11 -0
  100. package/dist/expression/function/arg/FuncArgIfcTimeStampNumeric.d.ts +11 -0
  101. package/dist/expression/function/arg/FuncArgIfcTimeString.d.ts +11 -0
  102. package/dist/expression/function/arg/FuncArgUnion.d.ts +14 -0
  103. package/dist/expression/function/impl/ADDDURATION.d.ts +10 -0
  104. package/dist/expression/function/impl/TOBOOLEAN.d.ts +0 -1
  105. package/dist/expression/function/impl/TOIFCDATE.d.ts +10 -0
  106. package/dist/expression/function/impl/TOIFCDATETIME.d.ts +10 -0
  107. package/dist/expression/function/impl/TOIFCDURATION.d.ts +10 -0
  108. package/dist/expression/function/impl/TOIFCTIME.d.ts +10 -0
  109. package/dist/expression/function/impl/TOIFCTIMESTAMP.d.ts +10 -0
  110. package/dist/expression/function/impl/TONUMERIC.d.ts +0 -1
  111. package/dist/mjs/E.js.map +1 -1
  112. package/dist/mjs/IfcExpression.js +6 -1
  113. package/dist/mjs/IfcExpression.js.map +1 -1
  114. package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
  115. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  116. package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
  117. package/dist/mjs/error/SpuriousFunctionArgumentException.js.map +1 -1
  118. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
  119. package/dist/mjs/error/value/DateFormatException.js +6 -0
  120. package/dist/mjs/error/value/DateFormatException.js.map +1 -0
  121. package/dist/mjs/expression/boolean/AndExpr.js.map +1 -1
  122. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
  123. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
  124. package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
  125. package/dist/mjs/expression/boolean/OrExpr.js.map +1 -1
  126. package/dist/mjs/expression/boolean/XorExpr.js.map +1 -1
  127. package/dist/mjs/expression/function/Func.js +2 -0
  128. package/dist/mjs/expression/function/Func.js.map +1 -1
  129. package/dist/mjs/expression/function/IfcExpressionFunctions.js +12 -0
  130. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  131. package/dist/mjs/expression/function/arg/FuncArgArray.js.map +1 -1
  132. package/dist/mjs/expression/function/arg/FuncArgBase.js +10 -3
  133. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
  134. package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js +30 -0
  135. package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
  136. package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js +23 -0
  137. package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
  138. package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js +31 -0
  139. package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
  140. package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js +23 -0
  141. package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
  142. package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js +26 -0
  143. package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
  144. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js +23 -0
  145. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
  146. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +24 -0
  147. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
  148. package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js +30 -0
  149. package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
  150. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
  151. package/dist/mjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
  152. package/dist/mjs/expression/function/arg/FuncArgUnion.js +28 -0
  153. package/dist/mjs/expression/function/arg/FuncArgUnion.js.map +1 -0
  154. package/dist/mjs/expression/function/impl/ADDDURATION.js +49 -0
  155. package/dist/mjs/expression/function/impl/ADDDURATION.js.map +1 -0
  156. package/dist/mjs/expression/function/impl/AT.js.map +1 -1
  157. package/dist/mjs/expression/function/impl/ApplyRegex.js.map +1 -1
  158. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  159. package/dist/mjs/expression/function/impl/IF.js.map +1 -1
  160. package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
  161. package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -1
  162. package/dist/mjs/expression/function/impl/SPLIT.js.map +1 -1
  163. package/dist/mjs/expression/function/impl/SUBSTRING.js.map +1 -1
  164. package/dist/mjs/expression/function/impl/TOBOOLEAN.js +0 -1
  165. package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  166. package/dist/mjs/expression/function/impl/TOIFCDATE.js +29 -0
  167. package/dist/mjs/expression/function/impl/TOIFCDATE.js.map +1 -0
  168. package/dist/mjs/expression/function/impl/TOIFCDATETIME.js +32 -0
  169. package/dist/mjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
  170. package/dist/mjs/expression/function/impl/TOIFCDURATION.js +17 -0
  171. package/dist/mjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
  172. package/dist/mjs/expression/function/impl/TOIFCTIME.js +29 -0
  173. package/dist/mjs/expression/function/impl/TOIFCTIME.js.map +1 -0
  174. package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js +32 -0
  175. package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
  176. package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -1
  177. package/dist/mjs/expression/function/impl/TONUMERIC.js +0 -1
  178. package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
  179. package/dist/mjs/type/Types.js +35 -0
  180. package/dist/mjs/type/Types.js.map +1 -1
  181. package/dist/mjs/util/TextSpan.js +0 -1
  182. package/dist/mjs/util/TextSpan.js.map +1 -1
  183. package/dist/mjs/value/BooleanValue.js.map +1 -1
  184. package/dist/mjs/value/ExpressionValue.js.map +1 -1
  185. package/dist/mjs/value/IfcDateTimeValue.js +186 -0
  186. package/dist/mjs/value/IfcDateTimeValue.js.map +1 -0
  187. package/dist/mjs/value/IfcDateValue.js +64 -0
  188. package/dist/mjs/value/IfcDateValue.js.map +1 -0
  189. package/dist/mjs/value/IfcDurationValue.js +142 -0
  190. package/dist/mjs/value/IfcDurationValue.js.map +1 -0
  191. package/dist/mjs/value/IfcTimeStampValue.js +58 -0
  192. package/dist/mjs/value/IfcTimeStampValue.js.map +1 -0
  193. package/dist/mjs/value/IfcTimeValue.js +86 -0
  194. package/dist/mjs/value/IfcTimeValue.js.map +1 -0
  195. package/dist/mjs/value/LogicalValue.js.map +1 -1
  196. package/dist/mjs/value/Value.js.map +1 -1
  197. package/dist/mjs/value/ValueType.js +2 -0
  198. package/dist/mjs/value/ValueType.js.map +1 -0
  199. package/dist/type/Types.d.ts +15 -0
  200. package/dist/value/ExpressionValue.d.ts +6 -1
  201. package/dist/value/IfcDateTimeValue.d.ts +44 -0
  202. package/dist/value/IfcDateValue.d.ts +24 -0
  203. package/dist/value/IfcDurationValue.d.ts +53 -0
  204. package/dist/value/IfcTimeStampValue.d.ts +18 -0
  205. package/dist/value/IfcTimeValue.d.ts +27 -0
  206. package/dist/value/Value.d.ts +2 -1
  207. package/dist/value/ValueType.d.ts +6 -0
  208. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/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":["../../src/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":["../../src/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":["../../src/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,194 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isParsedIfcDateTimeValue = exports.IfcDateTimeValue = void 0;
7
+ const Types_js_1 = require("../type/Types.js");
8
+ const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js");
9
+ const DateFormatException_js_1 = require("../error/value/DateFormatException.js");
10
+ const decimal_js_1 = __importDefault(require("decimal.js"));
11
+ const IfcDateValue_js_1 = require("./IfcDateValue.js");
12
+ const IfcTimeValue_js_1 = require("./IfcTimeValue.js");
13
+ const IfcTimeStampValue_js_1 = require("./IfcTimeStampValue.js");
14
+ class IfcDateTimeValue {
15
+ constructor(value) {
16
+ if (typeof value === "string") {
17
+ var parsed = IfcDateTimeValue.parseIfcDate(value);
18
+ this.utcDateValue = parsed.utcDate;
19
+ this.originalTimeZoneHours = parsed.originalTimeZoneHours;
20
+ this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;
21
+ this.secondFraction = parsed.secondFraction;
22
+ }
23
+ else if (typeof value === "number" || value instanceof decimal_js_1.default) {
24
+ let timeStampSeconds = value;
25
+ if (value instanceof decimal_js_1.default) {
26
+ timeStampSeconds = value.round().toNumber();
27
+ }
28
+ this.utcDateValue = new Date(timeStampSeconds);
29
+ this.originalTimeZoneHours = 0;
30
+ this.originalTimeZoneMinutes = 0;
31
+ this.secondFraction = new decimal_js_1.default(0);
32
+ }
33
+ else if (value instanceof IfcDateTimeValue) {
34
+ this.utcDateValue = value.utcDateValue;
35
+ this.originalTimeZoneMinutes = value.originalTimeZoneMinutes;
36
+ this.originalTimeZoneHours = value.originalTimeZoneHours;
37
+ this.secondFraction = value.secondFraction;
38
+ }
39
+ else if (isParsedIfcDateTimeValue(value)) {
40
+ this.utcDateValue = value.utcDate;
41
+ this.secondFraction = value.secondFraction;
42
+ this.originalTimeZoneHours = value.originalTimeZoneHours;
43
+ this.originalTimeZoneMinutes = value.originalTimeZoneMinutes;
44
+ }
45
+ this.stringRepresentation = this.toCanonicalString();
46
+ }
47
+ static parseIfcDate(value) {
48
+ decimal_js_1.default.set({ defaults: true });
49
+ let match = value.match(this.regex);
50
+ if ((0, IfcExpressionUtils_js_1.isNullish)(match)) {
51
+ throw new DateFormatException_js_1.DateFormatException("Not an IfcDateTime: " + value);
52
+ }
53
+ let [wholeString, year, month, day, hours, minutes, seconds, fractionSeconds, timeZoneWhole, timeZoneSign, timeZoneHours, timeZoneMinutes,] = match;
54
+ var utcDate = new Date(0);
55
+ utcDate.setUTCFullYear(Number.parseInt(year));
56
+ utcDate.setUTCMonth(Number.parseInt(month) - 1);
57
+ utcDate.setUTCDate(Number.parseInt(day));
58
+ utcDate.setUTCHours(Number.parseInt(hours));
59
+ utcDate.setUTCMinutes(Number.parseInt(minutes));
60
+ utcDate.setUTCSeconds(Number.parseInt(seconds));
61
+ var secondFraction = (0, IfcExpressionUtils_js_1.isNullish)(fractionSeconds)
62
+ ? new decimal_js_1.default("0")
63
+ : new decimal_js_1.default("0" + fractionSeconds); //arbitrary precision fractions (to the precision of Decimal.precision)
64
+ var originalZoneSign = (0, IfcExpressionUtils_js_1.isNullish)(timeZoneSign)
65
+ ? 0
66
+ : timeZoneSign === "+"
67
+ ? 1
68
+ : -1;
69
+ var originalTimeZoneHours = originalZoneSign *
70
+ ((0, IfcExpressionUtils_js_1.isNullish)(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));
71
+ var originalTimeZoneMinutes = originalZoneSign *
72
+ ((0, IfcExpressionUtils_js_1.isNullish)(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));
73
+ utcDate.setUTCHours(utcDate.getUTCHours() - originalTimeZoneHours);
74
+ utcDate.setUTCMinutes(utcDate.getUTCMinutes() - originalTimeZoneMinutes);
75
+ return {
76
+ utcDate,
77
+ secondFraction,
78
+ originalTimeZoneHours,
79
+ originalTimeZoneMinutes,
80
+ };
81
+ }
82
+ static of(value) {
83
+ return new IfcDateTimeValue(value);
84
+ }
85
+ getTimeAsString() {
86
+ const fraction = (0, IfcExpressionUtils_js_1.isNullish)(this.secondFraction)
87
+ ? ""
88
+ : this.secondFraction.isZero()
89
+ ? ""
90
+ : this.secondFraction.toString().substring(1);
91
+ return `${this.pad00(this.utcDateValue.getUTCHours() + this.originalTimeZoneHours)}:${this.pad00(this.utcDateValue.getUTCMinutes() + this.originalTimeZoneMinutes)}:${this.pad00(this.utcDateValue.getUTCSeconds())}${fraction}`;
92
+ }
93
+ pad00(num) {
94
+ return ("" + num).padStart(2, "0");
95
+ }
96
+ getDateAsString() {
97
+ return `${this.utcDateValue.getUTCFullYear()}-${this.pad00(this.utcDateValue.getUTCMonth() + 1)}-${this.pad00(this.utcDateValue.getUTCDate())}`;
98
+ }
99
+ getTimeZoneAsString() {
100
+ if (this.originalTimeZoneMinutes === 0 &&
101
+ this.originalTimeZoneHours === 0) {
102
+ return "Z";
103
+ }
104
+ const sign = this.originalTimeZoneHours >= 0 && this.originalTimeZoneMinutes >= 0
105
+ ? "+"
106
+ : "-";
107
+ return `${sign}${this.pad00(Math.abs(this.originalTimeZoneHours))}:${this.pad00(Math.abs(this.originalTimeZoneMinutes))}`;
108
+ }
109
+ getTimeStampSeconds() {
110
+ return new decimal_js_1.default(this.utcDateValue.getTime()).divToInt(1000);
111
+ }
112
+ getValue() {
113
+ return this;
114
+ }
115
+ getType() {
116
+ return Types_js_1.Type.IFC_DATE_TIME;
117
+ }
118
+ static isIfcDateTimeValueType(arg) {
119
+ return (arg instanceof IfcDateTimeValue ||
120
+ (!(0, IfcExpressionUtils_js_1.isNullish)(arg.stringRepresentation) &&
121
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.stringRepresentation.match(IfcDateTimeValue.regex))));
122
+ }
123
+ static isValidStringRepresentation(str) {
124
+ return this.regex.test(str);
125
+ }
126
+ equals(other) {
127
+ return (IfcDateTimeValue.isIfcDateTimeValueType(other) &&
128
+ this.utcDateValue.getTime() === other.utcDateValue.getTime() &&
129
+ this.secondFraction.eq(other.secondFraction));
130
+ }
131
+ toCanonicalString() {
132
+ return (this.getDateAsString() +
133
+ "T" +
134
+ this.getTimeAsString() +
135
+ this.getTimeZoneAsString());
136
+ }
137
+ toString() {
138
+ return this.stringRepresentation;
139
+ }
140
+ compareTo(other) {
141
+ var diff = this.utcDateValue.getTime() - other.utcDateValue.getTime();
142
+ if (diff != 0) {
143
+ return diff;
144
+ }
145
+ return decimal_js_1.default.sign(this.secondFraction.minus(other.secondFraction));
146
+ }
147
+ static ofTimeStampSeconds(timeStampSeconds) {
148
+ var timeStampMillis = timeStampSeconds;
149
+ if (timeStampSeconds instanceof decimal_js_1.default) {
150
+ timeStampMillis = timeStampSeconds.round().toNumber();
151
+ }
152
+ timeStampMillis = timeStampMillis * 1000;
153
+ return new IfcDateTimeValue(timeStampMillis);
154
+ }
155
+ toIfcDateValue() {
156
+ return IfcDateValue_js_1.IfcDateValue.of(this.getDateAsString() + this.getTimeZoneAsString());
157
+ }
158
+ toIfcTimeValue() {
159
+ return IfcTimeValue_js_1.IfcTimeValue.of(this.getTimeAsString() + this.getTimeZoneAsString());
160
+ }
161
+ toIfcTimeStampValue() {
162
+ return IfcTimeStampValue_js_1.IfcTimeStampValue.of(this.getTimeStampSeconds());
163
+ }
164
+ addDuration(duration) {
165
+ const resultDate = new Date(this.utcDateValue.getTime());
166
+ const accumulatedFractions = this.secondFraction.add(duration.getFractionAsSeconds());
167
+ const newSecondFraction = accumulatedFractions.minus(accumulatedFractions.divToInt(1));
168
+ resultDate.setUTCSeconds(resultDate.getUTCSeconds() + accumulatedFractions.divToInt(1).toNumber());
169
+ resultDate.setUTCSeconds(resultDate.getUTCSeconds() + duration.getSeconds().divToInt(1).toNumber());
170
+ resultDate.setUTCMinutes(resultDate.getUTCMinutes() + duration.getMinutes().divToInt(1).toNumber());
171
+ resultDate.setUTCHours(resultDate.getUTCHours() + duration.getHours().divToInt(1).toNumber());
172
+ resultDate.setUTCDate(resultDate.getUTCDate() + duration.getDays().divToInt(1).toNumber());
173
+ resultDate.setUTCDate(resultDate.getUTCDate() +
174
+ duration.getWeeks().divToInt(1).times(7).toNumber());
175
+ resultDate.setUTCMonth(resultDate.getUTCMonth() + duration.getMonths().divToInt(1).toNumber());
176
+ resultDate.setUTCFullYear(resultDate.getUTCFullYear() + duration.getYears().divToInt(1).toNumber());
177
+ return new IfcDateTimeValue({
178
+ utcDate: resultDate,
179
+ secondFraction: newSecondFraction,
180
+ originalTimeZoneHours: this.originalTimeZoneHours,
181
+ originalTimeZoneMinutes: this.originalTimeZoneMinutes,
182
+ });
183
+ }
184
+ }
185
+ exports.IfcDateTimeValue = IfcDateTimeValue;
186
+ 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]))?)?$/;
187
+ function isParsedIfcDateTimeValue(arg) {
188
+ return (!(0, IfcExpressionUtils_js_1.isNullish)(arg.utcDate) &&
189
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.secondFraction) &&
190
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.originalTimeZoneHours) &&
191
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.originalTimeZoneMinutes));
192
+ }
193
+ exports.isParsedIfcDateTimeValue = isParsedIfcDateTimeValue;
194
+ //# sourceMappingURL=IfcDateTimeValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/value/IfcDateTimeValue.ts"],"names":[],"mappings":"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","file":"value/IfcDateTimeValue.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 { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { DateFormatException } from \"../error/value/DateFormatException.js\";\nimport Decimal from \"decimal.js\";\nimport { IfcDateValue } from \"./IfcDateValue.js\";\nimport { IfcTimeValue } from \"./IfcTimeValue.js\";\nimport { IfcTimeStampValue } from \"./IfcTimeStampValue.js\";\nimport { IfcDurationValue } from \"./IfcDurationValue.js\";\n\nexport class IfcDateTimeValue\n implements Value<IfcDateTimeValue>, Comparable<IfcDateTimeValue>\n{\n private readonly utcDateValue: Date;\n private readonly stringRepresentation;\n private readonly originalTimeZoneHours: number; // hours ahead of (+) or behind (-) UTC\n private readonly originalTimeZoneMinutes: number; // minutes ahead of (+) or behind (-) UTC\n private readonly secondFraction: Decimal;\n private static readonly regex =\n /^([+\\-]?(?:[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]))?)?$/;\n\n constructor(\n value: string | number | Decimal | IfcDateTimeValue | ParsedIfcDateTimeValue\n ) {\n if (typeof value === \"string\") {\n var parsed = IfcDateTimeValue.parseIfcDate(value);\n this.utcDateValue = parsed.utcDate;\n this.originalTimeZoneHours = parsed.originalTimeZoneHours;\n this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;\n this.secondFraction = parsed.secondFraction;\n } else if (typeof value === \"number\" || value instanceof Decimal) {\n let timeStampSeconds = value;\n if (value instanceof Decimal) {\n timeStampSeconds = (value as Decimal).round().toNumber();\n }\n this.utcDateValue = new Date(timeStampSeconds as number);\n this.originalTimeZoneHours = 0;\n this.originalTimeZoneMinutes = 0;\n this.secondFraction = new Decimal(0);\n } else if (value instanceof IfcDateTimeValue) {\n this.utcDateValue = value.utcDateValue;\n this.originalTimeZoneMinutes = value.originalTimeZoneMinutes;\n this.originalTimeZoneHours = value.originalTimeZoneHours;\n this.secondFraction = value.secondFraction;\n } else if (isParsedIfcDateTimeValue(value)) {\n this.utcDateValue = value.utcDate;\n this.secondFraction = value.secondFraction;\n this.originalTimeZoneHours = value.originalTimeZoneHours;\n this.originalTimeZoneMinutes = value.originalTimeZoneMinutes;\n }\n this.stringRepresentation = this.toCanonicalString();\n }\n\n public static parseIfcDate(value: string): ParsedIfcDateTimeValue {\n Decimal.set({ defaults: true });\n let match = value.match(this.regex);\n if (isNullish(match)) {\n throw new DateFormatException(\"Not an IfcDateTime: \" + value);\n }\n let [\n wholeString,\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n fractionSeconds,\n timeZoneWhole,\n timeZoneSign,\n timeZoneHours,\n timeZoneMinutes,\n ] = match;\n var utcDate = new Date(0);\n utcDate.setUTCFullYear(Number.parseInt(year));\n utcDate.setUTCMonth(Number.parseInt(month) - 1);\n utcDate.setUTCDate(Number.parseInt(day));\n utcDate.setUTCHours(Number.parseInt(hours));\n utcDate.setUTCMinutes(Number.parseInt(minutes));\n utcDate.setUTCSeconds(Number.parseInt(seconds));\n var secondFraction = isNullish(fractionSeconds)\n ? new Decimal(\"0\")\n : new Decimal(\"0\" + fractionSeconds); //arbitrary precision fractions (to the precision of Decimal.precision)\n var originalZoneSign = isNullish(timeZoneSign)\n ? 0\n : timeZoneSign === \"+\"\n ? 1\n : -1;\n var originalTimeZoneHours =\n originalZoneSign *\n (isNullish(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));\n var originalTimeZoneMinutes =\n originalZoneSign *\n (isNullish(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));\n utcDate.setUTCHours(utcDate.getUTCHours() - originalTimeZoneHours);\n utcDate.setUTCMinutes(utcDate.getUTCMinutes() - originalTimeZoneMinutes);\n return {\n utcDate,\n secondFraction,\n originalTimeZoneHours,\n originalTimeZoneMinutes,\n };\n }\n\n public static of(value: string): IfcDateTimeValue {\n return new IfcDateTimeValue(value);\n }\n\n private getTimeAsString() {\n const fraction = isNullish(this.secondFraction)\n ? \"\"\n : this.secondFraction.isZero()\n ? \"\"\n : this.secondFraction.toString().substring(1);\n return `${this.pad00(\n this.utcDateValue.getUTCHours() + this.originalTimeZoneHours\n )}:${this.pad00(\n this.utcDateValue.getUTCMinutes() + this.originalTimeZoneMinutes\n )}:${this.pad00(this.utcDateValue.getUTCSeconds())}${fraction}`;\n }\n\n private pad00(num: number): string {\n return (\"\" + num).padStart(2, \"0\");\n }\n\n private getDateAsString() {\n return `${this.utcDateValue.getUTCFullYear()}-${this.pad00(\n this.utcDateValue.getUTCMonth() + 1\n )}-${this.pad00(this.utcDateValue.getUTCDate())}`;\n }\n\n getTimeZoneAsString(): String {\n if (\n this.originalTimeZoneMinutes === 0 &&\n this.originalTimeZoneHours === 0\n ) {\n return \"Z\";\n }\n const sign =\n this.originalTimeZoneHours >= 0 && this.originalTimeZoneMinutes >= 0\n ? \"+\"\n : \"-\";\n return `${sign}${this.pad00(\n Math.abs(this.originalTimeZoneHours)\n )}:${this.pad00(Math.abs(this.originalTimeZoneMinutes))}`;\n }\n\n private getTimeStampSeconds(): Decimal {\n return new Decimal(this.utcDateValue.getTime()).divToInt(1000);\n }\n\n getValue(): IfcDateTimeValue {\n return this;\n }\n\n getType(): ExprType {\n return Type.IFC_DATE_TIME;\n }\n\n static isIfcDateTimeValueType(arg: any): arg is IfcDateTimeValue {\n return (\n arg instanceof IfcDateTimeValue ||\n (!isNullish(arg.stringRepresentation) &&\n !isNullish(arg.stringRepresentation.match(IfcDateTimeValue.regex)))\n );\n }\n\n public static isValidStringRepresentation(str: string): boolean {\n return this.regex.test(str);\n }\n\n equals(other: Value<any>): boolean {\n return (\n IfcDateTimeValue.isIfcDateTimeValueType(other) &&\n this.utcDateValue.getTime() === other.utcDateValue.getTime() &&\n this.secondFraction.eq(other.secondFraction)\n );\n }\n\n private toCanonicalString(): string {\n return (\n this.getDateAsString() +\n \"T\" +\n this.getTimeAsString() +\n this.getTimeZoneAsString()\n );\n }\n\n toString(): string {\n return this.stringRepresentation;\n }\n\n compareTo(other: IfcDateTimeValue): number {\n var diff = this.utcDateValue.getTime() - other.utcDateValue.getTime();\n if (diff != 0) {\n return diff;\n }\n return Decimal.sign(this.secondFraction.minus(other.secondFraction));\n }\n\n static ofTimeStampSeconds(timeStampSeconds: Decimal | number) {\n var timeStampMillis = timeStampSeconds;\n if (timeStampSeconds instanceof Decimal) {\n timeStampMillis = timeStampSeconds.round().toNumber();\n }\n timeStampMillis = (timeStampMillis as number) * 1000;\n return new IfcDateTimeValue(timeStampMillis);\n }\n\n toIfcDateValue(): IfcDateValue {\n return IfcDateValue.of(this.getDateAsString() + this.getTimeZoneAsString());\n }\n\n toIfcTimeValue(): IfcTimeValue {\n return IfcTimeValue.of(this.getTimeAsString() + this.getTimeZoneAsString());\n }\n\n toIfcTimeStampValue(): IfcTimeStampValue {\n return IfcTimeStampValue.of(this.getTimeStampSeconds());\n }\n\n addDuration(duration: IfcDurationValue): IfcDateTimeValue {\n const resultDate = new Date(this.utcDateValue.getTime());\n const accumulatedFractions = this.secondFraction.add(\n duration.getFractionAsSeconds()\n );\n const newSecondFraction = accumulatedFractions.minus(\n accumulatedFractions.divToInt(1)\n );\n resultDate.setUTCSeconds(\n resultDate.getUTCSeconds() + accumulatedFractions.divToInt(1).toNumber()\n );\n resultDate.setUTCSeconds(\n resultDate.getUTCSeconds() + duration.getSeconds().divToInt(1).toNumber()\n );\n resultDate.setUTCMinutes(\n resultDate.getUTCMinutes() + duration.getMinutes().divToInt(1).toNumber()\n );\n resultDate.setUTCHours(\n resultDate.getUTCHours() + duration.getHours().divToInt(1).toNumber()\n );\n resultDate.setUTCDate(\n resultDate.getUTCDate() + duration.getDays().divToInt(1).toNumber()\n );\n resultDate.setUTCDate(\n resultDate.getUTCDate() +\n duration.getWeeks().divToInt(1).times(7).toNumber()\n );\n resultDate.setUTCMonth(\n resultDate.getUTCMonth() + duration.getMonths().divToInt(1).toNumber()\n );\n resultDate.setUTCFullYear(\n resultDate.getUTCFullYear() + duration.getYears().divToInt(1).toNumber()\n );\n return new IfcDateTimeValue({\n utcDate: resultDate,\n secondFraction: newSecondFraction,\n originalTimeZoneHours: this.originalTimeZoneHours,\n originalTimeZoneMinutes: this.originalTimeZoneMinutes,\n });\n }\n}\n\nexport type ParsedIfcDateTimeValue = {\n utcDate: Date;\n secondFraction: Decimal;\n originalTimeZoneHours?: number;\n originalTimeZoneMinutes?: number;\n};\n\nexport function isParsedIfcDateTimeValue(\n arg: any\n): arg is ParsedIfcDateTimeValue {\n return (\n !isNullish(arg.utcDate) &&\n !isNullish(arg.secondFraction) &&\n !isNullish(arg.originalTimeZoneHours) &&\n !isNullish(arg.originalTimeZoneMinutes)\n );\n}\n"]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcDateValue = void 0;
4
+ const Types_js_1 = require("../type/Types.js");
5
+ const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js");
6
+ const DateFormatException_js_1 = require("../error/value/DateFormatException.js");
7
+ class IfcDateValue {
8
+ constructor(value) {
9
+ var parsed = IfcDateValue.parseIfcDate(value);
10
+ this.utcDateValue = parsed.utcDate;
11
+ this.originalTimeZoneHours = parsed.originalTimeZoneHours;
12
+ this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;
13
+ this.stringRepresentation = value;
14
+ }
15
+ static parseIfcDate(value) {
16
+ let match = value.match(this.regex);
17
+ if ((0, IfcExpressionUtils_js_1.isNullish)(match)) {
18
+ throw new DateFormatException_js_1.DateFormatException("Not an IfcDate: " + value);
19
+ }
20
+ let [wholeString, year, month, day, timeZoneWhole, timeZoneSign, timeZoneHours, timeZoneMinutes,] = match;
21
+ var utcDate = new Date(0);
22
+ utcDate.setUTCFullYear(Number.parseInt(year));
23
+ utcDate.setUTCMonth(Number.parseInt(month) - 1);
24
+ utcDate.setUTCDate(Number.parseInt(day));
25
+ var originalZoneSign = (0, IfcExpressionUtils_js_1.isNullish)(timeZoneSign)
26
+ ? 0
27
+ : timeZoneSign === "+"
28
+ ? -1
29
+ : +1; //why? Beause +1 means 1 hour ahead of UTC, so we have to subtract 1 to get UTC
30
+ var originalTimeZoneHours = originalZoneSign *
31
+ ((0, IfcExpressionUtils_js_1.isNullish)(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));
32
+ var originalTimeZoneMinutes = originalZoneSign *
33
+ ((0, IfcExpressionUtils_js_1.isNullish)(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));
34
+ utcDate.setUTCHours(utcDate.getUTCHours() + originalTimeZoneHours);
35
+ utcDate.setUTCMinutes(utcDate.getUTCMinutes() + originalTimeZoneMinutes);
36
+ return { utcDate: utcDate, originalTimeZoneHours, originalTimeZoneMinutes };
37
+ }
38
+ static of(value) {
39
+ return new IfcDateValue(value);
40
+ }
41
+ getValue() {
42
+ return this;
43
+ }
44
+ getType() {
45
+ return Types_js_1.Type.IFC_DATE;
46
+ }
47
+ static isIfcDateValueType(arg) {
48
+ return (arg instanceof IfcDateValue ||
49
+ (!(0, IfcExpressionUtils_js_1.isNullish)(arg.stringRepresentation) &&
50
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.stringRepresentation.match(IfcDateValue.regex))));
51
+ }
52
+ static isValidStringRepresentation(str) {
53
+ return this.regex.test(str);
54
+ }
55
+ equals(other) {
56
+ return (IfcDateValue.isIfcDateValueType(other) &&
57
+ this.utcDateValue.getTime() === other.utcDateValue.getTime());
58
+ }
59
+ toString() {
60
+ return this.stringRepresentation;
61
+ }
62
+ compareTo(other) {
63
+ return this.utcDateValue.getTime() - other.utcDateValue.getTime();
64
+ }
65
+ }
66
+ exports.IfcDateValue = IfcDateValue;
67
+ IfcDateValue.regex = /^([+\-]?(?:[1-9]\d*)?\d{4}(?<!0000))-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])(Z|([+\-])(0[0-9]|1[0-2])(?::?([0-5][0-9]))?)?$/;
68
+ //# sourceMappingURL=IfcDateValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/value/IfcDateValue.ts"],"names":[],"mappings":";;;AAGA,+CAAwC;AACxC,yEAA0D;AAC1D,kFAA4E;AAE5E,MAAa,YAAY;IAUvB,YAAY,KAAa;QACvB,IAAI,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAC1D,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAC9D,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,KAAa;QAKtC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAA,iCAAS,EAAC,KAAK,CAAC,EAAE;YACpB,MAAM,IAAI,4CAAmB,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC;SAC3D;QACD,IAAI,CACF,WAAW,EACX,IAAI,EACJ,KAAK,EACL,GAAG,EACH,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,GAAG,KAAK,CAAC;QACV,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,gBAAgB,GAAG,IAAA,iCAAS,EAAC,YAAY,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,YAAY,KAAK,GAAG;gBACtB,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E;QACvF,IAAI,qBAAqB,GACvB,gBAAgB;YAChB,CAAC,IAAA,iCAAS,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAClE,IAAI,uBAAuB,GACzB,gBAAgB;YAChB,CAAC,IAAA,iCAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,qBAAqB,CAAC,CAAC;QACnE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,uBAAuB,CAAC,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAQ;QAChC,OAAO,CACL,GAAG,YAAY,YAAY;YAC3B,CAAC,CAAC,IAAA,iCAAS,EAAC,GAAG,CAAC,oBAAoB,CAAC;gBACnC,CAAC,IAAA,iCAAS,EAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,GAAW;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACpE,CAAC;;AA9FH,oCA+FC;AAxFyB,kBAAK,GAC3B,8HAA8H,CAAC","file":"value/IfcDateValue.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 { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { DateFormatException } from \"../error/value/DateFormatException.js\";\n\nexport class IfcDateValue\n implements Value<IfcDateValue>, Comparable<IfcDateValue>\n{\n private readonly utcDateValue: Date;\n private readonly stringRepresentation;\n private readonly originalTimeZoneHours: number; // hours ahead of (+) or behind (-) UTC\n private readonly originalTimeZoneMinutes: number; // minutes ahead of (+) or behind (-) UTC\n private static readonly regex =\n /^([+\\-]?(?:[1-9]\\d*)?\\d{4}(?<!0000))-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])(Z|([+\\-])(0[0-9]|1[0-2])(?::?([0-5][0-9]))?)?$/;\n\n constructor(value: string) {\n var parsed = IfcDateValue.parseIfcDate(value);\n this.utcDateValue = parsed.utcDate;\n this.originalTimeZoneHours = parsed.originalTimeZoneHours;\n this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;\n this.stringRepresentation = value;\n }\n\n public static parseIfcDate(value: string): {\n utcDate: Date;\n originalTimeZoneHours?: number;\n originalTimeZoneMinutes?: number;\n } {\n let match = value.match(this.regex);\n if (isNullish(match)) {\n throw new DateFormatException(\"Not an IfcDate: \" + value);\n }\n let [\n wholeString,\n year,\n month,\n day,\n timeZoneWhole,\n timeZoneSign,\n timeZoneHours,\n timeZoneMinutes,\n ] = match;\n var utcDate = new Date(0);\n utcDate.setUTCFullYear(Number.parseInt(year));\n utcDate.setUTCMonth(Number.parseInt(month) - 1);\n utcDate.setUTCDate(Number.parseInt(day));\n var originalZoneSign = isNullish(timeZoneSign)\n ? 0\n : timeZoneSign === \"+\"\n ? -1\n : +1; //why? Beause +1 means 1 hour ahead of UTC, so we have to subtract 1 to get UTC\n var originalTimeZoneHours =\n originalZoneSign *\n (isNullish(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));\n var originalTimeZoneMinutes =\n originalZoneSign *\n (isNullish(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));\n utcDate.setUTCHours(utcDate.getUTCHours() + originalTimeZoneHours);\n utcDate.setUTCMinutes(utcDate.getUTCMinutes() + originalTimeZoneMinutes);\n return { utcDate: utcDate, originalTimeZoneHours, originalTimeZoneMinutes };\n }\n\n public static of(value: string): IfcDateValue {\n return new IfcDateValue(value);\n }\n\n getValue(): IfcDateValue {\n return this;\n }\n\n getType(): ExprType {\n return Type.IFC_DATE;\n }\n\n static isIfcDateValueType(arg: any): arg is IfcDateValue {\n return (\n arg instanceof IfcDateValue ||\n (!isNullish(arg.stringRepresentation) &&\n !isNullish(arg.stringRepresentation.match(IfcDateValue.regex)))\n );\n }\n\n public static isValidStringRepresentation(str: string): boolean {\n return this.regex.test(str);\n }\n\n equals(other: Value<any>): boolean {\n return (\n IfcDateValue.isIfcDateValueType(other) &&\n this.utcDateValue.getTime() === other.utcDateValue.getTime()\n );\n }\n\n toString(): string {\n return this.stringRepresentation;\n }\n\n compareTo(other: IfcDateValue): number {\n return this.utcDateValue.getTime() - other.utcDateValue.getTime();\n }\n}\n"]}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IfcDurationValue = void 0;
7
+ const Types_js_1 = require("../type/Types.js");
8
+ const IfcExpressionUtils_js_1 = require("../util/IfcExpressionUtils.js");
9
+ const DateFormatException_js_1 = require("../error/value/DateFormatException.js");
10
+ const decimal_js_1 = __importDefault(require("decimal.js"));
11
+ class IfcDurationValue {
12
+ constructor(value) {
13
+ const { years, months, weeks, days, hours, minutes, seconds, fractionAsSeconds, totalSeconds, } = IfcDurationValue.parseIfcDuration(value);
14
+ this.years = years;
15
+ this.months = months;
16
+ this.weeks = weeks;
17
+ this.days = days;
18
+ this.hours = hours;
19
+ this.minutes = minutes;
20
+ this.seconds = seconds;
21
+ this.totalSeconds = totalSeconds;
22
+ this.fractionAsSeconds = fractionAsSeconds;
23
+ this.stringRepresentation = value;
24
+ }
25
+ static parseIfcDuration(value) {
26
+ decimal_js_1.default.set({ defaults: true });
27
+ let match = value.match(this.regex);
28
+ if ((0, IfcExpressionUtils_js_1.isNullish)(match)) {
29
+ throw new DateFormatException_js_1.DateFormatException("Not an IfcDateTime: " + value);
30
+ }
31
+ let [wholeString, yearsVal, monthsVal, weeksVal, daysVal, hoursVal, minutesVal, secondsVal,] = match;
32
+ var years = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(yearsVal) ? "0" : yearsVal);
33
+ var months = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(monthsVal) ? "0" : monthsVal);
34
+ var weeks = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(weeksVal) ? "0" : weeksVal);
35
+ var days = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(daysVal) ? "0" : daysVal);
36
+ var hours = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(hoursVal) ? "0" : hoursVal);
37
+ var minutes = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(minutesVal) ? "0" : minutesVal);
38
+ var seconds = new decimal_js_1.default((0, IfcExpressionUtils_js_1.isNullish)(secondsVal) ? "0" : secondsVal);
39
+ var fractionAsSeconds = IfcDurationValue.getFractionAsSeconds(years, months, weeks, days, hours, minutes, seconds);
40
+ var totalSeconds = years
41
+ .mul(IfcDurationValue.YEAR)
42
+ .plus(months.mul(IfcDurationValue.MONTH))
43
+ .plus(weeks.mul(IfcDurationValue.WEEK))
44
+ .plus(days.mul(IfcDurationValue.DAY))
45
+ .plus(hours.mul(IfcDurationValue.HOUR))
46
+ .plus(minutes.mul(IfcDurationValue.MINUTE))
47
+ .plus(seconds);
48
+ return {
49
+ years,
50
+ months,
51
+ weeks,
52
+ days,
53
+ hours,
54
+ minutes,
55
+ seconds,
56
+ fractionAsSeconds,
57
+ totalSeconds,
58
+ };
59
+ }
60
+ static getFractionAsSeconds(years, months, weeks, days, hours, minutes, seconds) {
61
+ if (!seconds.isZero() && !seconds.isInteger()) {
62
+ return seconds.minus(seconds.divToInt(1));
63
+ }
64
+ if (!minutes.isZero() && !minutes.isInteger()) {
65
+ return minutes.minus(minutes.divToInt(1)).times(IfcDurationValue.MINUTE);
66
+ }
67
+ if (!hours.isZero() && !hours.isInteger()) {
68
+ return hours.minus(hours.divToInt(1)).times(IfcDurationValue.HOUR);
69
+ }
70
+ if (!days.isZero() && !days.isInteger()) {
71
+ return days.minus(days.divToInt(1)).times(IfcDurationValue.DAY);
72
+ }
73
+ if (!weeks.isZero() && !weeks.isInteger()) {
74
+ return weeks.minus(weeks.divToInt(1)).times(IfcDurationValue.WEEK);
75
+ }
76
+ if (!months.isZero() && !months.isInteger()) {
77
+ return months.minus(months.divToInt(1)).times(IfcDurationValue.MONTH);
78
+ }
79
+ if (!years.isZero() && !years.isInteger()) {
80
+ return years.minus(years.divToInt(1)).times(IfcDurationValue.YEAR);
81
+ }
82
+ return new decimal_js_1.default(0);
83
+ }
84
+ static of(value) {
85
+ return new IfcDurationValue(value);
86
+ }
87
+ getValue() {
88
+ return this;
89
+ }
90
+ getType() {
91
+ return Types_js_1.Type.IFC_DURATION;
92
+ }
93
+ static isIfcDurationValueType(arg) {
94
+ return (arg instanceof IfcDurationValue ||
95
+ (!(0, IfcExpressionUtils_js_1.isNullish)(arg.stringRepresentation) &&
96
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.stringRepresentation.match(IfcDurationValue.regex)) &&
97
+ !(0, IfcExpressionUtils_js_1.isNullish)(arg.totalSeconds)));
98
+ }
99
+ static isValidStringRepresentation(str) {
100
+ return this.regex.test(str);
101
+ }
102
+ equals(other) {
103
+ return (IfcDurationValue.isIfcDurationValueType(other) &&
104
+ this.totalSeconds.eq(other.totalSeconds));
105
+ }
106
+ toString() {
107
+ return this.stringRepresentation;
108
+ }
109
+ compareTo(other) {
110
+ var diff = this.totalSeconds.minus(other.totalSeconds);
111
+ return decimal_js_1.default.sign(diff);
112
+ }
113
+ getYears() {
114
+ return this.years;
115
+ }
116
+ getMonths() {
117
+ return this.months;
118
+ }
119
+ getWeeks() {
120
+ return this.weeks;
121
+ }
122
+ getDays() {
123
+ return this.days;
124
+ }
125
+ getHours() {
126
+ return this.hours;
127
+ }
128
+ getMinutes() {
129
+ return this.minutes;
130
+ }
131
+ getSeconds() {
132
+ return this.seconds;
133
+ }
134
+ getTotalSeconds() {
135
+ return this.totalSeconds;
136
+ }
137
+ getFractionAsSeconds() {
138
+ return this.fractionAsSeconds;
139
+ }
140
+ }
141
+ exports.IfcDurationValue = IfcDurationValue;
142
+ IfcDurationValue.MINUTE = new decimal_js_1.default(60);
143
+ IfcDurationValue.HOUR = IfcDurationValue.MINUTE.mul(60);
144
+ IfcDurationValue.DAY = IfcDurationValue.HOUR.mul(24);
145
+ IfcDurationValue.WEEK = IfcDurationValue.DAY.mul(7);
146
+ IfcDurationValue.YEAR = new decimal_js_1.default(31557600);
147
+ IfcDurationValue.MONTH = IfcDurationValue.YEAR.div(12);
148
+ IfcDurationValue.regex = /^P(?!$)(?:(\d+(?:\.\d+(?=Y$))?)Y)?(?:(\d+(?:\.\d+(?=M$))?)M)?(?:(\d+(?:\.\d+(?=W$))?)W)?(?:(\d+(?:\.\d+(?=D$))?)D)?(?:T(?!$)(?:(\d+(?:\.\d+(?=H$))?)H)?(?:(\d+(?:\.\d+(?=M$))?)M)?(?:(\d+(?:\.\d+(?=S$))?)S)?)?$/;
149
+ //# sourceMappingURL=IfcDurationValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/value/IfcDurationValue.ts"],"names":[],"mappings":"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","file":"value/IfcDurationValue.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 { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { DateFormatException } from \"../error/value/DateFormatException.js\";\nimport Decimal from \"decimal.js\";\n\nexport class IfcDurationValue\n implements Value<IfcDurationValue>, Comparable<IfcDurationValue>\n{\n private readonly stringRepresentation;\n private static readonly MINUTE = new Decimal(60);\n private static readonly HOUR = IfcDurationValue.MINUTE.mul(60);\n private static readonly DAY = IfcDurationValue.HOUR.mul(24);\n private static readonly WEEK = IfcDurationValue.DAY.mul(7);\n private static readonly YEAR = new Decimal(31557600);\n private static readonly MONTH = IfcDurationValue.YEAR.div(12);\n private readonly years: Decimal;\n private readonly months: Decimal;\n private readonly weeks: Decimal;\n private readonly days: Decimal;\n private readonly hours: Decimal;\n private readonly minutes: Decimal;\n private readonly seconds: Decimal;\n private readonly fractionAsSeconds: Decimal;\n private readonly totalSeconds: Decimal;\n\n private static readonly regex =\n /^P(?!$)(?:(\\d+(?:\\.\\d+(?=Y$))?)Y)?(?:(\\d+(?:\\.\\d+(?=M$))?)M)?(?:(\\d+(?:\\.\\d+(?=W$))?)W)?(?:(\\d+(?:\\.\\d+(?=D$))?)D)?(?:T(?!$)(?:(\\d+(?:\\.\\d+(?=H$))?)H)?(?:(\\d+(?:\\.\\d+(?=M$))?)M)?(?:(\\d+(?:\\.\\d+(?=S$))?)S)?)?$/;\n\n constructor(value: string) {\n const {\n years,\n months,\n weeks,\n days,\n hours,\n minutes,\n seconds,\n fractionAsSeconds,\n totalSeconds,\n } = IfcDurationValue.parseIfcDuration(value);\n this.years = years;\n this.months = months;\n this.weeks = weeks;\n this.days = days;\n this.hours = hours;\n this.minutes = minutes;\n this.seconds = seconds;\n this.totalSeconds = totalSeconds;\n this.fractionAsSeconds = fractionAsSeconds;\n this.stringRepresentation = value;\n }\n\n public static parseIfcDuration(value: string): {\n years: Decimal;\n months: Decimal;\n weeks: Decimal;\n days: Decimal;\n hours: Decimal;\n minutes: Decimal;\n seconds: Decimal;\n fractionAsSeconds: Decimal;\n totalSeconds: Decimal;\n } {\n Decimal.set({ defaults: true });\n let match = value.match(this.regex);\n if (isNullish(match)) {\n throw new DateFormatException(\"Not an IfcDateTime: \" + value);\n }\n let [\n wholeString,\n yearsVal,\n monthsVal,\n weeksVal,\n daysVal,\n hoursVal,\n minutesVal,\n secondsVal,\n ] = match;\n var years = new Decimal(isNullish(yearsVal) ? \"0\" : yearsVal);\n var months = new Decimal(isNullish(monthsVal) ? \"0\" : monthsVal);\n var weeks = new Decimal(isNullish(weeksVal) ? \"0\" : weeksVal);\n var days = new Decimal(isNullish(daysVal) ? \"0\" : daysVal);\n var hours = new Decimal(isNullish(hoursVal) ? \"0\" : hoursVal);\n var minutes = new Decimal(isNullish(minutesVal) ? \"0\" : minutesVal);\n var seconds = new Decimal(isNullish(secondsVal) ? \"0\" : secondsVal);\n var fractionAsSeconds = IfcDurationValue.getFractionAsSeconds(\n years,\n months,\n weeks,\n days,\n hours,\n minutes,\n seconds\n );\n var totalSeconds = years\n .mul(IfcDurationValue.YEAR)\n .plus(months.mul(IfcDurationValue.MONTH))\n .plus(weeks.mul(IfcDurationValue.WEEK))\n .plus(days.mul(IfcDurationValue.DAY))\n .plus(hours.mul(IfcDurationValue.HOUR))\n .plus(minutes.mul(IfcDurationValue.MINUTE))\n .plus(seconds);\n return {\n years,\n months,\n weeks,\n days,\n hours,\n minutes,\n seconds,\n fractionAsSeconds,\n totalSeconds,\n };\n }\n\n private static getFractionAsSeconds(\n years: Decimal,\n months: Decimal,\n weeks: Decimal,\n days: Decimal,\n hours: Decimal,\n minutes: Decimal,\n seconds: Decimal\n ) {\n if (!seconds.isZero() && !seconds.isInteger()) {\n return seconds.minus(seconds.divToInt(1));\n }\n if (!minutes.isZero() && !minutes.isInteger()) {\n return minutes.minus(minutes.divToInt(1)).times(IfcDurationValue.MINUTE);\n }\n if (!hours.isZero() && !hours.isInteger()) {\n return hours.minus(hours.divToInt(1)).times(IfcDurationValue.HOUR);\n }\n if (!days.isZero() && !days.isInteger()) {\n return days.minus(days.divToInt(1)).times(IfcDurationValue.DAY);\n }\n if (!weeks.isZero() && !weeks.isInteger()) {\n return weeks.minus(weeks.divToInt(1)).times(IfcDurationValue.WEEK);\n }\n if (!months.isZero() && !months.isInteger()) {\n return months.minus(months.divToInt(1)).times(IfcDurationValue.MONTH);\n }\n if (!years.isZero() && !years.isInteger()) {\n return years.minus(years.divToInt(1)).times(IfcDurationValue.YEAR);\n }\n return new Decimal(0);\n }\n\n public static of(value: string): IfcDurationValue {\n return new IfcDurationValue(value);\n }\n\n getValue(): IfcDurationValue {\n return this;\n }\n\n getType(): ExprType {\n return Type.IFC_DURATION;\n }\n\n static isIfcDurationValueType(arg: any): arg is IfcDurationValue {\n return (\n arg instanceof IfcDurationValue ||\n (!isNullish(arg.stringRepresentation) &&\n !isNullish(arg.stringRepresentation.match(IfcDurationValue.regex)) &&\n !isNullish(arg.totalSeconds))\n );\n }\n\n public static isValidStringRepresentation(str: string): boolean {\n return this.regex.test(str);\n }\n\n equals(other: Value<any>): boolean {\n return (\n IfcDurationValue.isIfcDurationValueType(other) &&\n this.totalSeconds.eq(other.totalSeconds)\n );\n }\n\n toString(): string {\n return this.stringRepresentation;\n }\n\n compareTo(other: IfcDurationValue): number {\n var diff = this.totalSeconds.minus(other.totalSeconds);\n return Decimal.sign(diff);\n }\n\n getYears() {\n return this.years;\n }\n getMonths() {\n return this.months;\n }\n getWeeks() {\n return this.weeks;\n }\n getDays() {\n return this.days;\n }\n getHours() {\n return this.hours;\n }\n getMinutes() {\n return this.minutes;\n }\n getSeconds() {\n return this.seconds;\n }\n getTotalSeconds() {\n return this.totalSeconds;\n }\n getFractionAsSeconds() {\n return this.fractionAsSeconds;\n }\n}\n"]}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcTimeStampValue = void 0;
4
+ const decimal_js_1 = require("decimal.js");
5
+ const Types_js_1 = require("../type/Types.js");
6
+ const IfcExpression_js_1 = require("../IfcExpression.js");
7
+ const DateFormatException_js_1 = require("../error/value/DateFormatException.js");
8
+ const IfcDateTimeValue_js_1 = require("./IfcDateTimeValue.js");
9
+ class IfcTimeStampValue {
10
+ constructor(value) {
11
+ if (typeof value === "string") {
12
+ this.timeStamp = new decimal_js_1.Decimal(value);
13
+ }
14
+ else if (typeof value === "number") {
15
+ this.timeStamp = new decimal_js_1.Decimal(value);
16
+ }
17
+ else {
18
+ if (value.isInteger()) {
19
+ this.timeStamp = value;
20
+ }
21
+ else {
22
+ throw new DateFormatException_js_1.DateFormatException("Not a valid IfcTimeStamp: " + value.toString());
23
+ }
24
+ }
25
+ if ((0, IfcExpression_js_1.isNullish)(this.timeStamp) ||
26
+ this.timeStamp.isNaN() ||
27
+ !this.timeStamp.isFinite()) {
28
+ throw new DateFormatException_js_1.DateFormatException("Not a valid IfcTimeStamp: " + value);
29
+ }
30
+ }
31
+ static of(value) {
32
+ return new IfcTimeStampValue(value);
33
+ }
34
+ getValue() {
35
+ return this;
36
+ }
37
+ getType() {
38
+ return Types_js_1.Type.IFC_TIME_STAMP;
39
+ }
40
+ static isIfcTimeStampValueType(arg) {
41
+ return (arg instanceof IfcTimeStampValue ||
42
+ (!(0, IfcExpression_js_1.isNullish)(arg.timeStamp) && arg.timeStamp instanceof decimal_js_1.Decimal));
43
+ }
44
+ equals(other) {
45
+ return (IfcTimeStampValue.isIfcTimeStampValueType(other) &&
46
+ this.timeStamp.eq(other.timeStamp));
47
+ }
48
+ toString() {
49
+ return this.timeStamp.toString();
50
+ }
51
+ compareTo(other) {
52
+ return this.timeStamp.comparedTo(other.timeStamp);
53
+ }
54
+ getTimeStampSeconds() {
55
+ return this.timeStamp;
56
+ }
57
+ toIfcDateTimeValue() {
58
+ return IfcDateTimeValue_js_1.IfcDateTimeValue.ofTimeStampSeconds(this.timeStamp);
59
+ }
60
+ }
61
+ exports.IfcTimeStampValue = IfcTimeStampValue;
62
+ //# sourceMappingURL=IfcTimeStampValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/value/IfcTimeStampValue.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AAIrC,+CAAwC;AACxC,0DAAgD;AAChD,kFAA4E;AAC5E,+DAAyD;AAEzD,MAAa,iBAAiB;IAK5B,YAAY,KAAgC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAC;SACrC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAC;SACrC;aAAM;YACL,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;iBAAM;gBACL,MAAM,IAAI,4CAAmB,CAC3B,4BAA4B,GAAG,KAAK,CAAC,QAAQ,EAAE,CAChD,CAAC;aACH;SACF;QACD,IACE,IAAA,4BAAS,EAAC,IAAI,CAAC,SAAS,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACtB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAC1B;YACA,MAAM,IAAI,4CAAmB,CAAC,4BAA4B,GAAG,KAAK,CAAC,CAAC;SACrE;IACH,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAgC;QAC/C,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,GAAQ;QACrC,OAAO,CACL,GAAG,YAAY,iBAAiB;YAChC,CAAC,CAAC,IAAA,4BAAS,EAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,YAAY,oBAAO,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,iBAAiB,CAAC,uBAAuB,CAAC,KAAK,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CACnC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,KAAwB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,OAAO,sCAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF;AArED,8CAqEC","file":"value/IfcTimeStampValue.js","sourcesContent":["import { Decimal } from \"decimal.js\";\nimport { Value } from \"./Value.js\";\nimport { Comparable } from \"./Comparable.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { Type } from \"../type/Types.js\";\nimport { isNullish } from \"../IfcExpression.js\";\nimport { DateFormatException } from \"../error/value/DateFormatException.js\";\nimport { IfcDateTimeValue } from \"./IfcDateTimeValue.js\";\n\nexport class IfcTimeStampValue\n implements Value<IfcTimeStampValue>, Comparable<IfcTimeStampValue>\n{\n private readonly timeStamp: Decimal;\n\n constructor(value: string | number | Decimal) {\n if (typeof value === \"string\") {\n this.timeStamp = new Decimal(value);\n } else if (typeof value === \"number\") {\n this.timeStamp = new Decimal(value);\n } else {\n if (value.isInteger()) {\n this.timeStamp = value;\n } else {\n throw new DateFormatException(\n \"Not a valid IfcTimeStamp: \" + value.toString()\n );\n }\n }\n if (\n isNullish(this.timeStamp) ||\n this.timeStamp.isNaN() ||\n !this.timeStamp.isFinite()\n ) {\n throw new DateFormatException(\"Not a valid IfcTimeStamp: \" + value);\n }\n }\n\n public static of(value: Decimal | string | number): IfcTimeStampValue {\n return new IfcTimeStampValue(value);\n }\n\n getValue(): IfcTimeStampValue {\n return this;\n }\n\n getType(): ExprType {\n return Type.IFC_TIME_STAMP;\n }\n\n static isIfcTimeStampValueType(arg: any): arg is IfcTimeStampValue {\n return (\n arg instanceof IfcTimeStampValue ||\n (!isNullish(arg.timeStamp) && arg.timeStamp instanceof Decimal)\n );\n }\n\n equals(other: Value<any>): boolean {\n return (\n IfcTimeStampValue.isIfcTimeStampValueType(other) &&\n this.timeStamp.eq(other.timeStamp)\n );\n }\n\n toString(): string {\n return this.timeStamp.toString();\n }\n\n compareTo(other: IfcTimeStampValue): number {\n return this.timeStamp.comparedTo(other.timeStamp);\n }\n\n getTimeStampSeconds(): Decimal {\n return this.timeStamp;\n }\n\n toIfcDateTimeValue(): IfcDateTimeValue {\n return IfcDateTimeValue.ofTimeStampSeconds(this.timeStamp);\n }\n}\n"]}