| 1234567891011121314151617181920212223242526272829303132333435 |
- import Foundation
- struct CarbRatios: JSON {
- let units: CarbUnit
- let schedule: [CarbRatioEntry]
- }
- struct CarbRatioEntry: JSON {
- let start: String
- let offset: Int
- let ratio: Decimal
- }
- enum CarbUnit: String, JSON {
- case grams
- case exchanges
- }
- extension CarbRatioEntry {
- private enum CodingKeys: String, CodingKey {
- case start
- case offset
- case ratio
- }
- init(from decoder: Decoder) throws {
- let container = try decoder.container(keyedBy: CodingKeys.self)
- let start = try container.decode(String.self, forKey: .start)
- let offset = try container.decode(Int.self, forKey: .offset)
- let ratio = try container.decode(Double.self, forKey: .ratio).decimal ?? .zero
- self = CarbRatioEntry(start: start, offset: offset, ratio: ratio)
- }
- }
|