this repo has no description
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}