├── tea.yaml
├── ChuzzleKit.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── WorkspaceSettings.xcsettings
├── xcshareddata
│ └── xcschemes
│ │ └── ChuzzleKit.xcscheme
└── project.pbxproj
├── .travis.yml
├── ChuzzleKit.podspec
├── Sources
├── Info.plist
├── ChuzzleKit.h
└── ChuzzleKit.m
├── LICENSE
├── Tests
└── ChuzzleTests.m
└── README.markdown
/tea.yaml:
--------------------------------------------------------------------------------
1 | # https://tea.xyz/what-is-this-file
2 | # created with https://mash.pkgx.sh/mxcl/tea-register
3 | ---
4 | version: 1.0.0
5 | codeOwners:
6 | - '0x5E2DE4A68df811AAAD32d71fb065e6946fA5C8d9' # mxcl
7 | quorum: 1
8 |
--------------------------------------------------------------------------------
/ChuzzleKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ChuzzleKit.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | osx_image: xcode8
3 |
4 | env:
5 | - ACTION=test PLATFORM=Mac DESTINATION='platform=OS X'
6 | - ACTION=test PLATFORM=iOS DESTINATION='platform=iOS Simulator,name=iPhone 6S' UUID='64DF30D4-4118-480F-9ADD-DCC32194B63D'
7 | - ACTION=build PLATFORM=watchOS DESTINATION='platform=watchOS Simulator,name=Apple Watch - 38mm'
8 | - ACTION=test PLATFORM=tvOS DESTINATION='platform=tvOS Simulator,name=Apple TV 1080p' UUID='273D776F-196E-4F2A-AEF2-E1E3EAE99B47'
9 |
10 | script:
11 | - if [ -n "$UUID" ]; then xcrun instruments -w "$UUID" || true; sleep 15; fi
12 | - set -o pipefail && xcodebuild -scheme ChuzzleKit -destination "$DESTINATION" $ACTION | xcpretty
13 |
--------------------------------------------------------------------------------
/ChuzzleKit.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'ChuzzleKit'
3 |
4 | `xcodebuild -project #{s.name}.xcodeproj -showBuildSettings` =~ /CURRENT_PROJECT_VERSION = ((\d+\.)+\d+)/
5 | abort("No version detected") if $1.nil?
6 |
7 | s.ios.deployment_target = '13.0'
8 | s.osx.deployment_target = '10.11'
9 | s.watchos.deployment_target = '2.0'
10 | s.tvos.deployment_target = '9.0'
11 | s.visionos.deployment_target = '1.0'
12 |
13 | s.version = $1
14 | s.requires_arc = true
15 | s.source_files = 'Sources/*.{m,h}'
16 | s.source = { :git => "https://github.com/mxcl/#{s.name}.git", :tag => s.version }
17 | s.license = 'MIT'
18 | s.summary = 'A chuzzled object is `nil` if it is falsy, otherwise it has its falsy parts removed.'
19 |
20 | s.homepage = "http://github.com/mxcl/#{s.name}"
21 | s.social_media_url = 'https://twitter.com/mxcl'
22 | s.authors = { 'Max Howell' => 'mxcl@me.com' }
23 | end
24 |
--------------------------------------------------------------------------------
/Sources/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 | $(CURRENT_PROJECT_VERSION)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Sources/ChuzzleKit.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import
4 | #import
5 |
6 |
7 | @interface NSString (Chuzzle)
8 | /// - Returns: The receiver with whitespace trimmed from both ends, if the resulting string is empty, returns `nil`.
9 | - (NSString * _Nullable)chuzzle;
10 | @end
11 |
12 | @interface NSArray (Chuzzle)
13 | /// - Returns: The receiver with all elements chuzzled (if they support it), if the resulting array is empty, returns `nil`.
14 | - (NSArray * _Nullable)chuzzle;
15 | @end
16 |
17 | @interface NSDictionary (Chuzzle)
18 | /// - Returns: The receiver with all values chuzzled (if they support it), if the resulting dictionary is empty, returns `nil`.
19 | - (NSDictionary * _Nullable)chuzzle;
20 | @end
21 |
22 | @interface NSNull (Chuzzle)
23 | /// - Returns: `nil`
24 | - (id _Nullable)chuzzle;
25 | @end
26 |
27 | @interface NSObject (Chuzzle)
28 | /// - Returns: `self`
29 | - (id _Nullable)chuzzle;
30 | @end
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2016, Max Howell; mxcl@me.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a
4 | copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included
12 | in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/Tests/ChuzzleTests.m:
--------------------------------------------------------------------------------
1 | @import ChuzzleKit;
2 | @import XCTest;
3 |
4 | @implementation ChuzzleTests: XCTestCase
5 |
6 | - (void)test_everything {
7 | id b = @[@{@"a": @"", @2: @"", @3: @[], @4: [NSNull null]}];
8 | id a = @[NSNull.null, @"\t", @{@1: @" ", @2: b}, @1].chuzzle;
9 | XCTAssertEqualObjects(a, @[@1]);
10 | }
11 |
12 | - (void)test_no_chuzzle {
13 | NSDictionary *a = @{@1: @"1", @2: @"2"};
14 | id b = a.chuzzle;
15 | XCTAssertEqualObjects(a, b);
16 | }
17 |
18 | - (void)test_another_test {
19 | NSDictionary *d = @{@1: @"", @2: @" 2 "}.chuzzle;
20 | XCTAssertEqualObjects(d, @{@2: @"2"});
21 | }
22 | - (void)test_nsobject {
23 | id o = [NSObject new];
24 | XCTAssertEqual(o, [o chuzzle]);
25 | }
26 | - (void)test_giant_array {
27 | // using a very large number of objectcs to illustrate the problem
28 | // and make the test trip on powerful desktop machines, but issues
29 | // would obviously manifest sooner on mobile devices with less memory
30 | NSUInteger size = 50000000;
31 | NSMutableArray* a = [NSMutableArray arrayWithCapacity:size];
32 | for (int i = 0; i < size; i++) {
33 | [a addObject:i % 2 ? @(i) : NSNull.null];
34 | }
35 | a = [NSArray arrayWithArray:a];
36 | NSArray* b;
37 | XCTAssertNoThrow(b = a.chuzzle);
38 | XCTAssertEqual(b.count, a.count / 2);
39 | }
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/Sources/ChuzzleKit.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import "ChuzzleKit.h"
3 |
4 | @implementation NSString (Chuzzle)
5 |
6 | - (NSString *)chuzzle {
7 | NSString *s = [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
8 | return s.length == 0 ? nil : s;
9 | }
10 |
11 | @end
12 |
13 |
14 | @implementation NSDictionary (Chuzzle)
15 |
16 | - (id)chuzzle {
17 | if (self.count == 0) {
18 | return nil;
19 | }
20 | NSMutableArray* objs = [NSMutableArray arrayWithCapacity:self.count];
21 | NSMutableArray* keys = [NSMutableArray arrayWithCapacity:self.count];
22 | for (id key in self) {
23 | id obj = self[key];
24 | if ([obj respondsToSelector:@selector(chuzzle)]) {
25 | obj = [obj chuzzle];
26 | }
27 | if (obj) {
28 | [objs addObject:obj];
29 | [keys addObject:key];
30 | }
31 | }
32 | return (objs.count == 0) ? nil : [NSDictionary dictionaryWithObjects:objs forKeys:keys];
33 | }
34 |
35 | @end
36 |
37 |
38 | @implementation NSArray (Chuzzle)
39 |
40 | - (instancetype)chuzzle {
41 | if (self.count == 0) {
42 | return nil;
43 | }
44 | NSMutableArray* result = [NSMutableArray arrayWithCapacity:self.count];
45 | for (__strong id obj in self) {
46 | if ([obj respondsToSelector:@selector(chuzzle)]) {
47 | obj = [obj chuzzle];
48 | }
49 | if (obj) {
50 | [result addObject:obj];
51 | }
52 | }
53 | return result.count == 0 ? nil : [NSArray arrayWithArray:result];
54 | }
55 |
56 | @end
57 |
58 |
59 | @implementation NSNull (Chuzzle)
60 |
61 | - (id)chuzzle {
62 | return nil;
63 | }
64 |
65 | @end
66 |
67 |
68 | @implementation NSObject (Chuzzle)
69 |
70 | - (id)chuzzle {
71 | return self;
72 | }
73 |
74 | @end
75 |
--------------------------------------------------------------------------------
/README.markdown:
--------------------------------------------------------------------------------
1 | # ChuzzleKit [](https://travis-ci.org/mxcl/ChuzzleKit)
2 |
3 | A chuzzled object is nil if it is *falsy*, otherwise it has its *falsy* parts
4 | removed.
5 |
6 | For example:
7 |
8 | * `@"".chuzzle` is `nil`
9 | * Also `@" ".chuzzle` is `nil`
10 | * And `@"\r\t".chuzzle` is `nil`
11 | * `@" 2 ".chuzzle` is `@"2"`
12 | * `@[].chuzzle` is `nil`
13 | * `@[@"", @1].chuzzle` is `@[@1]`
14 | * `[NSNull null].chuzzle` is `nil`
15 | * `@{}.chuzzle` is `nil`
16 | * `@{@1: @""}.chuzzle` is `nil`
17 | * `@{@1: @"", @2: @" 2 "}.chuzzle` is `@{@2: @"2"}`
18 |
19 |
20 | > Note that: `@" 2 3 "` chuzzles to: `@"2 3"`, that is, it only trims the string, it doesn’t eat the internal whitespace. This is because the “falsy” whitespace is just the trailing whitespace, not the internal whitespace. This is probably what you expected.
21 |
22 |
23 | Mutable Chuzzling
24 | =================
25 | We removed mutable chuzzling. There are issues with adding category methods to mutable variants in Cocoa, which led to us having to enact hacks. However there were unexpected issues, eg: https://github.com/mxcl/ChuzzleKit/issues/3
26 |
27 |
28 | Custom Chuzzling
29 | ================
30 | All our `chuzzle` methods on container classes will call `chuzzle` on the objects they contain, if it is implemented.
31 |
32 | So if you want to support recursive chuzzling on your own objects, simply implement a `chuzzle` method.
33 |
34 |
35 | Making JSON PLIST-Compliant
36 | ===========================
37 | Since `NSNull` cannot be encoded into a PLIST, a convenient (but by **no means** the primary) usage of ChuzzleKit is to make saving JSON to a plist not crash (eg. via `writeToFile:atomically`).
38 |
39 |
40 | Stripping Strings
41 | =================
42 | `-chuzzle` can be a less enormous alternative to `-stringByTrimmingCharactersInSet:`, just don’t forget to expect `nil` in the response.
43 |
--------------------------------------------------------------------------------
/ChuzzleKit.xcodeproj/xcshareddata/xcschemes/ChuzzleKit.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
45 |
46 |
48 |
54 |
55 |
56 |
57 |
58 |
64 |
65 |
66 |
67 |
68 |
69 |
79 |
80 |
86 |
87 |
88 |
89 |
90 |
91 |
97 |
98 |
104 |
105 |
106 |
107 |
109 |
110 |
113 |
114 |
115 |
--------------------------------------------------------------------------------
/ChuzzleKit.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 6321D1151A801D9100559508 /* ChuzzleKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 6321D1141A801D9100559508 /* ChuzzleKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
11 | 6321D11B1A801D9100559508 /* ChuzzleKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6321D10F1A801D9100559508 /* ChuzzleKit.framework */; };
12 | 6321D1221A801D9100559508 /* ChuzzleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6321D1211A801D9100559508 /* ChuzzleTests.m */; };
13 | 6321D12C1A801DF800559508 /* ChuzzleKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6321D12A1A801DF800559508 /* ChuzzleKit.m */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXContainerItemProxy section */
17 | 6321D11C1A801D9100559508 /* PBXContainerItemProxy */ = {
18 | isa = PBXContainerItemProxy;
19 | containerPortal = 63F11F821A801D7100AE5B0E /* Project object */;
20 | proxyType = 1;
21 | remoteGlobalIDString = 6321D10E1A801D9100559508;
22 | remoteInfo = ChuzzleKit;
23 | };
24 | /* End PBXContainerItemProxy section */
25 |
26 | /* Begin PBXFileReference section */
27 | 6321D10F1A801D9100559508 /* ChuzzleKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ChuzzleKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
28 | 6321D1131A801D9100559508 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sources/Info.plist; sourceTree = SOURCE_ROOT; };
29 | 6321D1141A801D9100559508 /* ChuzzleKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChuzzleKit.h; path = Sources/ChuzzleKit.h; sourceTree = SOURCE_ROOT; };
30 | 6321D11A1A801D9100559508 /* ChuzzleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ChuzzleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
31 | 6321D1211A801D9100559508 /* ChuzzleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ChuzzleTests.m; path = Tests/ChuzzleTests.m; sourceTree = SOURCE_ROOT; };
32 | 6321D12A1A801DF800559508 /* ChuzzleKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ChuzzleKit.m; path = Sources/ChuzzleKit.m; sourceTree = SOURCE_ROOT; };
33 | 639DCB471D73A5A2000938BF /* README.markdown */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.markdown; sourceTree = ""; };
34 | 639DCB481D73A5A8000938BF /* ChuzzleKit.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChuzzleKit.podspec; sourceTree = ""; };
35 | /* End PBXFileReference section */
36 |
37 | /* Begin PBXFrameworksBuildPhase section */
38 | 6321D10B1A801D9100559508 /* Frameworks */ = {
39 | isa = PBXFrameworksBuildPhase;
40 | buildActionMask = 2147483647;
41 | files = (
42 | );
43 | runOnlyForDeploymentPostprocessing = 0;
44 | };
45 | 6321D1171A801D9100559508 /* Frameworks */ = {
46 | isa = PBXFrameworksBuildPhase;
47 | buildActionMask = 2147483647;
48 | files = (
49 | 6321D11B1A801D9100559508 /* ChuzzleKit.framework in Frameworks */,
50 | );
51 | runOnlyForDeploymentPostprocessing = 0;
52 | };
53 | /* End PBXFrameworksBuildPhase section */
54 |
55 | /* Begin PBXGroup section */
56 | 63F11F811A801D7100AE5B0E = {
57 | isa = PBXGroup;
58 | children = (
59 | 6321D1141A801D9100559508 /* ChuzzleKit.h */,
60 | 6321D12A1A801DF800559508 /* ChuzzleKit.m */,
61 | 6321D10F1A801D9100559508 /* ChuzzleKit.framework */,
62 | 639DCB481D73A5A8000938BF /* ChuzzleKit.podspec */,
63 | 6321D1211A801D9100559508 /* ChuzzleTests.m */,
64 | 6321D11A1A801D9100559508 /* ChuzzleTests.xctest */,
65 | 6321D1131A801D9100559508 /* Info.plist */,
66 | 639DCB471D73A5A2000938BF /* README.markdown */,
67 | );
68 | sourceTree = "";
69 | };
70 | /* End PBXGroup section */
71 |
72 | /* Begin PBXHeadersBuildPhase section */
73 | 6321D10C1A801D9100559508 /* Headers */ = {
74 | isa = PBXHeadersBuildPhase;
75 | buildActionMask = 2147483647;
76 | files = (
77 | 6321D1151A801D9100559508 /* ChuzzleKit.h in Headers */,
78 | );
79 | runOnlyForDeploymentPostprocessing = 0;
80 | };
81 | /* End PBXHeadersBuildPhase section */
82 |
83 | /* Begin PBXNativeTarget section */
84 | 6321D10E1A801D9100559508 /* ChuzzleKit */ = {
85 | isa = PBXNativeTarget;
86 | buildConfigurationList = 6321D1271A801D9100559508 /* Build configuration list for PBXNativeTarget "ChuzzleKit" */;
87 | buildPhases = (
88 | 6321D10A1A801D9100559508 /* Sources */,
89 | 6321D10B1A801D9100559508 /* Frameworks */,
90 | 6321D10C1A801D9100559508 /* Headers */,
91 | 6321D10D1A801D9100559508 /* Resources */,
92 | );
93 | buildRules = (
94 | );
95 | dependencies = (
96 | );
97 | name = ChuzzleKit;
98 | productName = ChuzzleKit;
99 | productReference = 6321D10F1A801D9100559508 /* ChuzzleKit.framework */;
100 | productType = "com.apple.product-type.framework";
101 | };
102 | 6321D1191A801D9100559508 /* ChuzzleTests */ = {
103 | isa = PBXNativeTarget;
104 | buildConfigurationList = 6321D1281A801D9100559508 /* Build configuration list for PBXNativeTarget "ChuzzleTests" */;
105 | buildPhases = (
106 | 6321D1161A801D9100559508 /* Sources */,
107 | 6321D1171A801D9100559508 /* Frameworks */,
108 | 6321D1181A801D9100559508 /* Resources */,
109 | );
110 | buildRules = (
111 | );
112 | dependencies = (
113 | 6321D11D1A801D9100559508 /* PBXTargetDependency */,
114 | );
115 | name = ChuzzleTests;
116 | productName = ChuzzleKitTests;
117 | productReference = 6321D11A1A801D9100559508 /* ChuzzleTests.xctest */;
118 | productType = "com.apple.product-type.bundle.unit-test";
119 | };
120 | /* End PBXNativeTarget section */
121 |
122 | /* Begin PBXProject section */
123 | 63F11F821A801D7100AE5B0E /* Project object */ = {
124 | isa = PBXProject;
125 | attributes = {
126 | LastUpgradeCheck = 0800;
127 | TargetAttributes = {
128 | 6321D10E1A801D9100559508 = {
129 | CreatedOnToolsVersion = 6.1.1;
130 | };
131 | 6321D1191A801D9100559508 = {
132 | CreatedOnToolsVersion = 6.1.1;
133 | };
134 | };
135 | };
136 | buildConfigurationList = 63F11F851A801D7100AE5B0E /* Build configuration list for PBXProject "ChuzzleKit" */;
137 | compatibilityVersion = "Xcode 3.2";
138 | developmentRegion = English;
139 | hasScannedForEncodings = 0;
140 | knownRegions = (
141 | en,
142 | );
143 | mainGroup = 63F11F811A801D7100AE5B0E;
144 | productRefGroup = 63F11F811A801D7100AE5B0E;
145 | projectDirPath = "";
146 | projectRoot = "";
147 | targets = (
148 | 6321D10E1A801D9100559508 /* ChuzzleKit */,
149 | 6321D1191A801D9100559508 /* ChuzzleTests */,
150 | );
151 | };
152 | /* End PBXProject section */
153 |
154 | /* Begin PBXResourcesBuildPhase section */
155 | 6321D10D1A801D9100559508 /* Resources */ = {
156 | isa = PBXResourcesBuildPhase;
157 | buildActionMask = 2147483647;
158 | files = (
159 | );
160 | runOnlyForDeploymentPostprocessing = 0;
161 | };
162 | 6321D1181A801D9100559508 /* Resources */ = {
163 | isa = PBXResourcesBuildPhase;
164 | buildActionMask = 2147483647;
165 | files = (
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXSourcesBuildPhase section */
172 | 6321D10A1A801D9100559508 /* Sources */ = {
173 | isa = PBXSourcesBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | 6321D12C1A801DF800559508 /* ChuzzleKit.m in Sources */,
177 | );
178 | runOnlyForDeploymentPostprocessing = 0;
179 | };
180 | 6321D1161A801D9100559508 /* Sources */ = {
181 | isa = PBXSourcesBuildPhase;
182 | buildActionMask = 2147483647;
183 | files = (
184 | 6321D1221A801D9100559508 /* ChuzzleTests.m in Sources */,
185 | );
186 | runOnlyForDeploymentPostprocessing = 0;
187 | };
188 | /* End PBXSourcesBuildPhase section */
189 |
190 | /* Begin PBXTargetDependency section */
191 | 6321D11D1A801D9100559508 /* PBXTargetDependency */ = {
192 | isa = PBXTargetDependency;
193 | target = 6321D10E1A801D9100559508 /* ChuzzleKit */;
194 | targetProxy = 6321D11C1A801D9100559508 /* PBXContainerItemProxy */;
195 | };
196 | /* End PBXTargetDependency section */
197 |
198 | /* Begin XCBuildConfiguration section */
199 | 6321D1231A801D9100559508 /* Debug */ = {
200 | isa = XCBuildConfiguration;
201 | buildSettings = {
202 | ALWAYS_SEARCH_USER_PATHS = NO;
203 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
204 | CLANG_CXX_LIBRARY = "libc++";
205 | CLANG_ENABLE_MODULES = YES;
206 | CLANG_ENABLE_OBJC_ARC = YES;
207 | CLANG_WARN_BOOL_CONVERSION = YES;
208 | CLANG_WARN_CONSTANT_CONVERSION = YES;
209 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
210 | CLANG_WARN_EMPTY_BODY = YES;
211 | CLANG_WARN_ENUM_CONVERSION = YES;
212 | CLANG_WARN_INT_CONVERSION = YES;
213 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
214 | CLANG_WARN_UNREACHABLE_CODE = YES;
215 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
216 | COPY_PHASE_STRIP = NO;
217 | DEFINES_MODULE = YES;
218 | DYLIB_COMPATIBILITY_VERSION = 1;
219 | DYLIB_INSTALL_NAME_BASE = "@rpath";
220 | ENABLE_STRICT_OBJC_MSGSEND = YES;
221 | GCC_C_LANGUAGE_STANDARD = gnu99;
222 | GCC_DYNAMIC_NO_PIC = NO;
223 | GCC_OPTIMIZATION_LEVEL = 0;
224 | GCC_PREPROCESSOR_DEFINITIONS = (
225 | "DEBUG=1",
226 | "$(inherited)",
227 | );
228 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
229 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
230 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
231 | GCC_WARN_UNDECLARED_SELECTOR = YES;
232 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
233 | GCC_WARN_UNUSED_FUNCTION = YES;
234 | GCC_WARN_UNUSED_VARIABLE = YES;
235 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
236 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
237 | MTL_ENABLE_DEBUG_INFO = YES;
238 | PRODUCT_NAME = "$(TARGET_NAME)";
239 | SKIP_INSTALL = YES;
240 | VERSIONING_SYSTEM = "apple-generic";
241 | VERSION_INFO_PREFIX = "";
242 | };
243 | name = Debug;
244 | };
245 | 6321D1241A801D9100559508 /* Release */ = {
246 | isa = XCBuildConfiguration;
247 | buildSettings = {
248 | ALWAYS_SEARCH_USER_PATHS = NO;
249 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
250 | CLANG_CXX_LIBRARY = "libc++";
251 | CLANG_ENABLE_MODULES = YES;
252 | CLANG_ENABLE_OBJC_ARC = YES;
253 | CLANG_WARN_BOOL_CONVERSION = YES;
254 | CLANG_WARN_CONSTANT_CONVERSION = YES;
255 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
256 | CLANG_WARN_EMPTY_BODY = YES;
257 | CLANG_WARN_ENUM_CONVERSION = YES;
258 | CLANG_WARN_INT_CONVERSION = YES;
259 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
260 | CLANG_WARN_UNREACHABLE_CODE = YES;
261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
262 | COPY_PHASE_STRIP = YES;
263 | DEFINES_MODULE = YES;
264 | DYLIB_COMPATIBILITY_VERSION = 1;
265 | DYLIB_INSTALL_NAME_BASE = "@rpath";
266 | ENABLE_NS_ASSERTIONS = NO;
267 | ENABLE_STRICT_OBJC_MSGSEND = YES;
268 | GCC_C_LANGUAGE_STANDARD = gnu99;
269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
271 | GCC_WARN_UNDECLARED_SELECTOR = YES;
272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
273 | GCC_WARN_UNUSED_FUNCTION = YES;
274 | GCC_WARN_UNUSED_VARIABLE = YES;
275 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
276 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
277 | MTL_ENABLE_DEBUG_INFO = NO;
278 | PRODUCT_NAME = "$(TARGET_NAME)";
279 | SKIP_INSTALL = YES;
280 | VALIDATE_PRODUCT = YES;
281 | VERSIONING_SYSTEM = "apple-generic";
282 | VERSION_INFO_PREFIX = "";
283 | };
284 | name = Release;
285 | };
286 | 6321D1251A801D9100559508 /* Debug */ = {
287 | isa = XCBuildConfiguration;
288 | buildSettings = {
289 | ALWAYS_SEARCH_USER_PATHS = NO;
290 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
291 | CLANG_CXX_LIBRARY = "libc++";
292 | CLANG_ENABLE_MODULES = YES;
293 | CLANG_ENABLE_OBJC_ARC = YES;
294 | CLANG_WARN_BOOL_CONVERSION = YES;
295 | CLANG_WARN_CONSTANT_CONVERSION = YES;
296 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
297 | CLANG_WARN_EMPTY_BODY = YES;
298 | CLANG_WARN_ENUM_CONVERSION = YES;
299 | CLANG_WARN_INT_CONVERSION = YES;
300 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
301 | CLANG_WARN_UNREACHABLE_CODE = YES;
302 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
303 | COPY_PHASE_STRIP = NO;
304 | ENABLE_STRICT_OBJC_MSGSEND = YES;
305 | GCC_C_LANGUAGE_STANDARD = gnu99;
306 | GCC_DYNAMIC_NO_PIC = NO;
307 | GCC_OPTIMIZATION_LEVEL = 0;
308 | GCC_PREPROCESSOR_DEFINITIONS = (
309 | "DEBUG=1",
310 | "$(inherited)",
311 | );
312 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
313 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
314 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
315 | GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
316 | GCC_WARN_UNDECLARED_SELECTOR = YES;
317 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
318 | GCC_WARN_UNUSED_FUNCTION = YES;
319 | GCC_WARN_UNUSED_VARIABLE = YES;
320 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
321 | MTL_ENABLE_DEBUG_INFO = YES;
322 | PRODUCT_NAME = "$(TARGET_NAME)";
323 | };
324 | name = Debug;
325 | };
326 | 6321D1261A801D9100559508 /* Release */ = {
327 | isa = XCBuildConfiguration;
328 | buildSettings = {
329 | ALWAYS_SEARCH_USER_PATHS = NO;
330 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
331 | CLANG_CXX_LIBRARY = "libc++";
332 | CLANG_ENABLE_MODULES = YES;
333 | CLANG_ENABLE_OBJC_ARC = YES;
334 | CLANG_WARN_BOOL_CONVERSION = YES;
335 | CLANG_WARN_CONSTANT_CONVERSION = YES;
336 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
337 | CLANG_WARN_EMPTY_BODY = YES;
338 | CLANG_WARN_ENUM_CONVERSION = YES;
339 | CLANG_WARN_INT_CONVERSION = YES;
340 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
341 | CLANG_WARN_UNREACHABLE_CODE = YES;
342 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
343 | COPY_PHASE_STRIP = YES;
344 | ENABLE_NS_ASSERTIONS = NO;
345 | ENABLE_STRICT_OBJC_MSGSEND = YES;
346 | GCC_C_LANGUAGE_STANDARD = gnu99;
347 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
348 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
349 | GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
350 | GCC_WARN_UNDECLARED_SELECTOR = YES;
351 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
352 | GCC_WARN_UNUSED_FUNCTION = YES;
353 | GCC_WARN_UNUSED_VARIABLE = YES;
354 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
355 | MTL_ENABLE_DEBUG_INFO = NO;
356 | PRODUCT_NAME = "$(TARGET_NAME)";
357 | VALIDATE_PRODUCT = YES;
358 | };
359 | name = Release;
360 | };
361 | 63F11F861A801D7100AE5B0E /* Debug */ = {
362 | isa = XCBuildConfiguration;
363 | buildSettings = {
364 | CLANG_WARN_BOOL_CONVERSION = YES;
365 | CLANG_WARN_CONSTANT_CONVERSION = YES;
366 | CLANG_WARN_EMPTY_BODY = YES;
367 | CLANG_WARN_ENUM_CONVERSION = YES;
368 | CLANG_WARN_INFINITE_RECURSION = YES;
369 | CLANG_WARN_INT_CONVERSION = YES;
370 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
371 | CLANG_WARN_UNREACHABLE_CODE = YES;
372 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
373 | CURRENT_PROJECT_VERSION = 1.0.12;
374 | DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)";
375 | ENABLE_STRICT_OBJC_MSGSEND = YES;
376 | ENABLE_TESTABILITY = YES;
377 | GCC_NO_COMMON_BLOCKS = YES;
378 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
379 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
380 | GCC_WARN_UNDECLARED_SELECTOR = YES;
381 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
382 | GCC_WARN_UNUSED_FUNCTION = YES;
383 | GCC_WARN_UNUSED_VARIABLE = YES;
384 | INFOPLIST_FILE = Sources/Info.plist;
385 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
386 | MACOSX_DEPLOYMENT_TARGET = 10.6;
387 | ONLY_ACTIVE_ARCH = YES;
388 | PRODUCT_BUNDLE_IDENTIFIER = "dev.mxcl.$(PRODUCT_NAME:rfc1034identifier)";
389 | SUPPORTED_PLATFORMS = "macosx watchsimulator watchos appletvsimulator appletvos iphonesimulator iphoneos";
390 | TARGETED_DEVICE_FAMILY = "1,2,3,4";
391 | TVOS_DEPLOYMENT_TARGET = 9.0;
392 | WATCHOS_DEPLOYMENT_TARGET = 2.0;
393 | };
394 | name = Debug;
395 | };
396 | 63F11F871A801D7100AE5B0E /* Release */ = {
397 | isa = XCBuildConfiguration;
398 | buildSettings = {
399 | CLANG_WARN_BOOL_CONVERSION = YES;
400 | CLANG_WARN_CONSTANT_CONVERSION = YES;
401 | CLANG_WARN_EMPTY_BODY = YES;
402 | CLANG_WARN_ENUM_CONVERSION = YES;
403 | CLANG_WARN_INFINITE_RECURSION = YES;
404 | CLANG_WARN_INT_CONVERSION = YES;
405 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
406 | CLANG_WARN_UNREACHABLE_CODE = YES;
407 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
408 | CURRENT_PROJECT_VERSION = 1.0.12;
409 | DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)";
410 | ENABLE_STRICT_OBJC_MSGSEND = YES;
411 | GCC_NO_COMMON_BLOCKS = YES;
412 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
413 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
414 | GCC_WARN_UNDECLARED_SELECTOR = YES;
415 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
416 | GCC_WARN_UNUSED_FUNCTION = YES;
417 | GCC_WARN_UNUSED_VARIABLE = YES;
418 | INFOPLIST_FILE = Sources/Info.plist;
419 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
420 | MACOSX_DEPLOYMENT_TARGET = 10.6;
421 | PRODUCT_BUNDLE_IDENTIFIER = "dev.mxcl.$(PRODUCT_NAME:rfc1034identifier)";
422 | SUPPORTED_PLATFORMS = "macosx watchsimulator watchos appletvsimulator appletvos iphonesimulator iphoneos";
423 | TARGETED_DEVICE_FAMILY = "1,2,3,4";
424 | TVOS_DEPLOYMENT_TARGET = 9.0;
425 | WATCHOS_DEPLOYMENT_TARGET = 2.0;
426 | };
427 | name = Release;
428 | };
429 | /* End XCBuildConfiguration section */
430 |
431 | /* Begin XCConfigurationList section */
432 | 6321D1271A801D9100559508 /* Build configuration list for PBXNativeTarget "ChuzzleKit" */ = {
433 | isa = XCConfigurationList;
434 | buildConfigurations = (
435 | 6321D1231A801D9100559508 /* Debug */,
436 | 6321D1241A801D9100559508 /* Release */,
437 | );
438 | defaultConfigurationIsVisible = 0;
439 | defaultConfigurationName = Release;
440 | };
441 | 6321D1281A801D9100559508 /* Build configuration list for PBXNativeTarget "ChuzzleTests" */ = {
442 | isa = XCConfigurationList;
443 | buildConfigurations = (
444 | 6321D1251A801D9100559508 /* Debug */,
445 | 6321D1261A801D9100559508 /* Release */,
446 | );
447 | defaultConfigurationIsVisible = 0;
448 | defaultConfigurationName = Release;
449 | };
450 | 63F11F851A801D7100AE5B0E /* Build configuration list for PBXProject "ChuzzleKit" */ = {
451 | isa = XCConfigurationList;
452 | buildConfigurations = (
453 | 63F11F861A801D7100AE5B0E /* Debug */,
454 | 63F11F871A801D7100AE5B0E /* Release */,
455 | );
456 | defaultConfigurationIsVisible = 0;
457 | defaultConfigurationName = Release;
458 | };
459 | /* End XCConfigurationList section */
460 | };
461 | rootObject = 63F11F821A801D7100AE5B0E /* Project object */;
462 | }
463 |
--------------------------------------------------------------------------------