├── .gitignore
├── .swift-version
├── .swiftpm
└── xcode
│ └── package.xcworkspace
│ └── contents.xcworkspacedata
├── .travis.yml
├── Classes
├── CodableExtensions.swift
├── DecodingContainerTransformer.swift
└── RegexCodeableTransformer.swift
├── CodableExtensions.podspec
├── Example
├── CodableExtensions.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── CodableExtensions-Example.xcscheme
├── CodableExtensions.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Local Podspecs
│ │ └── CodableExtensions.podspec.json
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── CodableExtensions.xcscheme
│ └── Target Support Files
│ │ ├── CodableExtensions
│ │ ├── CodableExtensions-dummy.m
│ │ ├── CodableExtensions-prefix.pch
│ │ ├── CodableExtensions-umbrella.h
│ │ ├── CodableExtensions.modulemap
│ │ ├── CodableExtensions.xcconfig
│ │ └── Info.plist
│ │ └── Pods-CodableExtensions_Tests
│ │ ├── Info.plist
│ │ ├── Pods-CodableExtensions_Tests-acknowledgements.markdown
│ │ ├── Pods-CodableExtensions_Tests-acknowledgements.plist
│ │ ├── Pods-CodableExtensions_Tests-dummy.m
│ │ ├── Pods-CodableExtensions_Tests-frameworks.sh
│ │ ├── Pods-CodableExtensions_Tests-resources.sh
│ │ ├── Pods-CodableExtensions_Tests-umbrella.h
│ │ ├── Pods-CodableExtensions_Tests.debug.xcconfig
│ │ ├── Pods-CodableExtensions_Tests.modulemap
│ │ └── Pods-CodableExtensions_Tests.release.xcconfig
└── Tests
│ ├── Info.plist
│ └── Tests.swift
├── LICENSE
├── Package.swift
├── README.md
└── _Pods.xcodeproj
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS X
2 | .DS_Store
3 |
4 | # Xcode
5 | build/
6 | *.pbxuser
7 | !default.pbxuser
8 | *.mode1v3
9 | !default.mode1v3
10 | *.mode2v3
11 | !default.mode2v3
12 | *.perspectivev3
13 | !default.perspectivev3
14 | xcuserdata/
15 | *.xccheckout
16 | profile
17 | *.moved-aside
18 | DerivedData
19 | *.hmap
20 | *.ipa
21 |
22 | # Bundler
23 | .bundle
24 |
25 | Carthage
26 | # We recommend against adding the Pods directory to your .gitignore. However
27 | # you should judge for yourself, the pros and cons are mentioned at:
28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
29 | #
30 | # Note: if you ignore the Pods directory, make sure to uncomment
31 | # `pod install` in .travis.yml
32 | #
33 | # Pods/
34 |
--------------------------------------------------------------------------------
/.swift-version:
--------------------------------------------------------------------------------
1 | 5.0
2 |
--------------------------------------------------------------------------------
/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # references:
2 | # * http://www.objc.io/issue-6/travis-ci.html
3 | # * https://github.com/supermarin/xcpretty#usage
4 |
5 | osx_image: xcode7.3
6 | language: objective-c
7 | # cache: cocoapods
8 | # podfile: Example/Podfile
9 | # before_install:
10 | # - gem install cocoapods # Since Travis is not always on latest version
11 | # - pod install --project-directory=Example
12 | script:
13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/CodableExtensions.xcworkspace -scheme CodableExtensions-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
14 | - pod lib lint
15 |
--------------------------------------------------------------------------------
/Classes/CodableExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CodableExtensions.swift
3 | // CodableExtensions
4 | //
5 | // Created by James Ruston on 11/10/2017.
6 | //
7 |
8 | import Foundation
9 |
10 | public extension KeyedDecodingContainer {
11 | func decode(_ key: KeyedDecodingContainer.Key,
12 | transformer: Transformer) throws -> Transformer.Output where Transformer.Input : Decodable {
13 | let decoded: Transformer.Input = try self.decode(key)
14 |
15 | return try transformer.transform(decoded)
16 | }
17 |
18 | func decode(_ key: KeyedDecodingContainer.Key) throws -> T where T : Decodable {
19 | return try self.decode(T.self, forKey: key)
20 | }
21 | }
22 |
23 | public extension KeyedEncodingContainer {
24 |
25 | mutating func encode(_ value: Transformer.Output,
26 | forKey key: KeyedEncodingContainer.Key,
27 | transformer: Transformer) throws where Transformer.Input : Encodable {
28 | let transformed: Transformer.Input = try transformer.transform(value)
29 | try self.encode(transformed, forKey: key)
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Classes/DecodingContainerTransformer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DecodingContainerTransformer.swift
3 | // CodeableExtensions
4 | //
5 | // Created by James Ruston on 11/10/2017.
6 | //
7 |
8 | import Foundation
9 |
10 | public protocol DecodingContainerTransformer {
11 | associatedtype Input
12 | associatedtype Output
13 | func transform(_ decoded: Input) throws -> Output
14 | }
15 |
16 | public protocol EncodingContainerTransformer {
17 | associatedtype Input
18 | associatedtype Output
19 | func transform(_ encoded: Output) throws -> Input
20 | }
21 |
22 | public typealias CodingContainerTransformer = DecodingContainerTransformer & EncodingContainerTransformer
23 |
--------------------------------------------------------------------------------
/Classes/RegexCodeableTransformer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RegexCodableTransformer.swift
3 | // CodableExtensions
4 | //
5 | // Created by James Ruston on 11/10/2017.
6 | //
7 |
8 | import Foundation
9 |
10 | public class RegexCodableTransformer: CodingContainerTransformer {
11 |
12 | public typealias Input = String
13 | public typealias Output = NSRegularExpression
14 |
15 | public init() {}
16 |
17 | public func transform(_ decoded: Input) throws -> Output {
18 | return try NSRegularExpression(pattern: decoded, options: [])
19 | }
20 |
21 | public func transform(_ encoded: NSRegularExpression) throws -> String {
22 | return encoded.pattern
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/CodableExtensions.podspec:
--------------------------------------------------------------------------------
1 |
2 | Pod::Spec.new do |s|
3 | s.name = 'CodableExtensions'
4 | s.swift_version = '5.0'
5 | s.version = '0.3.0'
6 | s.summary = 'CodableExtensions provides some useful extensions to Swift Codable'
7 | s.description = <<-DESC
8 | Adds extensions to allow custom transformations during decoding. Also makes the interface a bit cleaner.
9 | DESC
10 |
11 | s.homepage = 'https://github.com/jamesruston/CodableExtensions'
12 | s.license = { :type => 'MIT', :file => 'LICENSE' }
13 | s.author = { 'jamesruston' => 'jruston90@gmail.com' }
14 | s.source = { :git => 'https://github.com/jamesruston/CodableExtensions.git', :tag => s.version.to_s }
15 | s.social_media_url = 'https://twitter.com/james_ruston'
16 |
17 | s.ios.deployment_target = '9.0'
18 |
19 | s.source_files = 'Classes/**/*'
20 | end
21 |
--------------------------------------------------------------------------------
/Example/CodableExtensions.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; };
11 | 7A64111E5E8E2635486C50A5 /* Pods_CodableExtensions_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56B587E1D7B3A34CF5D0114B /* Pods_CodableExtensions_Tests.framework */; };
12 | /* End PBXBuildFile section */
13 |
14 | /* Begin PBXFileReference section */
15 | 199B80666E2684FFB30FF585 /* CodableExtensions.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = CodableExtensions.podspec; path = ../CodableExtensions.podspec; sourceTree = ""; };
16 | 1BA8059839D851DEFB9EB707 /* Pods-CodableExtensions_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodableExtensions_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.release.xcconfig"; sourceTree = ""; };
17 | 1D897BED7D9E0676D38B855E /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; };
18 | 27FB76640D2D437DA3E08BE9 /* Pods-CodableExtensions_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodableExtensions_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.debug.xcconfig"; sourceTree = ""; };
19 | 56B587E1D7B3A34CF5D0114B /* Pods_CodableExtensions_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CodableExtensions_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
20 | 5E37490A89BA87C8FA89710A /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; };
21 | 607FACE51AFB9204008FA782 /* CodableExtensions_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CodableExtensions_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
22 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
23 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; };
24 | /* End PBXFileReference section */
25 |
26 | /* Begin PBXFrameworksBuildPhase section */
27 | 607FACE21AFB9204008FA782 /* Frameworks */ = {
28 | isa = PBXFrameworksBuildPhase;
29 | buildActionMask = 2147483647;
30 | files = (
31 | 7A64111E5E8E2635486C50A5 /* Pods_CodableExtensions_Tests.framework in Frameworks */,
32 | );
33 | runOnlyForDeploymentPostprocessing = 0;
34 | };
35 | /* End PBXFrameworksBuildPhase section */
36 |
37 | /* Begin PBXGroup section */
38 | 0E6E546304252B8DC88CC7E8 /* Frameworks */ = {
39 | isa = PBXGroup;
40 | children = (
41 | 56B587E1D7B3A34CF5D0114B /* Pods_CodableExtensions_Tests.framework */,
42 | );
43 | name = Frameworks;
44 | sourceTree = "";
45 | };
46 | 607FACC71AFB9204008FA782 = {
47 | isa = PBXGroup;
48 | children = (
49 | 607FACF51AFB993E008FA782 /* Podspec Metadata */,
50 | 607FACE81AFB9204008FA782 /* Tests */,
51 | 607FACD11AFB9204008FA782 /* Products */,
52 | F6A1DD21B2468C10587F2161 /* Pods */,
53 | 0E6E546304252B8DC88CC7E8 /* Frameworks */,
54 | );
55 | sourceTree = "";
56 | };
57 | 607FACD11AFB9204008FA782 /* Products */ = {
58 | isa = PBXGroup;
59 | children = (
60 | 607FACE51AFB9204008FA782 /* CodableExtensions_Tests.xctest */,
61 | );
62 | name = Products;
63 | sourceTree = "";
64 | };
65 | 607FACE81AFB9204008FA782 /* Tests */ = {
66 | isa = PBXGroup;
67 | children = (
68 | 607FACEB1AFB9204008FA782 /* Tests.swift */,
69 | 607FACE91AFB9204008FA782 /* Supporting Files */,
70 | );
71 | path = Tests;
72 | sourceTree = "";
73 | };
74 | 607FACE91AFB9204008FA782 /* Supporting Files */ = {
75 | isa = PBXGroup;
76 | children = (
77 | 607FACEA1AFB9204008FA782 /* Info.plist */,
78 | );
79 | name = "Supporting Files";
80 | sourceTree = "";
81 | };
82 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = {
83 | isa = PBXGroup;
84 | children = (
85 | 199B80666E2684FFB30FF585 /* CodableExtensions.podspec */,
86 | 1D897BED7D9E0676D38B855E /* README.md */,
87 | 5E37490A89BA87C8FA89710A /* LICENSE */,
88 | );
89 | name = "Podspec Metadata";
90 | sourceTree = "";
91 | };
92 | F6A1DD21B2468C10587F2161 /* Pods */ = {
93 | isa = PBXGroup;
94 | children = (
95 | 27FB76640D2D437DA3E08BE9 /* Pods-CodableExtensions_Tests.debug.xcconfig */,
96 | 1BA8059839D851DEFB9EB707 /* Pods-CodableExtensions_Tests.release.xcconfig */,
97 | );
98 | name = Pods;
99 | sourceTree = "";
100 | };
101 | /* End PBXGroup section */
102 |
103 | /* Begin PBXNativeTarget section */
104 | 607FACE41AFB9204008FA782 /* CodableExtensions_Tests */ = {
105 | isa = PBXNativeTarget;
106 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "CodableExtensions_Tests" */;
107 | buildPhases = (
108 | 23C4517F81D503C05D15F386 /* [CP] Check Pods Manifest.lock */,
109 | 607FACE11AFB9204008FA782 /* Sources */,
110 | 607FACE21AFB9204008FA782 /* Frameworks */,
111 | 607FACE31AFB9204008FA782 /* Resources */,
112 | 92A9794B5372136EE5A05851 /* [CP] Embed Pods Frameworks */,
113 | 3E0D3BFC1AED45A1AC30E0F8 /* [CP] Copy Pods Resources */,
114 | );
115 | buildRules = (
116 | );
117 | dependencies = (
118 | );
119 | name = CodableExtensions_Tests;
120 | productName = Tests;
121 | productReference = 607FACE51AFB9204008FA782 /* CodableExtensions_Tests.xctest */;
122 | productType = "com.apple.product-type.bundle.unit-test";
123 | };
124 | /* End PBXNativeTarget section */
125 |
126 | /* Begin PBXProject section */
127 | 607FACC81AFB9204008FA782 /* Project object */ = {
128 | isa = PBXProject;
129 | attributes = {
130 | LastSwiftUpdateCheck = 0830;
131 | LastUpgradeCheck = 1020;
132 | ORGANIZATIONNAME = CocoaPods;
133 | TargetAttributes = {
134 | 607FACE41AFB9204008FA782 = {
135 | CreatedOnToolsVersion = 6.3.1;
136 | DevelopmentTeam = 3EWBZ32HU3;
137 | LastSwiftMigration = 1020;
138 | TestTargetID = 607FACCF1AFB9204008FA782;
139 | };
140 | };
141 | };
142 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "CodableExtensions" */;
143 | compatibilityVersion = "Xcode 3.2";
144 | developmentRegion = English;
145 | hasScannedForEncodings = 0;
146 | knownRegions = (
147 | English,
148 | en,
149 | Base,
150 | );
151 | mainGroup = 607FACC71AFB9204008FA782;
152 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */;
153 | projectDirPath = "";
154 | projectRoot = "";
155 | targets = (
156 | 607FACE41AFB9204008FA782 /* CodableExtensions_Tests */,
157 | );
158 | };
159 | /* End PBXProject section */
160 |
161 | /* Begin PBXResourcesBuildPhase section */
162 | 607FACE31AFB9204008FA782 /* Resources */ = {
163 | isa = PBXResourcesBuildPhase;
164 | buildActionMask = 2147483647;
165 | files = (
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXShellScriptBuildPhase section */
172 | 23C4517F81D503C05D15F386 /* [CP] Check Pods Manifest.lock */ = {
173 | isa = PBXShellScriptBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | );
177 | inputPaths = (
178 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
179 | "${PODS_ROOT}/Manifest.lock",
180 | );
181 | name = "[CP] Check Pods Manifest.lock";
182 | outputPaths = (
183 | "$(DERIVED_FILE_DIR)/Pods-CodableExtensions_Tests-checkManifestLockResult.txt",
184 | );
185 | runOnlyForDeploymentPostprocessing = 0;
186 | shellPath = /bin/sh;
187 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
188 | showEnvVarsInLog = 0;
189 | };
190 | 3E0D3BFC1AED45A1AC30E0F8 /* [CP] Copy Pods Resources */ = {
191 | isa = PBXShellScriptBuildPhase;
192 | buildActionMask = 2147483647;
193 | files = (
194 | );
195 | inputPaths = (
196 | );
197 | name = "[CP] Copy Pods Resources";
198 | outputPaths = (
199 | );
200 | runOnlyForDeploymentPostprocessing = 0;
201 | shellPath = /bin/sh;
202 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-resources.sh\"\n";
203 | showEnvVarsInLog = 0;
204 | };
205 | 92A9794B5372136EE5A05851 /* [CP] Embed Pods Frameworks */ = {
206 | isa = PBXShellScriptBuildPhase;
207 | buildActionMask = 2147483647;
208 | files = (
209 | );
210 | inputPaths = (
211 | "${SRCROOT}/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-frameworks.sh",
212 | "${BUILT_PRODUCTS_DIR}/CodableExtensions/CodableExtensions.framework",
213 | );
214 | name = "[CP] Embed Pods Frameworks";
215 | outputPaths = (
216 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CodableExtensions.framework",
217 | );
218 | runOnlyForDeploymentPostprocessing = 0;
219 | shellPath = /bin/sh;
220 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-frameworks.sh\"\n";
221 | showEnvVarsInLog = 0;
222 | };
223 | /* End PBXShellScriptBuildPhase section */
224 |
225 | /* Begin PBXSourcesBuildPhase section */
226 | 607FACE11AFB9204008FA782 /* Sources */ = {
227 | isa = PBXSourcesBuildPhase;
228 | buildActionMask = 2147483647;
229 | files = (
230 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */,
231 | );
232 | runOnlyForDeploymentPostprocessing = 0;
233 | };
234 | /* End PBXSourcesBuildPhase section */
235 |
236 | /* Begin XCBuildConfiguration section */
237 | 607FACED1AFB9204008FA782 /* Debug */ = {
238 | isa = XCBuildConfiguration;
239 | buildSettings = {
240 | ALWAYS_SEARCH_USER_PATHS = NO;
241 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
242 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
243 | CLANG_CXX_LIBRARY = "libc++";
244 | CLANG_ENABLE_MODULES = YES;
245 | CLANG_ENABLE_OBJC_ARC = YES;
246 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
247 | CLANG_WARN_BOOL_CONVERSION = YES;
248 | CLANG_WARN_COMMA = YES;
249 | CLANG_WARN_CONSTANT_CONVERSION = YES;
250 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
251 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
252 | CLANG_WARN_EMPTY_BODY = YES;
253 | CLANG_WARN_ENUM_CONVERSION = YES;
254 | CLANG_WARN_INFINITE_RECURSION = YES;
255 | CLANG_WARN_INT_CONVERSION = YES;
256 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
257 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
258 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
259 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
260 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
261 | CLANG_WARN_STRICT_PROTOTYPES = YES;
262 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
263 | CLANG_WARN_UNREACHABLE_CODE = YES;
264 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
265 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
266 | COPY_PHASE_STRIP = NO;
267 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
268 | ENABLE_STRICT_OBJC_MSGSEND = YES;
269 | ENABLE_TESTABILITY = YES;
270 | GCC_C_LANGUAGE_STANDARD = gnu99;
271 | GCC_DYNAMIC_NO_PIC = NO;
272 | GCC_NO_COMMON_BLOCKS = YES;
273 | GCC_OPTIMIZATION_LEVEL = 0;
274 | GCC_PREPROCESSOR_DEFINITIONS = (
275 | "DEBUG=1",
276 | "$(inherited)",
277 | );
278 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
279 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
280 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
281 | GCC_WARN_UNDECLARED_SELECTOR = YES;
282 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
283 | GCC_WARN_UNUSED_FUNCTION = YES;
284 | GCC_WARN_UNUSED_VARIABLE = YES;
285 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
286 | MTL_ENABLE_DEBUG_INFO = YES;
287 | ONLY_ACTIVE_ARCH = YES;
288 | SDKROOT = iphoneos;
289 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
290 | SWIFT_VERSION = 5.0;
291 | };
292 | name = Debug;
293 | };
294 | 607FACEE1AFB9204008FA782 /* Release */ = {
295 | isa = XCBuildConfiguration;
296 | buildSettings = {
297 | ALWAYS_SEARCH_USER_PATHS = NO;
298 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
299 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
300 | CLANG_CXX_LIBRARY = "libc++";
301 | CLANG_ENABLE_MODULES = YES;
302 | CLANG_ENABLE_OBJC_ARC = YES;
303 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
304 | CLANG_WARN_BOOL_CONVERSION = YES;
305 | CLANG_WARN_COMMA = YES;
306 | CLANG_WARN_CONSTANT_CONVERSION = YES;
307 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
308 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
309 | CLANG_WARN_EMPTY_BODY = YES;
310 | CLANG_WARN_ENUM_CONVERSION = YES;
311 | CLANG_WARN_INFINITE_RECURSION = YES;
312 | CLANG_WARN_INT_CONVERSION = YES;
313 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
314 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
315 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
316 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
317 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
318 | CLANG_WARN_STRICT_PROTOTYPES = YES;
319 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
320 | CLANG_WARN_UNREACHABLE_CODE = YES;
321 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
322 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
323 | COPY_PHASE_STRIP = NO;
324 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
325 | ENABLE_NS_ASSERTIONS = NO;
326 | ENABLE_STRICT_OBJC_MSGSEND = YES;
327 | GCC_C_LANGUAGE_STANDARD = gnu99;
328 | GCC_NO_COMMON_BLOCKS = YES;
329 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
330 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
331 | GCC_WARN_UNDECLARED_SELECTOR = YES;
332 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
333 | GCC_WARN_UNUSED_FUNCTION = YES;
334 | GCC_WARN_UNUSED_VARIABLE = YES;
335 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
336 | MTL_ENABLE_DEBUG_INFO = NO;
337 | SDKROOT = iphoneos;
338 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
339 | SWIFT_VERSION = 5.0;
340 | VALIDATE_PRODUCT = YES;
341 | };
342 | name = Release;
343 | };
344 | 607FACF31AFB9204008FA782 /* Debug */ = {
345 | isa = XCBuildConfiguration;
346 | baseConfigurationReference = 27FB76640D2D437DA3E08BE9 /* Pods-CodableExtensions_Tests.debug.xcconfig */;
347 | buildSettings = {
348 | DEVELOPMENT_TEAM = 3EWBZ32HU3;
349 | FRAMEWORK_SEARCH_PATHS = (
350 | "$(SDKROOT)/Developer/Library/Frameworks",
351 | "$(inherited)",
352 | );
353 | GCC_PREPROCESSOR_DEFINITIONS = (
354 | "DEBUG=1",
355 | "$(inherited)",
356 | );
357 | INFOPLIST_FILE = Tests/Info.plist;
358 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
359 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
360 | PRODUCT_NAME = "$(TARGET_NAME)";
361 | };
362 | name = Debug;
363 | };
364 | 607FACF41AFB9204008FA782 /* Release */ = {
365 | isa = XCBuildConfiguration;
366 | baseConfigurationReference = 1BA8059839D851DEFB9EB707 /* Pods-CodableExtensions_Tests.release.xcconfig */;
367 | buildSettings = {
368 | DEVELOPMENT_TEAM = 3EWBZ32HU3;
369 | FRAMEWORK_SEARCH_PATHS = (
370 | "$(SDKROOT)/Developer/Library/Frameworks",
371 | "$(inherited)",
372 | );
373 | INFOPLIST_FILE = Tests/Info.plist;
374 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
375 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
376 | PRODUCT_NAME = "$(TARGET_NAME)";
377 | };
378 | name = Release;
379 | };
380 | /* End XCBuildConfiguration section */
381 |
382 | /* Begin XCConfigurationList section */
383 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "CodableExtensions" */ = {
384 | isa = XCConfigurationList;
385 | buildConfigurations = (
386 | 607FACED1AFB9204008FA782 /* Debug */,
387 | 607FACEE1AFB9204008FA782 /* Release */,
388 | );
389 | defaultConfigurationIsVisible = 0;
390 | defaultConfigurationName = Release;
391 | };
392 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "CodableExtensions_Tests" */ = {
393 | isa = XCConfigurationList;
394 | buildConfigurations = (
395 | 607FACF31AFB9204008FA782 /* Debug */,
396 | 607FACF41AFB9204008FA782 /* Release */,
397 | );
398 | defaultConfigurationIsVisible = 0;
399 | defaultConfigurationName = Release;
400 | };
401 | /* End XCConfigurationList section */
402 | };
403 | rootObject = 607FACC81AFB9204008FA782 /* Project object */;
404 | }
405 |
--------------------------------------------------------------------------------
/Example/CodableExtensions.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/CodableExtensions.xcodeproj/xcshareddata/xcschemes/CodableExtensions-Example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
47 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
65 |
66 |
67 |
68 |
78 |
80 |
86 |
87 |
88 |
89 |
90 |
91 |
97 |
99 |
105 |
106 |
107 |
108 |
110 |
111 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/Example/CodableExtensions.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/CodableExtensions.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 | target 'CodableExtensions_Tests' do
3 | pod 'CodableExtensions', :path => '../'
4 |
5 |
6 | end
7 |
--------------------------------------------------------------------------------
/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - CodableExtensions (0.1.0)
3 |
4 | DEPENDENCIES:
5 | - CodableExtensions (from `../`)
6 |
7 | EXTERNAL SOURCES:
8 | CodableExtensions:
9 | :path: ../
10 |
11 | SPEC CHECKSUMS:
12 | CodableExtensions: 69ecd31563c06fcd71ab0c291ff63c0c9c1f308d
13 |
14 | PODFILE CHECKSUM: d72bb615bb0a397c04145c45109081feb40309c1
15 |
16 | COCOAPODS: 1.3.1
17 |
--------------------------------------------------------------------------------
/Example/Pods/Local Podspecs/CodableExtensions.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CodableExtensions",
3 | "version": "0.1.0",
4 | "summary": "A short description of CodableExtensions.",
5 | "description": "TODO: Add long description of the pod here.",
6 | "homepage": "https://github.com/jamesruston/CodableExtensions",
7 | "license": {
8 | "type": "MIT",
9 | "file": "LICENSE"
10 | },
11 | "authors": {
12 | "jamesruston": "jruston90@gmail.com"
13 | },
14 | "source": {
15 | "git": "https://github.com/jamesruston/CodableExtensions.git",
16 | "tag": "0.1.0"
17 | },
18 | "platforms": {
19 | "ios": "8.0"
20 | },
21 | "source_files": "CodableExtensions/Classes/**/*"
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - CodableExtensions (0.1.0)
3 |
4 | DEPENDENCIES:
5 | - CodableExtensions (from `../`)
6 |
7 | EXTERNAL SOURCES:
8 | CodableExtensions:
9 | :path: ../
10 |
11 | SPEC CHECKSUMS:
12 | CodableExtensions: 69ecd31563c06fcd71ab0c291ff63c0c9c1f308d
13 |
14 | PODFILE CHECKSUM: d72bb615bb0a397c04145c45109081feb40309c1
15 |
16 | COCOAPODS: 1.3.1
17 |
--------------------------------------------------------------------------------
/Example/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 17BCD5653136238CE59267975D2120E2 /* CodableExtensions-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D1760A68DE3F1D9901A2F0D00DDA7E /* CodableExtensions-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
11 | 1A2635681F8E4CF300E12897 /* DecodingContainerTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2635651F8E4CF200E12897 /* DecodingContainerTransformer.swift */; };
12 | 1A2635691F8E4CF300E12897 /* RegexCodeableTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2635661F8E4CF200E12897 /* RegexCodeableTransformer.swift */; };
13 | 1A26356A1F8E4CF300E12897 /* CodableExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2635671F8E4CF200E12897 /* CodableExtensions.swift */; };
14 | 1BFD4B1EB2103FF855C0D7564BBF9DBE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; };
15 | 5BCE68D338D2DB0218D83CB87F20E9F6 /* Pods-CodableExtensions_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7D1FA96ADC0FCDC3465A9D8AF7CF8E /* Pods-CodableExtensions_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
16 | 5DCE57CF69A6507DFFB7A1DD876F89B9 /* CodableExtensions-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1443701F9F9211CC9B1185C62C4B8143 /* CodableExtensions-dummy.m */; };
17 | A5E1D97DF4A3399DFE3C52751A2BD59F /* Pods-CodableExtensions_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5ADD280DBE0663CECB3E7435CBF55DA2 /* Pods-CodableExtensions_Tests-dummy.m */; };
18 | E4AB6974A21724CFED2EF5C85F2B59A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; };
19 | /* End PBXBuildFile section */
20 |
21 | /* Begin PBXContainerItemProxy section */
22 | DBEA4108721796ECE34A498E94AA6144 /* PBXContainerItemProxy */ = {
23 | isa = PBXContainerItemProxy;
24 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
25 | proxyType = 1;
26 | remoteGlobalIDString = FD48043DCB4919B6C8F5DAC3390B02D3;
27 | remoteInfo = CodableExtensions;
28 | };
29 | /* End PBXContainerItemProxy section */
30 |
31 | /* Begin PBXFileReference section */
32 | 13D6DD7FAF32B814FA77AFE7840C8C4A /* Pods-CodableExtensions_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-CodableExtensions_Tests.modulemap"; sourceTree = ""; };
33 | 1443701F9F9211CC9B1185C62C4B8143 /* CodableExtensions-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CodableExtensions-dummy.m"; sourceTree = ""; };
34 | 1A2635651F8E4CF200E12897 /* DecodingContainerTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DecodingContainerTransformer.swift; sourceTree = ""; };
35 | 1A2635661F8E4CF200E12897 /* RegexCodeableTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegexCodeableTransformer.swift; sourceTree = ""; };
36 | 1A2635671F8E4CF200E12897 /* CodableExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CodableExtensions.swift; sourceTree = ""; };
37 | 1C297B1487DC2B1D013390967A70AFC2 /* Pods-CodableExtensions_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CodableExtensions_Tests-resources.sh"; sourceTree = ""; };
38 | 2A7D1FA96ADC0FCDC3465A9D8AF7CF8E /* Pods-CodableExtensions_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CodableExtensions_Tests-umbrella.h"; sourceTree = ""; };
39 | 4A1018FF6D98152385AE06D7F97DDF75 /* CodableExtensions.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = CodableExtensions.modulemap; sourceTree = ""; };
40 | 4F95CA9D8EB51DBFB21533CB46955A3B /* Pods-CodableExtensions_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CodableExtensions_Tests.release.xcconfig"; sourceTree = ""; };
41 | 5ADD280DBE0663CECB3E7435CBF55DA2 /* Pods-CodableExtensions_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CodableExtensions_Tests-dummy.m"; sourceTree = ""; };
42 | 5B4868BF5750C783F1450CCB51B04D5B /* Pods-CodableExtensions_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CodableExtensions_Tests.debug.xcconfig"; sourceTree = ""; };
43 | 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
44 | 717AF681E39D76EFB702CB298779F515 /* CodableExtensions-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodableExtensions-prefix.pch"; sourceTree = ""; };
45 | 723AADE460367B567F2149FDF202BFA7 /* Pods-CodableExtensions_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CodableExtensions_Tests-frameworks.sh"; sourceTree = ""; };
46 | 757208C7DAF12F6D9EA08C3CEA72544B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
47 | 8E80CC2C0224B1C426EA23283FDC0611 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
48 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
49 | 95E27344F6DC16BB9F8BD2E78FBA0E06 /* Pods_CodableExtensions_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CodableExtensions_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50 | 96A9653ABAF83C9135103D627A2ABF0A /* Pods-CodableExtensions_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CodableExtensions_Tests-acknowledgements.plist"; sourceTree = ""; };
51 | 9E8F97E60FAFF70E369F92808D8B75F7 /* Pods-CodableExtensions_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CodableExtensions_Tests-acknowledgements.markdown"; sourceTree = ""; };
52 | B05266C99499A754E55DEF3242DC5F78 /* CodableExtensions.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CodableExtensions.xcconfig; sourceTree = ""; };
53 | B7D1760A68DE3F1D9901A2F0D00DDA7E /* CodableExtensions-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodableExtensions-umbrella.h"; sourceTree = ""; };
54 | C62BADF5277E77EDC9D318C68BAFFB5C /* CodableExtensions.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CodableExtensions.framework; sourceTree = BUILT_PRODUCTS_DIR; };
55 | /* End PBXFileReference section */
56 |
57 | /* Begin PBXFrameworksBuildPhase section */
58 | 2FE73C5A4D8AE124D1480510F1B3C235 /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | E4AB6974A21724CFED2EF5C85F2B59A0 /* Foundation.framework in Frameworks */,
63 | );
64 | runOnlyForDeploymentPostprocessing = 0;
65 | };
66 | DBE0886D79F9CF2FF835B68160394797 /* Frameworks */ = {
67 | isa = PBXFrameworksBuildPhase;
68 | buildActionMask = 2147483647;
69 | files = (
70 | 1BFD4B1EB2103FF855C0D7564BBF9DBE /* Foundation.framework in Frameworks */,
71 | );
72 | runOnlyForDeploymentPostprocessing = 0;
73 | };
74 | /* End PBXFrameworksBuildPhase section */
75 |
76 | /* Begin PBXGroup section */
77 | 1A26356B1F8E56CE00E12897 /* Classes */ = {
78 | isa = PBXGroup;
79 | children = (
80 | 1A2635671F8E4CF200E12897 /* CodableExtensions.swift */,
81 | 1A2635651F8E4CF200E12897 /* DecodingContainerTransformer.swift */,
82 | 1A2635661F8E4CF200E12897 /* RegexCodeableTransformer.swift */,
83 | );
84 | path = Classes;
85 | sourceTree = "";
86 | };
87 | 1F3D0A99271E532CC39FE07BBFAD73B2 /* Development Pods */ = {
88 | isa = PBXGroup;
89 | children = (
90 | F489167A08AC05F69D102D38063B0473 /* CodableExtensions */,
91 | );
92 | name = "Development Pods";
93 | sourceTree = "";
94 | };
95 | 2CA52D4B0F689931B4311516D18B0FE9 /* Pods-CodableExtensions_Tests */ = {
96 | isa = PBXGroup;
97 | children = (
98 | 8E80CC2C0224B1C426EA23283FDC0611 /* Info.plist */,
99 | 13D6DD7FAF32B814FA77AFE7840C8C4A /* Pods-CodableExtensions_Tests.modulemap */,
100 | 9E8F97E60FAFF70E369F92808D8B75F7 /* Pods-CodableExtensions_Tests-acknowledgements.markdown */,
101 | 96A9653ABAF83C9135103D627A2ABF0A /* Pods-CodableExtensions_Tests-acknowledgements.plist */,
102 | 5ADD280DBE0663CECB3E7435CBF55DA2 /* Pods-CodableExtensions_Tests-dummy.m */,
103 | 723AADE460367B567F2149FDF202BFA7 /* Pods-CodableExtensions_Tests-frameworks.sh */,
104 | 1C297B1487DC2B1D013390967A70AFC2 /* Pods-CodableExtensions_Tests-resources.sh */,
105 | 2A7D1FA96ADC0FCDC3465A9D8AF7CF8E /* Pods-CodableExtensions_Tests-umbrella.h */,
106 | 5B4868BF5750C783F1450CCB51B04D5B /* Pods-CodableExtensions_Tests.debug.xcconfig */,
107 | 4F95CA9D8EB51DBFB21533CB46955A3B /* Pods-CodableExtensions_Tests.release.xcconfig */,
108 | );
109 | name = "Pods-CodableExtensions_Tests";
110 | path = "Target Support Files/Pods-CodableExtensions_Tests";
111 | sourceTree = "";
112 | };
113 | 3FB285B50B9209E77D961ECFC3B4D091 /* Targets Support Files */ = {
114 | isa = PBXGroup;
115 | children = (
116 | 2CA52D4B0F689931B4311516D18B0FE9 /* Pods-CodableExtensions_Tests */,
117 | );
118 | name = "Targets Support Files";
119 | sourceTree = "";
120 | };
121 | 4B19AE21BD230A1F61E537A2990A919D /* Support Files */ = {
122 | isa = PBXGroup;
123 | children = (
124 | 4A1018FF6D98152385AE06D7F97DDF75 /* CodableExtensions.modulemap */,
125 | B05266C99499A754E55DEF3242DC5F78 /* CodableExtensions.xcconfig */,
126 | 1443701F9F9211CC9B1185C62C4B8143 /* CodableExtensions-dummy.m */,
127 | 717AF681E39D76EFB702CB298779F515 /* CodableExtensions-prefix.pch */,
128 | B7D1760A68DE3F1D9901A2F0D00DDA7E /* CodableExtensions-umbrella.h */,
129 | 757208C7DAF12F6D9EA08C3CEA72544B /* Info.plist */,
130 | );
131 | name = "Support Files";
132 | path = "Example/Pods/Target Support Files/CodableExtensions";
133 | sourceTree = "";
134 | };
135 | 6DEC1EDEBF7BDE2A4D237BD4B7F77E04 /* Products */ = {
136 | isa = PBXGroup;
137 | children = (
138 | C62BADF5277E77EDC9D318C68BAFFB5C /* CodableExtensions.framework */,
139 | 95E27344F6DC16BB9F8BD2E78FBA0E06 /* Pods_CodableExtensions_Tests.framework */,
140 | );
141 | name = Products;
142 | sourceTree = "";
143 | };
144 | 7DB346D0F39D3F0E887471402A8071AB = {
145 | isa = PBXGroup;
146 | children = (
147 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
148 | 1F3D0A99271E532CC39FE07BBFAD73B2 /* Development Pods */,
149 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */,
150 | 6DEC1EDEBF7BDE2A4D237BD4B7F77E04 /* Products */,
151 | 3FB285B50B9209E77D961ECFC3B4D091 /* Targets Support Files */,
152 | );
153 | sourceTree = "";
154 | };
155 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = {
156 | isa = PBXGroup;
157 | children = (
158 | D35AF013A5F0BAD4F32504907A52519E /* iOS */,
159 | );
160 | name = Frameworks;
161 | sourceTree = "";
162 | };
163 | D35AF013A5F0BAD4F32504907A52519E /* iOS */ = {
164 | isa = PBXGroup;
165 | children = (
166 | 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */,
167 | );
168 | name = iOS;
169 | sourceTree = "";
170 | };
171 | F489167A08AC05F69D102D38063B0473 /* CodableExtensions */ = {
172 | isa = PBXGroup;
173 | children = (
174 | 1A26356B1F8E56CE00E12897 /* Classes */,
175 | 4B19AE21BD230A1F61E537A2990A919D /* Support Files */,
176 | );
177 | name = CodableExtensions;
178 | path = ../..;
179 | sourceTree = "";
180 | };
181 | /* End PBXGroup section */
182 |
183 | /* Begin PBXHeadersBuildPhase section */
184 | 0DBD5E54E62E5ADAA1197B4B125C6767 /* Headers */ = {
185 | isa = PBXHeadersBuildPhase;
186 | buildActionMask = 2147483647;
187 | files = (
188 | 17BCD5653136238CE59267975D2120E2 /* CodableExtensions-umbrella.h in Headers */,
189 | );
190 | runOnlyForDeploymentPostprocessing = 0;
191 | };
192 | 9E3978C22C5555037024B2766A1BBA56 /* Headers */ = {
193 | isa = PBXHeadersBuildPhase;
194 | buildActionMask = 2147483647;
195 | files = (
196 | 5BCE68D338D2DB0218D83CB87F20E9F6 /* Pods-CodableExtensions_Tests-umbrella.h in Headers */,
197 | );
198 | runOnlyForDeploymentPostprocessing = 0;
199 | };
200 | /* End PBXHeadersBuildPhase section */
201 |
202 | /* Begin PBXNativeTarget section */
203 | D499E1646F011E05EB84EB6852736874 /* Pods-CodableExtensions_Tests */ = {
204 | isa = PBXNativeTarget;
205 | buildConfigurationList = 6D8046A8FA4C9746E6AEEA032F1DC73C /* Build configuration list for PBXNativeTarget "Pods-CodableExtensions_Tests" */;
206 | buildPhases = (
207 | AC53434FDC98FCBC732B3619DD886B67 /* Sources */,
208 | DBE0886D79F9CF2FF835B68160394797 /* Frameworks */,
209 | 9E3978C22C5555037024B2766A1BBA56 /* Headers */,
210 | );
211 | buildRules = (
212 | );
213 | dependencies = (
214 | 4AAB48891ADDD386269A96A1E2AE9221 /* PBXTargetDependency */,
215 | );
216 | name = "Pods-CodableExtensions_Tests";
217 | productName = "Pods-CodableExtensions_Tests";
218 | productReference = 95E27344F6DC16BB9F8BD2E78FBA0E06 /* Pods_CodableExtensions_Tests.framework */;
219 | productType = "com.apple.product-type.framework";
220 | };
221 | FD48043DCB4919B6C8F5DAC3390B02D3 /* CodableExtensions */ = {
222 | isa = PBXNativeTarget;
223 | buildConfigurationList = 9670CF95606F960194E5D94E6147AC00 /* Build configuration list for PBXNativeTarget "CodableExtensions" */;
224 | buildPhases = (
225 | 78ABA52BB6C3900F92B59F9C99912DD6 /* Sources */,
226 | 2FE73C5A4D8AE124D1480510F1B3C235 /* Frameworks */,
227 | 0DBD5E54E62E5ADAA1197B4B125C6767 /* Headers */,
228 | );
229 | buildRules = (
230 | );
231 | dependencies = (
232 | );
233 | name = CodableExtensions;
234 | productName = CodableExtensions;
235 | productReference = C62BADF5277E77EDC9D318C68BAFFB5C /* CodableExtensions.framework */;
236 | productType = "com.apple.product-type.framework";
237 | };
238 | /* End PBXNativeTarget section */
239 |
240 | /* Begin PBXProject section */
241 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
242 | isa = PBXProject;
243 | attributes = {
244 | LastSwiftUpdateCheck = 0830;
245 | LastUpgradeCheck = 0700;
246 | TargetAttributes = {
247 | FD48043DCB4919B6C8F5DAC3390B02D3 = {
248 | LastSwiftMigration = 1020;
249 | };
250 | };
251 | };
252 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
253 | compatibilityVersion = "Xcode 3.2";
254 | developmentRegion = English;
255 | hasScannedForEncodings = 0;
256 | knownRegions = (
257 | English,
258 | en,
259 | );
260 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
261 | productRefGroup = 6DEC1EDEBF7BDE2A4D237BD4B7F77E04 /* Products */;
262 | projectDirPath = "";
263 | projectRoot = "";
264 | targets = (
265 | FD48043DCB4919B6C8F5DAC3390B02D3 /* CodableExtensions */,
266 | D499E1646F011E05EB84EB6852736874 /* Pods-CodableExtensions_Tests */,
267 | );
268 | };
269 | /* End PBXProject section */
270 |
271 | /* Begin PBXSourcesBuildPhase section */
272 | 78ABA52BB6C3900F92B59F9C99912DD6 /* Sources */ = {
273 | isa = PBXSourcesBuildPhase;
274 | buildActionMask = 2147483647;
275 | files = (
276 | 5DCE57CF69A6507DFFB7A1DD876F89B9 /* CodableExtensions-dummy.m in Sources */,
277 | 1A2635681F8E4CF300E12897 /* DecodingContainerTransformer.swift in Sources */,
278 | 1A2635691F8E4CF300E12897 /* RegexCodeableTransformer.swift in Sources */,
279 | 1A26356A1F8E4CF300E12897 /* CodableExtensions.swift in Sources */,
280 | );
281 | runOnlyForDeploymentPostprocessing = 0;
282 | };
283 | AC53434FDC98FCBC732B3619DD886B67 /* Sources */ = {
284 | isa = PBXSourcesBuildPhase;
285 | buildActionMask = 2147483647;
286 | files = (
287 | A5E1D97DF4A3399DFE3C52751A2BD59F /* Pods-CodableExtensions_Tests-dummy.m in Sources */,
288 | );
289 | runOnlyForDeploymentPostprocessing = 0;
290 | };
291 | /* End PBXSourcesBuildPhase section */
292 |
293 | /* Begin PBXTargetDependency section */
294 | 4AAB48891ADDD386269A96A1E2AE9221 /* PBXTargetDependency */ = {
295 | isa = PBXTargetDependency;
296 | name = CodableExtensions;
297 | target = FD48043DCB4919B6C8F5DAC3390B02D3 /* CodableExtensions */;
298 | targetProxy = DBEA4108721796ECE34A498E94AA6144 /* PBXContainerItemProxy */;
299 | };
300 | /* End PBXTargetDependency section */
301 |
302 | /* Begin XCBuildConfiguration section */
303 | 007B4CFE61B51219FAA070C7CC220B30 /* Release */ = {
304 | isa = XCBuildConfiguration;
305 | baseConfigurationReference = B05266C99499A754E55DEF3242DC5F78 /* CodableExtensions.xcconfig */;
306 | buildSettings = {
307 | CODE_SIGN_IDENTITY = "";
308 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
309 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
310 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
311 | CURRENT_PROJECT_VERSION = 1;
312 | DEFINES_MODULE = YES;
313 | DYLIB_COMPATIBILITY_VERSION = 1;
314 | DYLIB_CURRENT_VERSION = 1;
315 | DYLIB_INSTALL_NAME_BASE = "@rpath";
316 | GCC_PREFIX_HEADER = "Target Support Files/CodableExtensions/CodableExtensions-prefix.pch";
317 | INFOPLIST_FILE = "Target Support Files/CodableExtensions/Info.plist";
318 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
319 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
320 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
321 | MODULEMAP_FILE = "Target Support Files/CodableExtensions/CodableExtensions.modulemap";
322 | PRODUCT_NAME = CodableExtensions;
323 | SDKROOT = iphoneos;
324 | SKIP_INSTALL = YES;
325 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
326 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
327 | SWIFT_VERSION = 5.0;
328 | TARGETED_DEVICE_FAMILY = "1,2";
329 | VALIDATE_PRODUCT = YES;
330 | VERSIONING_SYSTEM = "apple-generic";
331 | VERSION_INFO_PREFIX = "";
332 | };
333 | name = Release;
334 | };
335 | 13D0EF502F6EBD13FFE09E53F7862FB1 /* Debug */ = {
336 | isa = XCBuildConfiguration;
337 | baseConfigurationReference = B05266C99499A754E55DEF3242DC5F78 /* CodableExtensions.xcconfig */;
338 | buildSettings = {
339 | CODE_SIGN_IDENTITY = "";
340 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
341 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
342 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
343 | CURRENT_PROJECT_VERSION = 1;
344 | DEFINES_MODULE = YES;
345 | DYLIB_COMPATIBILITY_VERSION = 1;
346 | DYLIB_CURRENT_VERSION = 1;
347 | DYLIB_INSTALL_NAME_BASE = "@rpath";
348 | GCC_PREFIX_HEADER = "Target Support Files/CodableExtensions/CodableExtensions-prefix.pch";
349 | INFOPLIST_FILE = "Target Support Files/CodableExtensions/Info.plist";
350 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
351 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
352 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
353 | MODULEMAP_FILE = "Target Support Files/CodableExtensions/CodableExtensions.modulemap";
354 | PRODUCT_NAME = CodableExtensions;
355 | SDKROOT = iphoneos;
356 | SKIP_INSTALL = YES;
357 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
358 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
359 | SWIFT_VERSION = 5.0;
360 | TARGETED_DEVICE_FAMILY = "1,2";
361 | VERSIONING_SYSTEM = "apple-generic";
362 | VERSION_INFO_PREFIX = "";
363 | };
364 | name = Debug;
365 | };
366 | 1F0EC9947B831F52DE567DDBC6A7FBC6 /* Release */ = {
367 | isa = XCBuildConfiguration;
368 | baseConfigurationReference = 4F95CA9D8EB51DBFB21533CB46955A3B /* Pods-CodableExtensions_Tests.release.xcconfig */;
369 | buildSettings = {
370 | CODE_SIGN_IDENTITY = "";
371 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
372 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
373 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
374 | CURRENT_PROJECT_VERSION = 1;
375 | DEFINES_MODULE = YES;
376 | DYLIB_COMPATIBILITY_VERSION = 1;
377 | DYLIB_CURRENT_VERSION = 1;
378 | DYLIB_INSTALL_NAME_BASE = "@rpath";
379 | INFOPLIST_FILE = "Target Support Files/Pods-CodableExtensions_Tests/Info.plist";
380 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
381 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
382 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
383 | MACH_O_TYPE = staticlib;
384 | MODULEMAP_FILE = "Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.modulemap";
385 | OTHER_LDFLAGS = "";
386 | OTHER_LIBTOOLFLAGS = "";
387 | PODS_ROOT = "$(SRCROOT)";
388 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
389 | PRODUCT_NAME = Pods_CodableExtensions_Tests;
390 | SDKROOT = iphoneos;
391 | SKIP_INSTALL = YES;
392 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
393 | TARGETED_DEVICE_FAMILY = "1,2";
394 | VALIDATE_PRODUCT = YES;
395 | VERSIONING_SYSTEM = "apple-generic";
396 | VERSION_INFO_PREFIX = "";
397 | };
398 | name = Release;
399 | };
400 | 33DA7F43A1D2FA3C74A8C8FC246E1FA6 /* Debug */ = {
401 | isa = XCBuildConfiguration;
402 | buildSettings = {
403 | ALWAYS_SEARCH_USER_PATHS = NO;
404 | CLANG_ANALYZER_NONNULL = YES;
405 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
406 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
407 | CLANG_CXX_LIBRARY = "libc++";
408 | CLANG_ENABLE_MODULES = YES;
409 | CLANG_ENABLE_OBJC_ARC = YES;
410 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
411 | CLANG_WARN_BOOL_CONVERSION = YES;
412 | CLANG_WARN_COMMA = YES;
413 | CLANG_WARN_CONSTANT_CONVERSION = YES;
414 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
415 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
416 | CLANG_WARN_EMPTY_BODY = YES;
417 | CLANG_WARN_ENUM_CONVERSION = YES;
418 | CLANG_WARN_INFINITE_RECURSION = YES;
419 | CLANG_WARN_INT_CONVERSION = YES;
420 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
421 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
422 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
423 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
424 | CLANG_WARN_STRICT_PROTOTYPES = YES;
425 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
426 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
427 | CLANG_WARN_UNREACHABLE_CODE = YES;
428 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
429 | CODE_SIGNING_REQUIRED = NO;
430 | COPY_PHASE_STRIP = NO;
431 | DEBUG_INFORMATION_FORMAT = dwarf;
432 | ENABLE_STRICT_OBJC_MSGSEND = YES;
433 | ENABLE_TESTABILITY = YES;
434 | GCC_C_LANGUAGE_STANDARD = gnu11;
435 | GCC_DYNAMIC_NO_PIC = NO;
436 | GCC_NO_COMMON_BLOCKS = YES;
437 | GCC_OPTIMIZATION_LEVEL = 0;
438 | GCC_PREPROCESSOR_DEFINITIONS = (
439 | "POD_CONFIGURATION_DEBUG=1",
440 | "DEBUG=1",
441 | "$(inherited)",
442 | );
443 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
444 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
445 | GCC_WARN_UNDECLARED_SELECTOR = YES;
446 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
447 | GCC_WARN_UNUSED_FUNCTION = YES;
448 | GCC_WARN_UNUSED_VARIABLE = YES;
449 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
450 | MTL_ENABLE_DEBUG_INFO = YES;
451 | ONLY_ACTIVE_ARCH = YES;
452 | PRODUCT_NAME = "$(TARGET_NAME)";
453 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
454 | STRIP_INSTALLED_PRODUCT = NO;
455 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
456 | SYMROOT = "${SRCROOT}/../build";
457 | };
458 | name = Debug;
459 | };
460 | 731DC216E1A58545B559F6E0A2418060 /* Release */ = {
461 | isa = XCBuildConfiguration;
462 | buildSettings = {
463 | ALWAYS_SEARCH_USER_PATHS = NO;
464 | CLANG_ANALYZER_NONNULL = YES;
465 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
466 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
467 | CLANG_CXX_LIBRARY = "libc++";
468 | CLANG_ENABLE_MODULES = YES;
469 | CLANG_ENABLE_OBJC_ARC = YES;
470 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
471 | CLANG_WARN_BOOL_CONVERSION = YES;
472 | CLANG_WARN_COMMA = YES;
473 | CLANG_WARN_CONSTANT_CONVERSION = YES;
474 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
475 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
476 | CLANG_WARN_EMPTY_BODY = YES;
477 | CLANG_WARN_ENUM_CONVERSION = YES;
478 | CLANG_WARN_INFINITE_RECURSION = YES;
479 | CLANG_WARN_INT_CONVERSION = YES;
480 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
481 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
482 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
483 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
484 | CLANG_WARN_STRICT_PROTOTYPES = YES;
485 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
486 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
487 | CLANG_WARN_UNREACHABLE_CODE = YES;
488 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
489 | CODE_SIGNING_REQUIRED = NO;
490 | COPY_PHASE_STRIP = NO;
491 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
492 | ENABLE_NS_ASSERTIONS = NO;
493 | ENABLE_STRICT_OBJC_MSGSEND = YES;
494 | GCC_C_LANGUAGE_STANDARD = gnu11;
495 | GCC_NO_COMMON_BLOCKS = YES;
496 | GCC_PREPROCESSOR_DEFINITIONS = (
497 | "POD_CONFIGURATION_RELEASE=1",
498 | "$(inherited)",
499 | );
500 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
501 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
502 | GCC_WARN_UNDECLARED_SELECTOR = YES;
503 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
504 | GCC_WARN_UNUSED_FUNCTION = YES;
505 | GCC_WARN_UNUSED_VARIABLE = YES;
506 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
507 | MTL_ENABLE_DEBUG_INFO = NO;
508 | PRODUCT_NAME = "$(TARGET_NAME)";
509 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
510 | STRIP_INSTALLED_PRODUCT = NO;
511 | SYMROOT = "${SRCROOT}/../build";
512 | };
513 | name = Release;
514 | };
515 | 9942314C10536020440615D808F04906 /* Debug */ = {
516 | isa = XCBuildConfiguration;
517 | baseConfigurationReference = 5B4868BF5750C783F1450CCB51B04D5B /* Pods-CodableExtensions_Tests.debug.xcconfig */;
518 | buildSettings = {
519 | CODE_SIGN_IDENTITY = "";
520 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
521 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
522 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
523 | CURRENT_PROJECT_VERSION = 1;
524 | DEFINES_MODULE = YES;
525 | DYLIB_COMPATIBILITY_VERSION = 1;
526 | DYLIB_CURRENT_VERSION = 1;
527 | DYLIB_INSTALL_NAME_BASE = "@rpath";
528 | INFOPLIST_FILE = "Target Support Files/Pods-CodableExtensions_Tests/Info.plist";
529 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
530 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
531 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
532 | MACH_O_TYPE = staticlib;
533 | MODULEMAP_FILE = "Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.modulemap";
534 | OTHER_LDFLAGS = "";
535 | OTHER_LIBTOOLFLAGS = "";
536 | PODS_ROOT = "$(SRCROOT)";
537 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
538 | PRODUCT_NAME = Pods_CodableExtensions_Tests;
539 | SDKROOT = iphoneos;
540 | SKIP_INSTALL = YES;
541 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
542 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
543 | TARGETED_DEVICE_FAMILY = "1,2";
544 | VERSIONING_SYSTEM = "apple-generic";
545 | VERSION_INFO_PREFIX = "";
546 | };
547 | name = Debug;
548 | };
549 | /* End XCBuildConfiguration section */
550 |
551 | /* Begin XCConfigurationList section */
552 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
553 | isa = XCConfigurationList;
554 | buildConfigurations = (
555 | 33DA7F43A1D2FA3C74A8C8FC246E1FA6 /* Debug */,
556 | 731DC216E1A58545B559F6E0A2418060 /* Release */,
557 | );
558 | defaultConfigurationIsVisible = 0;
559 | defaultConfigurationName = Release;
560 | };
561 | 6D8046A8FA4C9746E6AEEA032F1DC73C /* Build configuration list for PBXNativeTarget "Pods-CodableExtensions_Tests" */ = {
562 | isa = XCConfigurationList;
563 | buildConfigurations = (
564 | 9942314C10536020440615D808F04906 /* Debug */,
565 | 1F0EC9947B831F52DE567DDBC6A7FBC6 /* Release */,
566 | );
567 | defaultConfigurationIsVisible = 0;
568 | defaultConfigurationName = Release;
569 | };
570 | 9670CF95606F960194E5D94E6147AC00 /* Build configuration list for PBXNativeTarget "CodableExtensions" */ = {
571 | isa = XCConfigurationList;
572 | buildConfigurations = (
573 | 13D0EF502F6EBD13FFE09E53F7862FB1 /* Debug */,
574 | 007B4CFE61B51219FAA070C7CC220B30 /* Release */,
575 | );
576 | defaultConfigurationIsVisible = 0;
577 | defaultConfigurationName = Release;
578 | };
579 | /* End XCConfigurationList section */
580 | };
581 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
582 | }
583 |
--------------------------------------------------------------------------------
/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CodableExtensions.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
45 |
46 |
52 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
70 |
71 |
72 |
73 |
75 |
76 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/CodableExtensions/CodableExtensions-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_CodableExtensions : NSObject
3 | @end
4 | @implementation PodsDummy_CodableExtensions
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/CodableExtensions/CodableExtensions-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/CodableExtensions/CodableExtensions-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double CodableExtensionsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char CodableExtensionsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/CodableExtensions/CodableExtensions.modulemap:
--------------------------------------------------------------------------------
1 | framework module CodableExtensions {
2 | umbrella header "CodableExtensions-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/CodableExtensions/CodableExtensions.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CodableExtensions
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/CodableExtensions/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 0.1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## CodableExtensions
5 |
6 | Copyright (c) 2017 jamesruston
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is
13 | furnished to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in
16 | all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 | THE SOFTWARE.
25 |
26 | Generated by CocoaPods - https://cocoapods.org
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Copyright (c) 2017 jamesruston <jruston90@gmail.com>
18 |
19 | Permission is hereby granted, free of charge, to any person obtaining a copy
20 | of this software and associated documentation files (the "Software"), to deal
21 | in the Software without restriction, including without limitation the rights
22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23 | copies of the Software, and to permit persons to whom the Software is
24 | furnished to do so, subject to the following conditions:
25 |
26 | The above copyright notice and this permission notice shall be included in
27 | all copies or substantial portions of the Software.
28 |
29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35 | THE SOFTWARE.
36 |
37 | License
38 | MIT
39 | Title
40 | CodableExtensions
41 | Type
42 | PSGroupSpecifier
43 |
44 |
45 | FooterText
46 | Generated by CocoaPods - https://cocoapods.org
47 | Title
48 |
49 | Type
50 | PSGroupSpecifier
51 |
52 |
53 | StringsTable
54 | Acknowledgements
55 | Title
56 | Acknowledgements
57 |
58 |
59 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_CodableExtensions_Tests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_CodableExtensions_Tests
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
6 |
7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
8 |
9 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
10 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
11 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
12 |
13 | install_framework()
14 | {
15 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
16 | local source="${BUILT_PRODUCTS_DIR}/$1"
17 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
18 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
19 | elif [ -r "$1" ]; then
20 | local source="$1"
21 | fi
22 |
23 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
24 |
25 | if [ -L "${source}" ]; then
26 | echo "Symlinked..."
27 | source="$(readlink "${source}")"
28 | fi
29 |
30 | # Use filter instead of exclude so missing patterns don't throw errors.
31 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
32 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
33 |
34 | local basename
35 | basename="$(basename -s .framework "$1")"
36 | binary="${destination}/${basename}.framework/${basename}"
37 | if ! [ -r "$binary" ]; then
38 | binary="${destination}/${basename}"
39 | fi
40 |
41 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
42 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
43 | strip_invalid_archs "$binary"
44 | fi
45 |
46 | # Resign the code if required by the build settings to avoid unstable apps
47 | code_sign_if_enabled "${destination}/$(basename "$1")"
48 |
49 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
50 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
51 | local swift_runtime_libs
52 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
53 | for lib in $swift_runtime_libs; do
54 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
55 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
56 | code_sign_if_enabled "${destination}/${lib}"
57 | done
58 | fi
59 | }
60 |
61 | # Copies the dSYM of a vendored framework
62 | install_dsym() {
63 | local source="$1"
64 | if [ -r "$source" ]; then
65 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\""
66 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}"
67 | fi
68 | }
69 |
70 | # Signs a framework with the provided identity
71 | code_sign_if_enabled() {
72 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
73 | # Use the current code_sign_identitiy
74 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
75 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
76 |
77 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
78 | code_sign_cmd="$code_sign_cmd &"
79 | fi
80 | echo "$code_sign_cmd"
81 | eval "$code_sign_cmd"
82 | fi
83 | }
84 |
85 | # Strip invalid architectures
86 | strip_invalid_archs() {
87 | binary="$1"
88 | # Get architectures for current file
89 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
90 | stripped=""
91 | for arch in $archs; do
92 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
93 | # Strip non-valid architectures in-place
94 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
95 | stripped="$stripped $arch"
96 | fi
97 | done
98 | if [[ "$stripped" ]]; then
99 | echo "Stripped $binary of architectures:$stripped"
100 | fi
101 | }
102 |
103 |
104 | if [[ "$CONFIGURATION" == "Debug" ]]; then
105 | install_framework "${BUILT_PRODUCTS_DIR}/CodableExtensions/CodableExtensions.framework"
106 | fi
107 | if [[ "$CONFIGURATION" == "Release" ]]; then
108 | install_framework "${BUILT_PRODUCTS_DIR}/CodableExtensions/CodableExtensions.framework"
109 | fi
110 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
111 | wait
112 | fi
113 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
5 |
6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
7 | > "$RESOURCES_TO_COPY"
8 |
9 | XCASSET_FILES=()
10 |
11 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
12 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
13 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
14 |
15 | case "${TARGETED_DEVICE_FAMILY}" in
16 | 1,2)
17 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
18 | ;;
19 | 1)
20 | TARGET_DEVICE_ARGS="--target-device iphone"
21 | ;;
22 | 2)
23 | TARGET_DEVICE_ARGS="--target-device ipad"
24 | ;;
25 | 3)
26 | TARGET_DEVICE_ARGS="--target-device tv"
27 | ;;
28 | 4)
29 | TARGET_DEVICE_ARGS="--target-device watch"
30 | ;;
31 | *)
32 | TARGET_DEVICE_ARGS="--target-device mac"
33 | ;;
34 | esac
35 |
36 | install_resource()
37 | {
38 | if [[ "$1" = /* ]] ; then
39 | RESOURCE_PATH="$1"
40 | else
41 | RESOURCE_PATH="${PODS_ROOT}/$1"
42 | fi
43 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
44 | cat << EOM
45 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
46 | EOM
47 | exit 1
48 | fi
49 | case $RESOURCE_PATH in
50 | *.storyboard)
51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
53 | ;;
54 | *.xib)
55 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
56 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
57 | ;;
58 | *.framework)
59 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
60 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
61 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
62 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
63 | ;;
64 | *.xcdatamodel)
65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
67 | ;;
68 | *.xcdatamodeld)
69 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
70 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
71 | ;;
72 | *.xcmappingmodel)
73 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
74 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
75 | ;;
76 | *.xcassets)
77 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
78 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
79 | ;;
80 | *)
81 | echo "$RESOURCE_PATH" || true
82 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
83 | ;;
84 | esac
85 | }
86 |
87 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
88 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
89 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
90 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
91 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
92 | fi
93 | rm -f "$RESOURCES_TO_COPY"
94 |
95 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
96 | then
97 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
98 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
99 | while read line; do
100 | if [[ $line != "${PODS_ROOT}*" ]]; then
101 | XCASSET_FILES+=("$line")
102 | fi
103 | done <<<"$OTHER_XCASSETS"
104 |
105 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
106 | fi
107 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_CodableExtensions_TestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_CodableExtensions_TestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CodableExtensions"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CodableExtensions/CodableExtensions.framework/Headers"
6 | OTHER_LDFLAGS = $(inherited) -framework "CodableExtensions"
7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
8 | PODS_BUILD_DIR = $BUILD_DIR
9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_CodableExtensions_Tests {
2 | umbrella header "Pods-CodableExtensions_Tests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-CodableExtensions_Tests/Pods-CodableExtensions_Tests.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CodableExtensions"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CodableExtensions/CodableExtensions.framework/Headers"
6 | OTHER_LDFLAGS = $(inherited) -framework "CodableExtensions"
7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
8 | PODS_BUILD_DIR = $BUILD_DIR
9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/Example/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Tests/Tests.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import XCTest
3 | import CodableExtensions
4 |
5 | struct Person: Decodable {
6 | let name: String
7 |
8 | private enum CodingKeys: String, CodingKey {
9 | case name
10 | }
11 |
12 | init(from decoder: Decoder) throws {
13 | let container = try decoder.container(keyedBy: CodingKeys.self)
14 | name = try container.decode(.name)
15 | }
16 | }
17 |
18 | struct RegexWrapper: Codable {
19 | let regex: NSRegularExpression
20 |
21 | private enum CodingKeys: String, CodingKey {
22 | case regex
23 | }
24 |
25 | init(from decoder: Decoder) throws {
26 | let container = try decoder.container(keyedBy: CodingKeys.self)
27 | regex = try container.decode(.regex, transformer: RegexCodableTransformer())
28 | }
29 |
30 | func encode(to encoder: Encoder) throws {
31 | var container = encoder.container(keyedBy: CodingKeys.self)
32 | try container.encode(regex, forKey: .regex, transformer: RegexCodableTransformer())
33 | }
34 | }
35 |
36 | struct OptionalRegexWrapper: Decodable {
37 | let regex: NSRegularExpression?
38 |
39 | private enum CodingKeys: String, CodingKey {
40 | case regex
41 | }
42 |
43 | init(from decoder: Decoder) throws {
44 | let container = try decoder.container(keyedBy: CodingKeys.self)
45 | regex = try? container.decode(.regex, transformer: RegexCodableTransformer())
46 | }
47 | }
48 |
49 | class Tests: XCTestCase {
50 |
51 | func testDecodingStandardType() {
52 | let json = """
53 | {
54 | "name": "James Ruston"
55 | }
56 | """.data(using: .utf8)!
57 |
58 | let person = try! JSONDecoder().decode(Person.self, from: json)
59 |
60 | XCTAssertEqual(person.name, "James Ruston")
61 | }
62 |
63 | func testCustomTransformer() {
64 | let json = """
65 | {
66 | "regex": ".*"
67 | }
68 | """.data(using: .utf8)!
69 |
70 | let wrapper = try! JSONDecoder().decode(RegexWrapper.self, from: json)
71 |
72 | XCTAssertEqual(wrapper.regex.pattern, ".*")
73 | }
74 |
75 | func testInvalidType() {
76 | let json = """
77 | {
78 | "regex": true
79 | }
80 | """.data(using: .utf8)!
81 |
82 | let wrapper = try? JSONDecoder().decode(RegexWrapper.self, from: json)
83 |
84 | XCTAssertNil(wrapper)
85 | }
86 |
87 | func testInvalidRegex() {
88 | let json = """
89 | {
90 | "regex": "["
91 | }
92 | """.data(using: .utf8)!
93 |
94 | let wrapper = try! JSONDecoder().decode(OptionalRegexWrapper.self, from: json)
95 |
96 | XCTAssertNil(wrapper.regex)
97 | }
98 |
99 | func testEncoding() {
100 | let jsonString = "{\"regex\":\".*\"}"
101 | let json = jsonString.data(using: .utf8)!
102 |
103 | let wrapper = try! JSONDecoder().decode(RegexWrapper.self, from: json)
104 | let encoded = try! JSONEncoder().encode(wrapper)
105 |
106 | let output = String(data: encoded, encoding: .utf8)!
107 |
108 | XCTAssertEqual(jsonString, output)
109 |
110 | }
111 | }
112 |
113 |
114 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2017 jamesruston
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.2
2 | import PackageDescription
3 |
4 | let package = Package(
5 | name: "CodableExtensions",
6 | products: [
7 | .library(
8 | name: "CodableExtensions",
9 | targets: ["CodableExtensions"]),
10 | ],
11 | dependencies: [
12 | ],
13 | targets: [
14 | .target(
15 | name: "CodableExtensions",
16 | dependencies: [],
17 | path: "Classes"),
18 | .testTarget(
19 | name: "CodableExtensionsTests",
20 | dependencies: ["CodableExtensions"]),
21 | ]
22 | )
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CodableExtensions
2 |
3 | [](http://cocoapods.org/pods/CodableExtensions)
4 | [](http://cocoapods.org/pods/CodableExtensions)
5 | [](http://cocoapods.org/pods/CodableExtensions)
6 | [](https://github.com/Carthage/Carthage)
7 |
8 | ## Installation
9 |
10 | CodableExtensions is available through [CocoaPods](http://cocoapods.org). To install
11 | it, simply add the following line to your Podfile:
12 |
13 | ```ruby
14 | pod 'CodableExtensions'
15 | ```
16 |
17 | and run
18 |
19 | ```bash
20 | pod install
21 | ```
22 |
23 | ## Usage
24 |
25 | ### Decoding
26 |
27 | To make a custom decoding transformer, you just need to implement `DecodingContainerTransformer`
28 | An example is provided in the project for converting a Regex
29 |
30 | ```swift
31 | import CodableExtensions
32 |
33 | public class RegexCodableTransformer: DecodingContainerTransformer {
34 |
35 | public typealias Input = String
36 | public typealias Output = NSRegularExpression
37 |
38 | public init() {}
39 |
40 | public func transform(_ decoded: Input) throws -> Output {
41 | return try NSRegularExpression(pattern: decoded, options: [])
42 | }
43 | }
44 | ```
45 |
46 | The `Input` and `Output` types need defining to match the type you expect to be converting from and to, in this case the input is a `String` and the output is an `NSRegularExpression`.
47 |
48 | The logic to perfrom the transformation is then performed in the `transform` function. If there's an error at any point then that needs to be thrown.
49 |
50 | The custom transformer can then be used in the `Decodable` initialiser
51 |
52 | ```swift
53 | init(from decoder: Decoder) throws {
54 | let container = try decoder.container(keyedBy: CodingKeys.self)
55 | regex = try container.decode(.regex, transformer: RegexCodableTransformer())
56 | }
57 | ```
58 |
59 | ### Encoding
60 |
61 | To make a custom encoding transformer, make a class implementing `EncodingContainerTransformer`
62 |
63 | Example encoding an NSRegularExpression
64 | ```swift
65 | class RegexCodableTransformer: EncodingContainerTransformer {
66 |
67 | typealias Input = String
68 | typealias Output = NSRegularExpression
69 |
70 | public func transform(_ encoded: Output) throws -> Input {
71 | return encoded.pattern
72 | }
73 | }
74 | ```
75 | and to use this transformer implement the Encodable function `encode(to encoder: Encoder)`
76 |
77 | ```swift
78 | func encode(to encoder: Encoder) throws {
79 | var container = encoder.container(keyedBy: CodingKeys.self)
80 | try container.encode(regex, forKey: .regex, transformer: RegexCodableTransformer())
81 | }
82 | ```
83 |
84 | If your transformer conforms to both the `EncodingContainerTransformer` and `DecodingContainerTransformer` you can use the `CodingContainerTransformer` typealias
85 |
86 | For full examples check out the tests https://github.com/jamesruston/CodableExtensions/blob/master/Example/Tests/Tests.swift
87 |
88 | For a writeup on the motivation behind this library check my Medium article out https://medium.com/@James_Ruston/codable-vs-objectmapper-af5fe8e8efd5
89 |
90 | ## Installation
91 |
92 | ### Cocoapods
93 |
94 | CodableExtensions is available through [CocoaPods](https://cocoapods.org). To install it, simply add the following line to your Podfile:
95 |
96 | ```ruby
97 | pod 'CodableExtensions'
98 | ```
99 |
100 | Run `pod install` to integrate `CodableExtensions ` with your workspace.
101 |
102 | ### Carthage
103 |
104 | CodableExtensions is available through [Carthage](https://github.com/Carthage/Carthage). To install it, simply add the following line to your Carthage file:
105 |
106 |
107 | ```
108 | github "jamesruston/CodableExtensions"
109 | ```
110 |
111 | Run `carthage update` to build the framework and drag the built `CodableExtensions.framework` into your Xcode project.
112 |
113 |
114 | ## Author
115 |
116 | https://medium.com/@James_Ruston/
117 |
118 | ## License
119 |
120 | CodableExtensions is available under the MIT license. See the LICENSE file for more info.
121 |
--------------------------------------------------------------------------------
/_Pods.xcodeproj:
--------------------------------------------------------------------------------
1 | Example/Pods/Pods.xcodeproj
--------------------------------------------------------------------------------