this repo has no description
at main 54 lines 2.3 kB view raw
1// 2// EncodingStrategies.swift 3// URLQueryItemCoder 4// 5// Created by Kyle Hughes on 3/9/23. 6// 7 8/// The strategies for encoding `Encodable` values. 9public struct EncodingStrategies { 10 /// The collection initialized to all default values. 11 public static let `default` = Self() 12 13 /// The strategy to use for encoding `Array` values. 14 public var arrayStrategy: ArrayEncodingStrategy 15 16 /// The strategy to use for encoding `Data` values. 17 public var dataStrategy: DataEncodingStrategy 18 19 /// The strategy to use for encoding `Date` values. 20 public var dateStrategy: DateEncodingStrategy 21 22 /// The strategy to use for automatically changing the value of keys before encoding. 23 public var keyStrategy: KeyEncodingStrategy 24 25 /// The strategy to use for non-conforming floating-point values (IEEE 754 infinity and NaN). 26 public var nonConformingFloatStrategy: NonConformingFloatEncodingStrategy 27 28 // MARK: Public Initialization 29 30 /// Creates a new collection of encoding strategies for encoding `Encodable` values. 31 /// 32 /// The default encoding strategies are used if none are supplied. 33 /// 34 /// - Parameter arrayStrategy: The strategy to use for encoding `Array` values. 35 /// - Parameter dataStrategy: The strategy to use for encoding `Data` values. 36 /// - Parameter dateStrategy: The strategy to use for encoding `Date` values. 37 /// - Parameter keyStrategy: The strategy to use for encoding keys on keyed containers. 38 /// - Parameter nonConformingFloatStrategy: The strategy to use for encoding non-conforming floating-point values 39 /// (IEEE 754 infinity and NaN). 40 /// - Returns: Encoding strategies for encoding `Encodable` values. 41 public init( 42 arrayStrategy: ArrayEncodingStrategy = .default, 43 dataStrategy: DataEncodingStrategy = .default, 44 dateStrategy: DateEncodingStrategy = .default, 45 keyStrategy: KeyEncodingStrategy = .default, 46 nonConformingFloatStrategy: NonConformingFloatEncodingStrategy = .default 47 ) { 48 self.arrayStrategy = arrayStrategy 49 self.dataStrategy = dataStrategy 50 self.dateStrategy = dateStrategy 51 self.keyStrategy = keyStrategy 52 self.nonConformingFloatStrategy = nonConformingFloatStrategy 53 } 54}