Swiftpack.co - treatwell/ISO8601PeriodDuration as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by treatwell.
treatwell/ISO8601PeriodDuration 3.1.0
Parse ISO 8601 period-duration strings into DateComponents
⭐️ 8
🕓 2 years ago
.package(url: "https://github.com/treatwell/ISO8601PeriodDuration.git", from: "3.1.0")

ISO8601PeriodDuration

Usage

Lightweight library to parse ISO 8601 period-duration strings into DateComponents, motivated by the lack of support for this standard in Foundation.

It's a rough equivalent of Java's PeriodDuration, except it only provides the parsing side of its functionality, leaving representation to the built-in DateComponents.

It leverages Swift 5.1's property wrappers in order to make parsing functionality as unintrusive as possible, optimistic for a seamless drop-in replacement when/if Apple ever introduces a similar solution into Foundation.

Example

Consider the following struct:

struct Appointment: Decodable {
    @ISO8601PeriodDuration var duration: DateComponents
}

Decoded with the following JSON:

{
    "duration": "PT2H30M"
}

It'll yield:

DateComponents
    .year -> nil
    .month -> nil
    .day -> nil
    .hour -> 2
    .minute -> 30
    .second -> nil

Note: weeks (P3W) are supported, though they end up translated to days.

Author Information

David Roman - [email protected]

License

The contents of this repository are licensed under the Apache License, version 2.0.

GitHub

link
Stars: 8
Last commit: 2 years ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

3.1.0
2 years ago
  • Added Hashable support for wrappers (#3).

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics