PumpSettings.swift 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. //
  2. // PumpSettings.swift
  3. // RileyLinkKit
  4. //
  5. // Copyright © 2017 Pete Schwamb. All rights reserved.
  6. //
  7. public struct PumpSettings: RawRepresentable {
  8. public typealias RawValue = [String: Any]
  9. public var pumpID: String
  10. public var pumpRegion: PumpRegion = .northAmerica
  11. public init?(rawValue: RawValue) {
  12. guard let pumpID = rawValue["pumpID"] as? String else {
  13. return nil
  14. }
  15. self.pumpID = pumpID
  16. if let pumpRegionRaw = rawValue["pumpRegion"] as? PumpRegion.RawValue,
  17. let pumpRegion = PumpRegion(rawValue: pumpRegionRaw) {
  18. self.pumpRegion = pumpRegion
  19. }
  20. }
  21. public init(pumpID: String, pumpRegion: PumpRegion? = nil) {
  22. self.pumpID = pumpID
  23. if let pumpRegion = pumpRegion {
  24. self.pumpRegion = pumpRegion
  25. }
  26. }
  27. public var rawValue: RawValue {
  28. return [
  29. "pumpID": pumpID,
  30. "pumpRegion": pumpRegion.rawValue
  31. ]
  32. }
  33. }
  34. extension PumpSettings: CustomDebugStringConvertible {
  35. public var debugDescription: String {
  36. return [
  37. "## PumpSettings",
  38. "pumpID: ✔︎",
  39. "pumpRegion: \(pumpRegion)",
  40. ].joined(separator: "\n")
  41. }
  42. }
  43. extension PumpSettings: Equatable {
  44. public static func ==(lhs: PumpSettings, rhs: PumpSettings) -> Bool {
  45. return lhs.pumpID == rhs.pumpID && lhs.pumpRegion == rhs.pumpRegion
  46. }
  47. }