ifc-expressions 2.1.0 → 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.
- package/README.md +9 -1
- package/dist/cjs/E.js.map +1 -1
- package/dist/cjs/IfcExpression.js.map +1 -1
- package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
- package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
- package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
- package/dist/cjs/error/SpuriousFunctionArgumentException.js.map +1 -1
- package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/cjs/error/value/DateFormatException.js +10 -0
- package/dist/cjs/error/value/DateFormatException.js.map +1 -0
- package/dist/cjs/expression/boolean/AndExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/OrExpr.js.map +1 -1
- package/dist/cjs/expression/boolean/XorExpr.js.map +1 -1
- package/dist/cjs/expression/function/Func.js +2 -0
- package/dist/cjs/expression/function/Func.js.map +1 -1
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +12 -0
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgArray.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgBase.js +9 -2
- package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js +34 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js +27 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js +35 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js +27 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js +30 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js +27 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +28 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js +34 -0
- package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
- package/dist/cjs/expression/function/arg/FuncArgUnion.js +32 -0
- package/dist/cjs/expression/function/arg/FuncArgUnion.js.map +1 -0
- package/dist/cjs/expression/function/impl/ADDDURATION.js +53 -0
- package/dist/cjs/expression/function/impl/ADDDURATION.js.map +1 -0
- package/dist/cjs/expression/function/impl/AT.js.map +1 -1
- package/dist/cjs/expression/function/impl/ApplyRegex.js.map +1 -1
- package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
- package/dist/cjs/expression/function/impl/IF.js.map +1 -1
- package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
- package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -1
- package/dist/cjs/expression/function/impl/SPLIT.js.map +1 -1
- package/dist/cjs/expression/function/impl/SUBSTRING.js.map +1 -1
- package/dist/cjs/expression/function/impl/TOBOOLEAN.js +0 -1
- package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
- package/dist/cjs/expression/function/impl/TOIFCDATE.js +33 -0
- package/dist/cjs/expression/function/impl/TOIFCDATE.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOIFCDATETIME.js +36 -0
- package/dist/cjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOIFCDURATION.js +21 -0
- package/dist/cjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOIFCTIME.js +33 -0
- package/dist/cjs/expression/function/impl/TOIFCTIME.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js +36 -0
- package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
- package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -1
- package/dist/cjs/expression/function/impl/TONUMERIC.js +0 -1
- package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
- package/dist/cjs/type/Types.js +35 -0
- package/dist/cjs/type/Types.js.map +1 -1
- package/dist/cjs/util/TextSpan.js +0 -1
- package/dist/cjs/util/TextSpan.js.map +1 -1
- package/dist/cjs/value/BooleanValue.js.map +1 -1
- package/dist/cjs/value/ExpressionValue.js.map +1 -1
- package/dist/cjs/value/IfcDateTimeValue.js +194 -0
- package/dist/cjs/value/IfcDateTimeValue.js.map +1 -0
- package/dist/cjs/value/IfcDateValue.js +68 -0
- package/dist/cjs/value/IfcDateValue.js.map +1 -0
- package/dist/cjs/value/IfcDurationValue.js +149 -0
- package/dist/cjs/value/IfcDurationValue.js.map +1 -0
- package/dist/cjs/value/IfcTimeStampValue.js +62 -0
- package/dist/cjs/value/IfcTimeStampValue.js.map +1 -0
- package/dist/cjs/value/IfcTimeValue.js +93 -0
- package/dist/cjs/value/IfcTimeValue.js.map +1 -0
- package/dist/cjs/value/LogicalValue.js.map +1 -1
- package/dist/cjs/value/NonBoxedValueTypes.js +3 -0
- package/dist/cjs/value/NonBoxedValueTypes.js.map +1 -0
- package/dist/cjs/value/Value.js.map +1 -1
- package/dist/error/value/DateFormatException.d.ts +3 -0
- package/dist/expression/function/Func.d.ts +3 -0
- package/dist/expression/function/arg/FuncArgBase.d.ts +1 -0
- package/dist/expression/function/arg/FuncArgIfcDateString.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcDateTime.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcDateTimeString.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcDuration.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcDurationString.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcTimeStamp.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcTimeStampNumeric.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgIfcTimeString.d.ts +11 -0
- package/dist/expression/function/arg/FuncArgUnion.d.ts +14 -0
- package/dist/expression/function/impl/ADDDURATION.d.ts +10 -0
- package/dist/expression/function/impl/TOBOOLEAN.d.ts +0 -1
- package/dist/expression/function/impl/TOIFCDATE.d.ts +10 -0
- package/dist/expression/function/impl/TOIFCDATETIME.d.ts +10 -0
- package/dist/expression/function/impl/TOIFCDURATION.d.ts +10 -0
- package/dist/expression/function/impl/TOIFCTIME.d.ts +10 -0
- package/dist/expression/function/impl/TOIFCTIMESTAMP.d.ts +10 -0
- package/dist/expression/function/impl/TONUMERIC.d.ts +0 -1
- package/dist/mjs/E.js.map +1 -1
- package/dist/mjs/IfcExpression.js.map +1 -1
- package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
- package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
- package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
- package/dist/mjs/error/SpuriousFunctionArgumentException.js.map +1 -1
- package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
- package/dist/mjs/error/value/DateFormatException.js +6 -0
- package/dist/mjs/error/value/DateFormatException.js.map +1 -0
- package/dist/mjs/expression/boolean/AndExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/OrExpr.js.map +1 -1
- package/dist/mjs/expression/boolean/XorExpr.js.map +1 -1
- package/dist/mjs/expression/function/Func.js +2 -0
- package/dist/mjs/expression/function/Func.js.map +1 -1
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +12 -0
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgArray.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgBase.js +10 -3
- package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js +30 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js +23 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js +31 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js +23 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js +26 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js +23 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +24 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js +30 -0
- package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
- package/dist/mjs/expression/function/arg/FuncArgUnion.js +28 -0
- package/dist/mjs/expression/function/arg/FuncArgUnion.js.map +1 -0
- package/dist/mjs/expression/function/impl/ADDDURATION.js +49 -0
- package/dist/mjs/expression/function/impl/ADDDURATION.js.map +1 -0
- package/dist/mjs/expression/function/impl/AT.js.map +1 -1
- package/dist/mjs/expression/function/impl/ApplyRegex.js.map +1 -1
- package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
- package/dist/mjs/expression/function/impl/IF.js.map +1 -1
- package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
- package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -1
- package/dist/mjs/expression/function/impl/SPLIT.js.map +1 -1
- package/dist/mjs/expression/function/impl/SUBSTRING.js.map +1 -1
- package/dist/mjs/expression/function/impl/TOBOOLEAN.js +0 -1
- package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
- package/dist/mjs/expression/function/impl/TOIFCDATE.js +29 -0
- package/dist/mjs/expression/function/impl/TOIFCDATE.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOIFCDATETIME.js +32 -0
- package/dist/mjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOIFCDURATION.js +17 -0
- package/dist/mjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOIFCTIME.js +29 -0
- package/dist/mjs/expression/function/impl/TOIFCTIME.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js +32 -0
- package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
- package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -1
- package/dist/mjs/expression/function/impl/TONUMERIC.js +0 -1
- package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
- package/dist/mjs/type/Types.js +35 -0
- package/dist/mjs/type/Types.js.map +1 -1
- package/dist/mjs/util/TextSpan.js +0 -1
- package/dist/mjs/util/TextSpan.js.map +1 -1
- package/dist/mjs/value/BooleanValue.js.map +1 -1
- package/dist/mjs/value/ExpressionValue.js.map +1 -1
- package/dist/mjs/value/IfcDateTimeValue.js +186 -0
- package/dist/mjs/value/IfcDateTimeValue.js.map +1 -0
- package/dist/mjs/value/IfcDateValue.js +64 -0
- package/dist/mjs/value/IfcDateValue.js.map +1 -0
- package/dist/mjs/value/IfcDurationValue.js +142 -0
- package/dist/mjs/value/IfcDurationValue.js.map +1 -0
- package/dist/mjs/value/IfcTimeStampValue.js +58 -0
- package/dist/mjs/value/IfcTimeStampValue.js.map +1 -0
- package/dist/mjs/value/IfcTimeValue.js +86 -0
- package/dist/mjs/value/IfcTimeValue.js.map +1 -0
- package/dist/mjs/value/LogicalValue.js.map +1 -1
- package/dist/mjs/value/NonBoxedValueTypes.js +2 -0
- package/dist/mjs/value/NonBoxedValueTypes.js.map +1 -0
- package/dist/mjs/value/Value.js.map +1 -1
- package/dist/type/Types.d.ts +15 -0
- package/dist/value/ExpressionValue.d.ts +6 -1
- package/dist/value/IfcDateTimeValue.d.ts +44 -0
- package/dist/value/IfcDateValue.d.ts +24 -0
- package/dist/value/IfcDurationValue.d.ts +53 -0
- package/dist/value/IfcTimeStampValue.d.ts +18 -0
- package/dist/value/IfcTimeValue.d.ts +27 -0
- package/dist/value/NonBoxedValueTypes.d.ts +6 -0
- package/dist/value/Value.d.ts +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["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 !isNullish(str.match(this.regex));\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,64 @@
|
|
|
1
|
+
import { Type } from "../type/Types.js";
|
|
2
|
+
import { isNullish } from "../util/IfcExpressionUtils.js";
|
|
3
|
+
import { DateFormatException } from "../error/value/DateFormatException.js";
|
|
4
|
+
export class IfcDateValue {
|
|
5
|
+
constructor(value) {
|
|
6
|
+
var parsed = IfcDateValue.parseIfcDate(value);
|
|
7
|
+
this.utcDateValue = parsed.utcDate;
|
|
8
|
+
this.originalTimeZoneHours = parsed.originalTimeZoneHours;
|
|
9
|
+
this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;
|
|
10
|
+
this.stringRepresentation = value;
|
|
11
|
+
}
|
|
12
|
+
static parseIfcDate(value) {
|
|
13
|
+
let match = value.match(this.regex);
|
|
14
|
+
if (isNullish(match)) {
|
|
15
|
+
throw new DateFormatException("Not an IfcDate: " + value);
|
|
16
|
+
}
|
|
17
|
+
let [wholeString, year, month, day, timeZoneWhole, timeZoneSign, timeZoneHours, timeZoneMinutes,] = match;
|
|
18
|
+
var utcDate = new Date(0);
|
|
19
|
+
utcDate.setUTCFullYear(Number.parseInt(year));
|
|
20
|
+
utcDate.setUTCMonth(Number.parseInt(month) - 1);
|
|
21
|
+
utcDate.setUTCDate(Number.parseInt(day));
|
|
22
|
+
var originalZoneSign = isNullish(timeZoneSign)
|
|
23
|
+
? 0
|
|
24
|
+
: timeZoneSign === "+"
|
|
25
|
+
? -1
|
|
26
|
+
: +1; //why? Beause +1 means 1 hour ahead of UTC, so we have to subtract 1 to get UTC
|
|
27
|
+
var originalTimeZoneHours = originalZoneSign *
|
|
28
|
+
(isNullish(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));
|
|
29
|
+
var originalTimeZoneMinutes = originalZoneSign *
|
|
30
|
+
(isNullish(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));
|
|
31
|
+
utcDate.setUTCHours(utcDate.getUTCHours() + originalTimeZoneHours);
|
|
32
|
+
utcDate.setUTCMinutes(utcDate.getUTCMinutes() + originalTimeZoneMinutes);
|
|
33
|
+
return { utcDate: utcDate, originalTimeZoneHours, originalTimeZoneMinutes };
|
|
34
|
+
}
|
|
35
|
+
static of(value) {
|
|
36
|
+
return new IfcDateValue(value);
|
|
37
|
+
}
|
|
38
|
+
getValue() {
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
getType() {
|
|
42
|
+
return Type.IFC_DATE;
|
|
43
|
+
}
|
|
44
|
+
static isIfcDateValueType(arg) {
|
|
45
|
+
return (arg instanceof IfcDateValue ||
|
|
46
|
+
(!isNullish(arg.stringRepresentation) &&
|
|
47
|
+
!isNullish(arg.stringRepresentation.match(IfcDateValue.regex))));
|
|
48
|
+
}
|
|
49
|
+
static isValidStringRepresentation(str) {
|
|
50
|
+
return !isNullish(str.match(this.regex));
|
|
51
|
+
}
|
|
52
|
+
equals(other) {
|
|
53
|
+
return (IfcDateValue.isIfcDateValueType(other) &&
|
|
54
|
+
this.utcDateValue.getTime() === other.utcDateValue.getTime());
|
|
55
|
+
}
|
|
56
|
+
toString() {
|
|
57
|
+
return this.stringRepresentation;
|
|
58
|
+
}
|
|
59
|
+
compareTo(other) {
|
|
60
|
+
return this.utcDateValue.getTime() - other.utcDateValue.getTime();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
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]))?)?$/;
|
|
64
|
+
//# sourceMappingURL=IfcDateValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["value/IfcDateValue.ts"],"names":[],"mappings":"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","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 !isNullish(str.match(this.regex));\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,142 @@
|
|
|
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
|
+
export class IfcDurationValue {
|
|
6
|
+
constructor(value) {
|
|
7
|
+
const { years, months, weeks, days, hours, minutes, seconds, fractionAsSeconds, totalSeconds, } = IfcDurationValue.parseIfcDuration(value);
|
|
8
|
+
this.years = years;
|
|
9
|
+
this.months = months;
|
|
10
|
+
this.weeks = weeks;
|
|
11
|
+
this.days = days;
|
|
12
|
+
this.hours = hours;
|
|
13
|
+
this.minutes = minutes;
|
|
14
|
+
this.seconds = seconds;
|
|
15
|
+
this.totalSeconds = totalSeconds;
|
|
16
|
+
this.fractionAsSeconds = fractionAsSeconds;
|
|
17
|
+
this.stringRepresentation = value;
|
|
18
|
+
}
|
|
19
|
+
static parseIfcDuration(value) {
|
|
20
|
+
Decimal.set({ defaults: true });
|
|
21
|
+
let match = value.match(this.regex);
|
|
22
|
+
if (isNullish(match)) {
|
|
23
|
+
throw new DateFormatException("Not an IfcDateTime: " + value);
|
|
24
|
+
}
|
|
25
|
+
let [wholeString, yearsVal, monthsVal, weeksVal, daysVal, hoursVal, minutesVal, secondsVal,] = match;
|
|
26
|
+
var years = new Decimal(isNullish(yearsVal) ? "0" : yearsVal);
|
|
27
|
+
var months = new Decimal(isNullish(monthsVal) ? "0" : monthsVal);
|
|
28
|
+
var weeks = new Decimal(isNullish(weeksVal) ? "0" : weeksVal);
|
|
29
|
+
var days = new Decimal(isNullish(daysVal) ? "0" : daysVal);
|
|
30
|
+
var hours = new Decimal(isNullish(hoursVal) ? "0" : hoursVal);
|
|
31
|
+
var minutes = new Decimal(isNullish(minutesVal) ? "0" : minutesVal);
|
|
32
|
+
var seconds = new Decimal(isNullish(secondsVal) ? "0" : secondsVal);
|
|
33
|
+
var fractionAsSeconds = IfcDurationValue.getFractionAsSeconds(years, months, weeks, days, hours, minutes, seconds);
|
|
34
|
+
var totalSeconds = years
|
|
35
|
+
.mul(IfcDurationValue.YEAR)
|
|
36
|
+
.plus(months.mul(IfcDurationValue.MONTH))
|
|
37
|
+
.plus(weeks.mul(IfcDurationValue.WEEK))
|
|
38
|
+
.plus(days.mul(IfcDurationValue.DAY))
|
|
39
|
+
.plus(hours.mul(IfcDurationValue.HOUR))
|
|
40
|
+
.plus(minutes.mul(IfcDurationValue.MINUTE))
|
|
41
|
+
.plus(seconds);
|
|
42
|
+
return {
|
|
43
|
+
years,
|
|
44
|
+
months,
|
|
45
|
+
weeks,
|
|
46
|
+
days,
|
|
47
|
+
hours,
|
|
48
|
+
minutes,
|
|
49
|
+
seconds,
|
|
50
|
+
fractionAsSeconds,
|
|
51
|
+
totalSeconds,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
static getFractionAsSeconds(years, months, weeks, days, hours, minutes, seconds) {
|
|
55
|
+
if (!seconds.isZero() && !seconds.isInteger()) {
|
|
56
|
+
return seconds.minus(seconds.divToInt(1));
|
|
57
|
+
}
|
|
58
|
+
if (!minutes.isZero() && !minutes.isInteger()) {
|
|
59
|
+
return minutes.minus(minutes.divToInt(1)).times(IfcDurationValue.MINUTE);
|
|
60
|
+
}
|
|
61
|
+
if (!hours.isZero() && !hours.isInteger()) {
|
|
62
|
+
return hours.minus(hours.divToInt(1)).times(IfcDurationValue.HOUR);
|
|
63
|
+
}
|
|
64
|
+
if (!days.isZero() && !days.isInteger()) {
|
|
65
|
+
return days.minus(days.divToInt(1)).times(IfcDurationValue.DAY);
|
|
66
|
+
}
|
|
67
|
+
if (!weeks.isZero() && !weeks.isInteger()) {
|
|
68
|
+
return weeks.minus(weeks.divToInt(1)).times(IfcDurationValue.WEEK);
|
|
69
|
+
}
|
|
70
|
+
if (!months.isZero() && !months.isInteger()) {
|
|
71
|
+
return months.minus(months.divToInt(1)).times(IfcDurationValue.MONTH);
|
|
72
|
+
}
|
|
73
|
+
if (!years.isZero() && !years.isInteger()) {
|
|
74
|
+
return years.minus(years.divToInt(1)).times(IfcDurationValue.YEAR);
|
|
75
|
+
}
|
|
76
|
+
return new Decimal(0);
|
|
77
|
+
}
|
|
78
|
+
static of(value) {
|
|
79
|
+
return new IfcDurationValue(value);
|
|
80
|
+
}
|
|
81
|
+
getValue() {
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
getType() {
|
|
85
|
+
return Type.IFC_DURATION;
|
|
86
|
+
}
|
|
87
|
+
static isIfcDurationValueType(arg) {
|
|
88
|
+
return (arg instanceof IfcDurationValue ||
|
|
89
|
+
(!isNullish(arg.stringRepresentation) &&
|
|
90
|
+
!isNullish(arg.stringRepresentation.match(IfcDurationValue.regex)) &&
|
|
91
|
+
!isNullish(arg.totalSeconds)));
|
|
92
|
+
}
|
|
93
|
+
static isValidStringRepresentation(str) {
|
|
94
|
+
return !isNullish(str.match(this.regex));
|
|
95
|
+
}
|
|
96
|
+
equals(other) {
|
|
97
|
+
return (IfcDurationValue.isIfcDurationValueType(other) &&
|
|
98
|
+
this.totalSeconds.eq(other.totalSeconds));
|
|
99
|
+
}
|
|
100
|
+
toString() {
|
|
101
|
+
return this.stringRepresentation;
|
|
102
|
+
}
|
|
103
|
+
compareTo(other) {
|
|
104
|
+
var diff = this.totalSeconds.minus(other.totalSeconds);
|
|
105
|
+
return Decimal.sign(diff);
|
|
106
|
+
}
|
|
107
|
+
getYears() {
|
|
108
|
+
return this.years;
|
|
109
|
+
}
|
|
110
|
+
getMonths() {
|
|
111
|
+
return this.months;
|
|
112
|
+
}
|
|
113
|
+
getWeeks() {
|
|
114
|
+
return this.weeks;
|
|
115
|
+
}
|
|
116
|
+
getDays() {
|
|
117
|
+
return this.days;
|
|
118
|
+
}
|
|
119
|
+
getHours() {
|
|
120
|
+
return this.hours;
|
|
121
|
+
}
|
|
122
|
+
getMinutes() {
|
|
123
|
+
return this.minutes;
|
|
124
|
+
}
|
|
125
|
+
getSeconds() {
|
|
126
|
+
return this.seconds;
|
|
127
|
+
}
|
|
128
|
+
getTotalSeconds() {
|
|
129
|
+
return this.totalSeconds;
|
|
130
|
+
}
|
|
131
|
+
getFractionAsSeconds() {
|
|
132
|
+
return this.fractionAsSeconds;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
IfcDurationValue.MINUTE = new Decimal(60);
|
|
136
|
+
IfcDurationValue.HOUR = IfcDurationValue.MINUTE.mul(60);
|
|
137
|
+
IfcDurationValue.DAY = IfcDurationValue.HOUR.mul(24);
|
|
138
|
+
IfcDurationValue.WEEK = IfcDurationValue.DAY.mul(7);
|
|
139
|
+
IfcDurationValue.YEAR = new Decimal(31557600);
|
|
140
|
+
IfcDurationValue.MONTH = IfcDurationValue.YEAR.div(12);
|
|
141
|
+
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)?)?$/;
|
|
142
|
+
//# sourceMappingURL=IfcDurationValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["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 !isNullish(str.match(this.regex));\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,58 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
import { Type } from "../type/Types.js";
|
|
3
|
+
import { isNullish } from "../IfcExpression.js";
|
|
4
|
+
import { DateFormatException } from "../error/value/DateFormatException.js";
|
|
5
|
+
import { IfcDateTimeValue } from "./IfcDateTimeValue.js";
|
|
6
|
+
export class IfcTimeStampValue {
|
|
7
|
+
constructor(value) {
|
|
8
|
+
if (typeof value === "string") {
|
|
9
|
+
this.timeStamp = new Decimal(value);
|
|
10
|
+
}
|
|
11
|
+
else if (typeof value === "number") {
|
|
12
|
+
this.timeStamp = new Decimal(value);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
if (value.isInteger()) {
|
|
16
|
+
this.timeStamp = value;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw new DateFormatException("Not a valid IfcTimeStamp: " + value.toString());
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (isNullish(this.timeStamp) ||
|
|
23
|
+
this.timeStamp.isNaN() ||
|
|
24
|
+
!this.timeStamp.isFinite()) {
|
|
25
|
+
throw new DateFormatException("Not a valid IfcTimeStamp: " + value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static of(value) {
|
|
29
|
+
return new IfcTimeStampValue(value);
|
|
30
|
+
}
|
|
31
|
+
getValue() {
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
getType() {
|
|
35
|
+
return Type.IFC_TIME_STAMP;
|
|
36
|
+
}
|
|
37
|
+
static isIfcTimeStampValueType(arg) {
|
|
38
|
+
return (arg instanceof IfcTimeStampValue ||
|
|
39
|
+
(!isNullish(arg.timeStamp) && arg.timeStamp instanceof Decimal));
|
|
40
|
+
}
|
|
41
|
+
equals(other) {
|
|
42
|
+
return (IfcTimeStampValue.isIfcTimeStampValueType(other) &&
|
|
43
|
+
this.timeStamp.eq(other.timeStamp));
|
|
44
|
+
}
|
|
45
|
+
toString() {
|
|
46
|
+
return this.timeStamp.toString();
|
|
47
|
+
}
|
|
48
|
+
compareTo(other) {
|
|
49
|
+
return this.timeStamp.comparedTo(other.timeStamp);
|
|
50
|
+
}
|
|
51
|
+
getTimeStampSeconds() {
|
|
52
|
+
return this.timeStamp;
|
|
53
|
+
}
|
|
54
|
+
toIfcDateTimeValue() {
|
|
55
|
+
return IfcDateTimeValue.ofTimeStampSeconds(this.timeStamp);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=IfcTimeStampValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["value/IfcTimeStampValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,OAAO,iBAAiB;IAK5B,YAAY,KAAgC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;SACrC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,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,mBAAmB,CAC3B,4BAA4B,GAAG,KAAK,CAAC,QAAQ,EAAE,CAChD,CAAC;aACH;SACF;QACD,IACE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACtB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAC1B;YACA,MAAM,IAAI,mBAAmB,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,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,GAAQ;QACrC,OAAO,CACL,GAAG,YAAY,iBAAiB;YAChC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,YAAY,OAAO,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,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF","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"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
export class IfcTimeValue {
|
|
6
|
+
constructor(value) {
|
|
7
|
+
var parsed = IfcTimeValue.parseIfcDate(value);
|
|
8
|
+
this.utcDateValue = parsed.utcDate;
|
|
9
|
+
this.originalTimeZoneHours = parsed.originalTimeZoneHours;
|
|
10
|
+
this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;
|
|
11
|
+
this.secondFraction = parsed.secondFraction;
|
|
12
|
+
this.stringRepresentation = value;
|
|
13
|
+
}
|
|
14
|
+
static parseIfcDate(value) {
|
|
15
|
+
let match = value.match(this.regex);
|
|
16
|
+
if (isNullish(match)) {
|
|
17
|
+
throw new DateFormatException("Not an IfcTime: " + value);
|
|
18
|
+
}
|
|
19
|
+
let [wholeString, hours, minutes, seconds, fractionSeconds, timeZoneWhole, timeZoneSign, timeZoneHours, timeZoneMinutes,] = match;
|
|
20
|
+
var utcDate = new Date(0);
|
|
21
|
+
utcDate.setUTCHours(Number.parseInt(hours));
|
|
22
|
+
utcDate.setUTCMinutes(Number.parseInt(minutes));
|
|
23
|
+
utcDate.setUTCSeconds(Number.parseInt(seconds));
|
|
24
|
+
var secondFraction = isNullish(fractionSeconds)
|
|
25
|
+
? new Decimal("0")
|
|
26
|
+
: new Decimal("0" + fractionSeconds); //arbitrary precision fractions
|
|
27
|
+
var originalZoneSign = isNullish(timeZoneSign)
|
|
28
|
+
? 0
|
|
29
|
+
: timeZoneSign === "+"
|
|
30
|
+
? 1
|
|
31
|
+
: -1;
|
|
32
|
+
var originalTimeZoneHours = originalZoneSign *
|
|
33
|
+
(isNullish(timeZoneHours) ? 0 : Number.parseInt(timeZoneHours));
|
|
34
|
+
var originalTimeZoneMinutes = originalZoneSign *
|
|
35
|
+
(isNullish(timeZoneMinutes) ? 0 : Number.parseInt(timeZoneMinutes));
|
|
36
|
+
utcDate.setUTCHours(utcDate.getUTCHours() - originalTimeZoneHours);
|
|
37
|
+
utcDate.setUTCMinutes(utcDate.getUTCMinutes() - originalTimeZoneMinutes);
|
|
38
|
+
return {
|
|
39
|
+
utcDate,
|
|
40
|
+
secondFraction,
|
|
41
|
+
originalTimeZoneHours,
|
|
42
|
+
originalTimeZoneMinutes,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
static of(value) {
|
|
46
|
+
return new IfcTimeValue(value);
|
|
47
|
+
}
|
|
48
|
+
getValue() {
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
getType() {
|
|
52
|
+
return Type.IFC_TIME;
|
|
53
|
+
}
|
|
54
|
+
static isIfcTimeValueType(arg) {
|
|
55
|
+
return (arg instanceof IfcTimeValue ||
|
|
56
|
+
(!isNullish(arg.stringRepresentation) &&
|
|
57
|
+
!isNullish(arg.stringRepresentation.match(IfcTimeValue.regex))));
|
|
58
|
+
}
|
|
59
|
+
static isValidStringRepresentation(str) {
|
|
60
|
+
return !isNullish(str.match(this.regex));
|
|
61
|
+
}
|
|
62
|
+
equals(other) {
|
|
63
|
+
return (IfcTimeValue.isIfcTimeValueType(other) &&
|
|
64
|
+
this.utcDateValue.getTime() === other.utcDateValue.getTime() &&
|
|
65
|
+
this.secondFraction.eq(other.secondFraction));
|
|
66
|
+
}
|
|
67
|
+
toString() {
|
|
68
|
+
return this.stringRepresentation;
|
|
69
|
+
}
|
|
70
|
+
compareTo(other) {
|
|
71
|
+
var diff = this.utcDateValue.getTime() - other.utcDateValue.getTime();
|
|
72
|
+
if (diff != 0) {
|
|
73
|
+
return diff;
|
|
74
|
+
}
|
|
75
|
+
var diffD = this.secondFraction.minus(other.secondFraction);
|
|
76
|
+
if (diffD.isZero()) {
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
if (diffD.lt(0)) {
|
|
80
|
+
return -1;
|
|
81
|
+
}
|
|
82
|
+
return 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
IfcTimeValue.regex = /^([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]))?)?$/;
|
|
86
|
+
//# sourceMappingURL=IfcTimeValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["value/IfcTimeValue.ts"],"names":[],"mappings":"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","file":"value/IfcTimeValue.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 IfcTimeValue\n implements Value<IfcTimeValue>, Comparable<IfcTimeValue>\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 /^([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(value: string) {\n var parsed = IfcTimeValue.parseIfcDate(value);\n this.utcDateValue = parsed.utcDate;\n this.originalTimeZoneHours = parsed.originalTimeZoneHours;\n this.originalTimeZoneMinutes = parsed.originalTimeZoneMinutes;\n this.secondFraction = parsed.secondFraction;\n this.stringRepresentation = value;\n }\n\n public static parseIfcDate(value: string): {\n utcDate: Date;\n secondFraction: Decimal;\n originalTimeZoneHours?: number;\n originalTimeZoneMinutes?: number;\n } {\n let match = value.match(this.regex);\n if (isNullish(match)) {\n throw new DateFormatException(\"Not an IfcTime: \" + value);\n }\n let [\n wholeString,\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.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\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): IfcTimeValue {\n return new IfcTimeValue(value);\n }\n\n getValue(): IfcTimeValue {\n return this;\n }\n\n getType(): ExprType {\n return Type.IFC_TIME;\n }\n\n static isIfcTimeValueType(arg: any): arg is IfcTimeValue {\n return (\n arg instanceof IfcTimeValue ||\n (!isNullish(arg.stringRepresentation) &&\n !isNullish(arg.stringRepresentation.match(IfcTimeValue.regex)))\n );\n }\n\n public static isValidStringRepresentation(str: string): boolean {\n return !isNullish(str.match(this.regex));\n }\n\n equals(other: Value<any>): boolean {\n return (\n IfcTimeValue.isIfcTimeValueType(other) &&\n this.utcDateValue.getTime() === other.utcDateValue.getTime() &&\n this.secondFraction.eq(other.secondFraction)\n );\n }\n\n toString(): string {\n return this.stringRepresentation;\n }\n\n compareTo(other: IfcTimeValue): number {\n var diff = this.utcDateValue.getTime() - other.utcDateValue.getTime();\n if (diff != 0) {\n return diff;\n }\n var diffD = this.secondFraction.minus(other.secondFraction);\n if (diffD.isZero()) {\n return 0;\n }\n if (diffD.lt(0)) {\n return -1;\n }\n return 1;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["value/LogicalValue.ts"],"names":[],"mappings":"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","file":"value/LogicalValue.js","sourcesContent":["import { Value } from \"./Value.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { Type } from \"../type/Types.js\";\nimport { BooleanValue } from \"./BooleanValue\";\nimport { Comparable } from \"./Comparable\";\n\nexport type Logical = boolean | \"UNKNOWN\";\n\nexport class LogicalValue implements Value<Logical>, Comparable<LogicalValue> {\n public static readonly UNKNOWN_VALUE = \"UNKNOWN\";\n private readonly logicalValue: Logical;\n private static readonly LOGICAL_VALUE_TRUE = new LogicalValue(true);\n private static readonly LOGICAL_VALUE_FALSE = new LogicalValue(false);\n private static readonly LOGICAL_VALUE_UNKNOWN = new LogicalValue(\n LogicalValue.UNKNOWN_VALUE\n );\n\n private constructor(value: Logical) {\n this.logicalValue = value;\n }\n\n public static true(): LogicalValue {\n return this.LOGICAL_VALUE_TRUE;\n }\n\n public static false(): LogicalValue {\n return this.LOGICAL_VALUE_FALSE;\n }\n\n public static unknown(): LogicalValue {\n return this.LOGICAL_VALUE_UNKNOWN;\n }\n\n public static of(value: Logical): LogicalValue {\n switch (value) {\n case this.UNKNOWN_VALUE:\n return this.LOGICAL_VALUE_UNKNOWN;\n case false:\n return this.LOGICAL_VALUE_FALSE;\n case true:\n return this.LOGICAL_VALUE_TRUE;\n }\n throw new Error(`Cannot get logical value of ${value}`);\n }\n\n getValue(): Logical {\n return this.logicalValue;\n }\n\n isTrue(): boolean {\n return this.logicalValue === true;\n }\n\n isFalse(): boolean {\n return this.logicalValue === false;\n }\n\n isUnknown(): boolean {\n return this.logicalValue === \"UNKNOWN\";\n }\n\n static isUnknown(val: any): boolean {\n return val === \"UNKNOWN\";\n }\n\n static isLogical(val: any): val is Logical {\n return typeof val === \"boolean\" || this.isUnknown(val);\n }\n\n and(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (this.logicalValue === false || otherValue === false) {\n return LogicalValue.false();\n }\n if (this.isUnknown() || otherValue === LogicalValue.UNKNOWN_VALUE) {\n return LogicalValue.unknown();\n }\n return LogicalValue.true();\n }\n\n or(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (this.logicalValue === true || otherValue === true) {\n return LogicalValue.true();\n }\n if (this.isUnknown() || otherValue === LogicalValue.UNKNOWN_VALUE) {\n return LogicalValue.unknown();\n }\n return LogicalValue.false();\n }\n\n xor(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (this.isUnknown() || otherValue === LogicalValue.UNKNOWN_VALUE) {\n return LogicalValue.unknown();\n }\n return LogicalValue.of(this.logicalValue !== other.getValue());\n }\n\n implies(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (otherValue === true) {\n return LogicalValue.true();\n }\n if (this.isUnknown()) {\n return LogicalValue.unknown();\n }\n if (this.isFalse()) {\n return LogicalValue.true();\n }\n return LogicalValue.of(otherValue);\n }\n\n public not(): LogicalValue {\n switch (this.logicalValue) {\n case LogicalValue.UNKNOWN_VALUE:\n return LogicalValue.LOGICAL_VALUE_UNKNOWN;\n case true:\n return LogicalValue.LOGICAL_VALUE_FALSE;\n case false:\n return LogicalValue.LOGICAL_VALUE_TRUE;\n }\n throw new Error(`Cannot invert logical value ${this.logicalValue}`);\n }\n\n equals(other: Value<any>): boolean {\n if (LogicalValue.isLogicalValueType(other)) {\n return this.logicalValue === other.logicalValue;\n } else if (BooleanValue.isBooleanValueType(other)) {\n return this.logicalValue === other.booleanValue;\n }\n return false;\n }\n\n getType(): ExprType {\n return Type.LOGICAL;\n }\n\n compareTo(other: LogicalValue): number {\n switch (this.logicalValue) {\n case true:\n return other.isTrue() ? 0 : 1;\n case false:\n return other.isTrue() ? -1 : other.logicalValue === false ? 0 : 1;\n case \"UNKNOWN\":\n return other.isUnknown() ? 0 : -1;\n }\n throw new Error(\n `Unexpected logical value comparison: ${this.logicalValue} vs ${other.logicalValue}`\n );\n }\n\n toString(): string {\n return this.logicalValue === LogicalValue.UNKNOWN_VALUE\n ? LogicalValue.UNKNOWN_VALUE\n : this.logicalValue\n ? \"TRUE\"\n : \"FALSE\";\n }\n\n public static isLogicalValueType(arg: any): arg is LogicalValue {\n return (\n (typeof arg.logicalValue !== \"undefined\" &&\n typeof arg.logicalValue === \"boolean\") ||\n arg.logicalValue === LogicalValue.UNKNOWN_VALUE\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["value/LogicalValue.ts"],"names":[],"mappings":"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","file":"value/LogicalValue.js","sourcesContent":["import { Value } from \"./Value.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { Type } from \"../type/Types.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { Comparable } from \"./Comparable.js\";\n\nexport type Logical = boolean | \"UNKNOWN\";\n\nexport class LogicalValue implements Value<Logical>, Comparable<LogicalValue> {\n public static readonly UNKNOWN_VALUE = \"UNKNOWN\";\n private readonly logicalValue: Logical;\n private static readonly LOGICAL_VALUE_TRUE = new LogicalValue(true);\n private static readonly LOGICAL_VALUE_FALSE = new LogicalValue(false);\n private static readonly LOGICAL_VALUE_UNKNOWN = new LogicalValue(\n LogicalValue.UNKNOWN_VALUE\n );\n\n private constructor(value: Logical) {\n this.logicalValue = value;\n }\n\n public static true(): LogicalValue {\n return this.LOGICAL_VALUE_TRUE;\n }\n\n public static false(): LogicalValue {\n return this.LOGICAL_VALUE_FALSE;\n }\n\n public static unknown(): LogicalValue {\n return this.LOGICAL_VALUE_UNKNOWN;\n }\n\n public static of(value: Logical): LogicalValue {\n switch (value) {\n case this.UNKNOWN_VALUE:\n return this.LOGICAL_VALUE_UNKNOWN;\n case false:\n return this.LOGICAL_VALUE_FALSE;\n case true:\n return this.LOGICAL_VALUE_TRUE;\n }\n throw new Error(`Cannot get logical value of ${value}`);\n }\n\n getValue(): Logical {\n return this.logicalValue;\n }\n\n isTrue(): boolean {\n return this.logicalValue === true;\n }\n\n isFalse(): boolean {\n return this.logicalValue === false;\n }\n\n isUnknown(): boolean {\n return this.logicalValue === \"UNKNOWN\";\n }\n\n static isUnknown(val: any): boolean {\n return val === \"UNKNOWN\";\n }\n\n static isLogical(val: any): val is Logical {\n return typeof val === \"boolean\" || this.isUnknown(val);\n }\n\n and(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (this.logicalValue === false || otherValue === false) {\n return LogicalValue.false();\n }\n if (this.isUnknown() || otherValue === LogicalValue.UNKNOWN_VALUE) {\n return LogicalValue.unknown();\n }\n return LogicalValue.true();\n }\n\n or(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (this.logicalValue === true || otherValue === true) {\n return LogicalValue.true();\n }\n if (this.isUnknown() || otherValue === LogicalValue.UNKNOWN_VALUE) {\n return LogicalValue.unknown();\n }\n return LogicalValue.false();\n }\n\n xor(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (this.isUnknown() || otherValue === LogicalValue.UNKNOWN_VALUE) {\n return LogicalValue.unknown();\n }\n return LogicalValue.of(this.logicalValue !== other.getValue());\n }\n\n implies(other: LogicalValue | BooleanValue): LogicalValue {\n const otherValue = other.getValue();\n if (otherValue === true) {\n return LogicalValue.true();\n }\n if (this.isUnknown()) {\n return LogicalValue.unknown();\n }\n if (this.isFalse()) {\n return LogicalValue.true();\n }\n return LogicalValue.of(otherValue);\n }\n\n public not(): LogicalValue {\n switch (this.logicalValue) {\n case LogicalValue.UNKNOWN_VALUE:\n return LogicalValue.LOGICAL_VALUE_UNKNOWN;\n case true:\n return LogicalValue.LOGICAL_VALUE_FALSE;\n case false:\n return LogicalValue.LOGICAL_VALUE_TRUE;\n }\n throw new Error(`Cannot invert logical value ${this.logicalValue}`);\n }\n\n equals(other: Value<any>): boolean {\n if (LogicalValue.isLogicalValueType(other)) {\n return this.logicalValue === other.logicalValue;\n } else if (BooleanValue.isBooleanValueType(other)) {\n return this.logicalValue === other.booleanValue;\n }\n return false;\n }\n\n getType(): ExprType {\n return Type.LOGICAL;\n }\n\n compareTo(other: LogicalValue): number {\n switch (this.logicalValue) {\n case true:\n return other.isTrue() ? 0 : 1;\n case false:\n return other.isTrue() ? -1 : other.logicalValue === false ? 0 : 1;\n case \"UNKNOWN\":\n return other.isUnknown() ? 0 : -1;\n }\n throw new Error(\n `Unexpected logical value comparison: ${this.logicalValue} vs ${other.logicalValue}`\n );\n }\n\n toString(): string {\n return this.logicalValue === LogicalValue.UNKNOWN_VALUE\n ? LogicalValue.UNKNOWN_VALUE\n : this.logicalValue\n ? \"TRUE\"\n : \"FALSE\";\n }\n\n public static isLogicalValueType(arg: any): arg is LogicalValue {\n return (\n (typeof arg.logicalValue !== \"undefined\" &&\n typeof arg.logicalValue === \"boolean\") ||\n arg.logicalValue === LogicalValue.UNKNOWN_VALUE\n );\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["value/NonBoxedValueTypes.ts"],"names":[],"mappings":"","file":"value/NonBoxedValueTypes.js","sourcesContent":["import { IfcDateTimeValue } from \"./IfcDateTimeValue.js\";\nimport { IfcDateValue } from \"./IfcDateValue.js\";\nimport { IfcTimeValue } from \"./IfcTimeValue.js\";\nimport { IfcDurationValue } from \"./IfcDurationValue.js\";\nimport { IfcTimeStampValue } from \"./IfcTimeStampValue.js\";\n\nexport type NonBoxedValueTypes =\n | IfcDateValue\n | IfcDateTimeValue\n | IfcTimeValue\n | IfcDurationValue\n | IfcTimeStampValue;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["value/Value.ts"],"names":[],"mappings":"","file":"value/Value.js","sourcesContent":["import { BoxedValueTypes } from \"./BoxedValueTypes.js\";\nimport { ExprType } from \"../type/ExprType.js\";\n\nexport interface Value<\n T extends\n | BoxedValueTypes\n | Array<Value<BoxedValueTypes | Array<Value<BoxedValueTypes>>>>\n> {\n getValue(): T;\n equals(other: Value<any>): boolean;\n toString();\n getType(): ExprType;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["value/Value.ts"],"names":[],"mappings":"","file":"value/Value.js","sourcesContent":["import { BoxedValueTypes } from \"./BoxedValueTypes.js\";\nimport { ExprType } from \"../type/ExprType.js\";\nimport { NonBoxedValueTypes } from \"./NonBoxedValueTypes.js\";\n\nexport interface Value<\n T extends\n | NonBoxedValueTypes\n | BoxedValueTypes\n | Array<Value<BoxedValueTypes | Array<Value<BoxedValueTypes>>>>\n> {\n getValue(): T;\n equals(other: Value<any>): boolean;\n toString();\n getType(): ExprType;\n}\n"]}
|
package/dist/type/Types.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ export declare class Type {
|
|
|
9
9
|
static readonly STRING: SimpleType;
|
|
10
10
|
static readonly LOGICAL: SimpleType;
|
|
11
11
|
static readonly BOOLEAN: SimpleType;
|
|
12
|
+
static readonly IFC_DATE: SimpleType;
|
|
13
|
+
static readonly IFC_DATE_TIME: SimpleType;
|
|
14
|
+
static readonly IFC_TIME: SimpleType;
|
|
15
|
+
static readonly IFC_DURATION: SimpleType;
|
|
16
|
+
static readonly IFC_TIME_STAMP: SimpleType;
|
|
12
17
|
static readonly IFC_OBJECT_REF: SimpleType;
|
|
13
18
|
static readonly IFC_ELEMENT_REF: SimpleType;
|
|
14
19
|
static readonly IFC_PROPERTY_REF: SimpleType;
|
|
@@ -24,10 +29,20 @@ export declare class Types {
|
|
|
24
29
|
static isBoolean(actualType: ExprType): boolean;
|
|
25
30
|
static isLogical(actualType: ExprType): boolean;
|
|
26
31
|
static isString(actualType: ExprType): boolean;
|
|
32
|
+
static isIfcDate(actualType: ExprType): boolean;
|
|
33
|
+
static isIfcDateTime(actualType: ExprType): boolean;
|
|
34
|
+
static isIfcTime(actualType: ExprType): boolean;
|
|
35
|
+
static isIfcDuration(actualType: ExprType): boolean;
|
|
36
|
+
static isIfcTimeStamp(actualType: ExprType): boolean;
|
|
27
37
|
static isType(actualType: ExprType, type: ExprType): boolean;
|
|
28
38
|
static boolean(): SimpleType;
|
|
29
39
|
static logical(): SimpleType;
|
|
30
40
|
static string(): SimpleType;
|
|
41
|
+
static ifcDate(): SimpleType;
|
|
42
|
+
static ifcDateTime(): SimpleType;
|
|
43
|
+
static ifcTime(): SimpleType;
|
|
44
|
+
static ifcDuration(): SimpleType;
|
|
45
|
+
static ifcTimeStamp(): SimpleType;
|
|
31
46
|
static numeric(): SimpleType;
|
|
32
47
|
static ifcObjectRef(): SimpleType;
|
|
33
48
|
static requireIsAssignableFrom(expectedType: ExprType, actualType: ExprType, exceptionProducer: () => ExpressionTypeError): void;
|
|
@@ -5,4 +5,9 @@ import { LogicalValue } from "./LogicalValue.js";
|
|
|
5
5
|
import { ReferenceValue } from "./ReferenceValue.js";
|
|
6
6
|
import { ArrayValue } from "./ArrayValue.js";
|
|
7
7
|
import { ObjectAccessorValue } from "./ObjectAccessorValue.js";
|
|
8
|
-
|
|
8
|
+
import { IfcDateValue } from "./IfcDateValue.js";
|
|
9
|
+
import { IfcDateTimeValue } from "./IfcDateTimeValue.js";
|
|
10
|
+
import { IfcTimeValue } from "./IfcTimeValue.js";
|
|
11
|
+
import { IfcDurationValue } from "./IfcDurationValue.js";
|
|
12
|
+
import { IfcTimeStampValue } from "./IfcTimeStampValue.js";
|
|
13
|
+
export type ExpressionValue = NumericValue | StringValue | BooleanValue | LogicalValue | IfcDateValue | IfcDateTimeValue | IfcTimeValue | IfcDurationValue | IfcTimeStampValue | ReferenceValue | ObjectAccessorValue | ArrayValue;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Value } from "./Value.js";
|
|
2
|
+
import { Comparable } from "./Comparable.js";
|
|
3
|
+
import { ExprType } from "../type/ExprType.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
|
+
import { IfcDurationValue } from "./IfcDurationValue.js";
|
|
9
|
+
export declare class IfcDateTimeValue implements Value<IfcDateTimeValue>, Comparable<IfcDateTimeValue> {
|
|
10
|
+
private readonly utcDateValue;
|
|
11
|
+
private readonly stringRepresentation;
|
|
12
|
+
private readonly originalTimeZoneHours;
|
|
13
|
+
private readonly originalTimeZoneMinutes;
|
|
14
|
+
private readonly secondFraction;
|
|
15
|
+
private static readonly regex;
|
|
16
|
+
constructor(value: string | number | Decimal | IfcDateTimeValue | ParsedIfcDateTimeValue);
|
|
17
|
+
static parseIfcDate(value: string): ParsedIfcDateTimeValue;
|
|
18
|
+
static of(value: string): IfcDateTimeValue;
|
|
19
|
+
private getTimeAsString;
|
|
20
|
+
private pad00;
|
|
21
|
+
private getDateAsString;
|
|
22
|
+
getTimeZoneAsString(): String;
|
|
23
|
+
private getTimeStampSeconds;
|
|
24
|
+
getValue(): IfcDateTimeValue;
|
|
25
|
+
getType(): ExprType;
|
|
26
|
+
static isIfcDateTimeValueType(arg: any): arg is IfcDateTimeValue;
|
|
27
|
+
static isValidStringRepresentation(str: string): boolean;
|
|
28
|
+
equals(other: Value<any>): boolean;
|
|
29
|
+
private toCanonicalString;
|
|
30
|
+
toString(): string;
|
|
31
|
+
compareTo(other: IfcDateTimeValue): number;
|
|
32
|
+
static ofTimeStampSeconds(timeStampSeconds: Decimal | number): IfcDateTimeValue;
|
|
33
|
+
toIfcDateValue(): IfcDateValue;
|
|
34
|
+
toIfcTimeValue(): IfcTimeValue;
|
|
35
|
+
toIfcTimeStampValue(): IfcTimeStampValue;
|
|
36
|
+
addDuration(duration: IfcDurationValue): IfcDateTimeValue;
|
|
37
|
+
}
|
|
38
|
+
export type ParsedIfcDateTimeValue = {
|
|
39
|
+
utcDate: Date;
|
|
40
|
+
secondFraction: Decimal;
|
|
41
|
+
originalTimeZoneHours?: number;
|
|
42
|
+
originalTimeZoneMinutes?: number;
|
|
43
|
+
};
|
|
44
|
+
export declare function isParsedIfcDateTimeValue(arg: any): arg is ParsedIfcDateTimeValue;
|