Skip to content

Commit

Permalink
ExifDateTime improvements:
Browse files Browse the repository at this point in the history
- .from() no-ops on instances
- .from() accepts nullish
- .toDateTime and toEpochSeconds take an override zone
  • Loading branch information
mceachen committed Sep 22, 2024
1 parent 2a0b216 commit 03b41e1
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions src/ExifDateTime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,16 @@ import {
*/
export class ExifDateTime {
static from(
exifOrIso: string,
exifOrIso: Maybe<string | ExifDateTime>,
defaultZone?: Maybe<string>
): Maybe<ExifDateTime> {
return (
// in order of strictness:
this.fromExifStrict(exifOrIso, defaultZone) ??
this.fromISO(exifOrIso, defaultZone) ??
this.fromExifLoose(exifOrIso, defaultZone)
)
return exifOrIso instanceof ExifDateTime
? exifOrIso // already an ExifDateTime
: blank(exifOrIso)
? undefined // in order of strictness:
: (this.fromExifStrict(exifOrIso, defaultZone) ??
this.fromISO(exifOrIso, defaultZone) ??
this.fromExifLoose(exifOrIso, defaultZone))
}

static fromISO(
Expand Down Expand Up @@ -262,7 +263,7 @@ export class ExifDateTime {
* CAUTION: This instance will inherit the system timezone if this instance
* has an unset zone (as Luxon doesn't support "unset" timezones)
*/
toDateTime(): DateTime {
toDateTime(overrideZone?: Maybe<string>): DateTime {
return (this.#dt ??= DateTime.fromObject(
{
year: this.year,
Expand All @@ -274,13 +275,13 @@ export class ExifDateTime {
millisecond: this.millisecond,
},
{
zone: this.zone,
zone: overrideZone ?? this.zone,
}
))
}

toEpochSeconds() {
return this.toDateTime().toUnixInteger()
toEpochSeconds(overrideZone?: Maybe<string>) {
return this.toDateTime(overrideZone).toUnixInteger()
}

toDate(): Date {
Expand Down

0 comments on commit 03b41e1

Please sign in to comment.