Skip to content
This repository was archived by the owner on Aug 16, 2023. It is now read-only.

Commit 4eb443c

Browse files
committed
Merge pull request #7 from calebd/arrays
Library rewrite.
2 parents 12fbfc0 + a09f28a commit 4eb443c

24 files changed

Lines changed: 744 additions & 130 deletions

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
language: objective-c
2+
script:
3+
- xctool -project CMDQueryStringSerialization.xcodeproj -scheme CMDQueryStringSerialization -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
4+
- xctool test -project CMDQueryStringSerialization.xcodeproj -scheme CMDQueryStringSerialization -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO

CMDQueryStringSerialization.podspec

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ Pod::Spec.new do |s|
77
s.author = { 'Caleb Davenport' => 'calebmdavenport@gmail.com' }
88
s.source = { :git => 'https://github.com/calebd/CMDQueryStringSerialization.git', :tag => "v#{s.version}" }
99
s.requires_arc = true
10-
s.platform = :ios, '6.0'
10+
11+
s.ios.deployment_target = '6.0'
12+
s.osx.deployment_target = '10.8'
13+
1114
s.source_files = 'CMDQueryStringSerialization/**/*.{h,m}'
12-
end
15+
s.public_header_files = 'CMDQueryStringSerialization/CMDQueryStringSerialization.h'
16+
end

CMDQueryStringSerialization.xcodeproj/project.pbxproj

Lines changed: 80 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@
1212
3B6EAFB2188F5D79005D2EB4 /* libCMDQueryStringSerialization.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B6EAF9A188F5D78005D2EB4 /* libCMDQueryStringSerialization.a */; };
1313
3B6EAFB8188F5D79005D2EB4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3B6EAFB6188F5D79005D2EB4 /* InfoPlist.strings */; };
1414
3B6EAFBA188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6EAFB9188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m */; };
15+
3BF21A4318F0C06D0029100A /* CMDQueryStringArrayTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4218F0C06D0029100A /* CMDQueryStringArrayTransformer.m */; };
16+
3BF21A4418F0C06D0029100A /* CMDQueryStringArrayTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4218F0C06D0029100A /* CMDQueryStringArrayTransformer.m */; };
17+
3BF21A4718F0C1840029100A /* CMDQueryStringDateTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4618F0C1840029100A /* CMDQueryStringDateTransformer.m */; };
18+
3BF21A4818F0C1840029100A /* CMDQueryStringDateTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4618F0C1840029100A /* CMDQueryStringDateTransformer.m */; };
19+
3BF21A4B18F0C4F90029100A /* CMDQueryStringNumberTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4A18F0C4F90029100A /* CMDQueryStringNumberTransformer.m */; };
20+
3BF21A4C18F0C4F90029100A /* CMDQueryStringNumberTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4A18F0C4F90029100A /* CMDQueryStringNumberTransformer.m */; };
21+
3BF21A4F18F0C5040029100A /* CMDQueryStringStringTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4E18F0C5040029100A /* CMDQueryStringStringTransformer.m */; };
22+
3BF21A5018F0C5040029100A /* CMDQueryStringStringTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A4E18F0C5040029100A /* CMDQueryStringStringTransformer.m */; };
23+
3BF21A5218F0C58A0029100A /* CMDQueryStringValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */; };
24+
3BF21A5318F0C58A0029100A /* CMDQueryStringValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */; };
25+
3BF7142418B3FAD300D596B6 /* CMDQueryStringReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */; };
26+
3BF7142518B3FAD300D596B6 /* CMDQueryStringReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */; };
27+
3BF7142818B3FB3200D596B6 /* CMDQueryStringWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */; };
28+
3BF7142918B3FB3200D596B6 /* CMDQueryStringWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */; };
29+
93832CCF18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */; };
30+
93832CD018958D56005D5744 /* NSString+CMDQueryStringSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */; };
1531
/* End PBXBuildFile section */
1632

1733
/* Begin PBXContainerItemProxy section */
@@ -38,6 +54,7 @@
3854
/* End PBXCopyFilesBuildPhase section */
3955

4056
/* Begin PBXFileReference section */
57+
3B63E2C518B415E7002812A5 /* CMDQueryStringValueTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringValueTransformer.h; sourceTree = "<group>"; };
4158
3B6EAF9A188F5D78005D2EB4 /* libCMDQueryStringSerialization.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCMDQueryStringSerialization.a; sourceTree = BUILT_PRODUCTS_DIR; };
4259
3B6EAFA1188F5D78005D2EB4 /* CMDQueryStringSerialization-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CMDQueryStringSerialization-Prefix.pch"; sourceTree = "<group>"; };
4360
3B6EAFA2188F5D78005D2EB4 /* CMDQueryStringSerialization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringSerialization.h; sourceTree = "<group>"; };
@@ -46,6 +63,21 @@
4663
3B6EAFB5188F5D79005D2EB4 /* CMDQueryStringSerializationTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CMDQueryStringSerializationTests-Info.plist"; sourceTree = "<group>"; };
4764
3B6EAFB7188F5D79005D2EB4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
4865
3B6EAFB9188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringSerializationTests.m; sourceTree = "<group>"; };
66+
3BF21A4118F0C06D0029100A /* CMDQueryStringArrayTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringArrayTransformer.h; sourceTree = "<group>"; };
67+
3BF21A4218F0C06D0029100A /* CMDQueryStringArrayTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringArrayTransformer.m; sourceTree = "<group>"; };
68+
3BF21A4518F0C1840029100A /* CMDQueryStringDateTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringDateTransformer.h; sourceTree = "<group>"; };
69+
3BF21A4618F0C1840029100A /* CMDQueryStringDateTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringDateTransformer.m; sourceTree = "<group>"; };
70+
3BF21A4918F0C4F90029100A /* CMDQueryStringNumberTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringNumberTransformer.h; sourceTree = "<group>"; };
71+
3BF21A4A18F0C4F90029100A /* CMDQueryStringNumberTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringNumberTransformer.m; sourceTree = "<group>"; };
72+
3BF21A4D18F0C5040029100A /* CMDQueryStringStringTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringStringTransformer.h; sourceTree = "<group>"; };
73+
3BF21A4E18F0C5040029100A /* CMDQueryStringStringTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringStringTransformer.m; sourceTree = "<group>"; };
74+
3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringValueTransformer.m; sourceTree = "<group>"; };
75+
3BF7142218B3FAD300D596B6 /* CMDQueryStringReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringReader.h; sourceTree = "<group>"; };
76+
3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringReader.m; sourceTree = "<group>"; };
77+
3BF7142618B3FB3200D596B6 /* CMDQueryStringWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringWriter.h; sourceTree = "<group>"; };
78+
3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringWriter.m; sourceTree = "<group>"; };
79+
93832CCD18958BAF005D5744 /* NSString+CMDQueryStringSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+CMDQueryStringSerialization.h"; sourceTree = "<group>"; };
80+
93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+CMDQueryStringSerialization.m"; sourceTree = "<group>"; };
4981
/* End PBXFileReference section */
5082

5183
/* Begin PBXFrameworksBuildPhase section */
@@ -67,6 +99,15 @@
6799
/* End PBXFrameworksBuildPhase section */
68100

69101
/* Begin PBXGroup section */
102+
3B63E2C418B40367002812A5 /* Categories */ = {
103+
isa = PBXGroup;
104+
children = (
105+
93832CCD18958BAF005D5744 /* NSString+CMDQueryStringSerialization.h */,
106+
93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */,
107+
);
108+
name = Categories;
109+
sourceTree = "<group>";
110+
};
70111
3B6EAF91188F5D78005D2EB4 = {
71112
isa = PBXGroup;
72113
children = (
@@ -101,6 +142,12 @@
101142
children = (
102143
3B6EAFA2188F5D78005D2EB4 /* CMDQueryStringSerialization.h */,
103144
3B6EAFA4188F5D78005D2EB4 /* CMDQueryStringSerialization.m */,
145+
3BF7142218B3FAD300D596B6 /* CMDQueryStringReader.h */,
146+
3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */,
147+
3BF7142618B3FB3200D596B6 /* CMDQueryStringWriter.h */,
148+
3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */,
149+
93832CC218957E89005D5744 /* Transformers */,
150+
3B63E2C418B40367002812A5 /* Categories */,
104151
3B6EAFA0188F5D78005D2EB4 /* Supporting Files */,
105152
);
106153
path = CMDQueryStringSerialization;
@@ -132,6 +179,23 @@
132179
name = "Supporting Files";
133180
sourceTree = "<group>";
134181
};
182+
93832CC218957E89005D5744 /* Transformers */ = {
183+
isa = PBXGroup;
184+
children = (
185+
3B63E2C518B415E7002812A5 /* CMDQueryStringValueTransformer.h */,
186+
3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */,
187+
3BF21A4118F0C06D0029100A /* CMDQueryStringArrayTransformer.h */,
188+
3BF21A4218F0C06D0029100A /* CMDQueryStringArrayTransformer.m */,
189+
3BF21A4518F0C1840029100A /* CMDQueryStringDateTransformer.h */,
190+
3BF21A4618F0C1840029100A /* CMDQueryStringDateTransformer.m */,
191+
3BF21A4918F0C4F90029100A /* CMDQueryStringNumberTransformer.h */,
192+
3BF21A4A18F0C4F90029100A /* CMDQueryStringNumberTransformer.m */,
193+
3BF21A4D18F0C5040029100A /* CMDQueryStringStringTransformer.h */,
194+
3BF21A4E18F0C5040029100A /* CMDQueryStringStringTransformer.m */,
195+
);
196+
name = Transformers;
197+
sourceTree = "<group>";
198+
};
135199
/* End PBXGroup section */
136200

137201
/* Begin PBXNativeTarget section */
@@ -213,15 +277,31 @@
213277
isa = PBXSourcesBuildPhase;
214278
buildActionMask = 2147483647;
215279
files = (
280+
3BF21A4718F0C1840029100A /* CMDQueryStringDateTransformer.m in Sources */,
216281
3B6EAFA5188F5D78005D2EB4 /* CMDQueryStringSerialization.m in Sources */,
282+
93832CCF18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m in Sources */,
283+
3BF21A4B18F0C4F90029100A /* CMDQueryStringNumberTransformer.m in Sources */,
284+
3BF21A5218F0C58A0029100A /* CMDQueryStringValueTransformer.m in Sources */,
285+
3BF7142418B3FAD300D596B6 /* CMDQueryStringReader.m in Sources */,
286+
3BF21A4F18F0C5040029100A /* CMDQueryStringStringTransformer.m in Sources */,
287+
3BF21A4318F0C06D0029100A /* CMDQueryStringArrayTransformer.m in Sources */,
288+
3BF7142818B3FB3200D596B6 /* CMDQueryStringWriter.m in Sources */,
217289
);
218290
runOnlyForDeploymentPostprocessing = 0;
219291
};
220292
3B6EAFA6188F5D78005D2EB4 /* Sources */ = {
221293
isa = PBXSourcesBuildPhase;
222294
buildActionMask = 2147483647;
223295
files = (
296+
3BF21A4818F0C1840029100A /* CMDQueryStringDateTransformer.m in Sources */,
224297
3B6EAFBA188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m in Sources */,
298+
93832CD018958D56005D5744 /* NSString+CMDQueryStringSerialization.m in Sources */,
299+
3BF21A4C18F0C4F90029100A /* CMDQueryStringNumberTransformer.m in Sources */,
300+
3BF21A5318F0C58A0029100A /* CMDQueryStringValueTransformer.m in Sources */,
301+
3BF21A4418F0C06D0029100A /* CMDQueryStringArrayTransformer.m in Sources */,
302+
3BF21A5018F0C5040029100A /* CMDQueryStringStringTransformer.m in Sources */,
303+
3BF7142518B3FAD300D596B6 /* CMDQueryStringReader.m in Sources */,
304+
3BF7142918B3FB3200D596B6 /* CMDQueryStringWriter.m in Sources */,
225305
);
226306
runOnlyForDeploymentPostprocessing = 0;
227307
};
@@ -251,7 +331,6 @@
251331
isa = XCBuildConfiguration;
252332
buildSettings = {
253333
ALWAYS_SEARCH_USER_PATHS = NO;
254-
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
255334
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
256335
CLANG_CXX_LIBRARY = "libc++";
257336
CLANG_ENABLE_MODULES = YES;
@@ -289,7 +368,6 @@
289368
isa = XCBuildConfiguration;
290369
buildSettings = {
291370
ALWAYS_SEARCH_USER_PATHS = NO;
292-
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
293371
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
294372
CLANG_CXX_LIBRARY = "libc++";
295373
CLANG_ENABLE_MODULES = YES;
@@ -344,7 +422,6 @@
344422
3B6EAFC1188F5D79005D2EB4 /* Debug */ = {
345423
isa = XCBuildConfiguration;
346424
buildSettings = {
347-
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
348425
FRAMEWORK_SEARCH_PATHS = (
349426
"$(SDKROOT)/Developer/Library/Frameworks",
350427
"$(inherited)",
@@ -365,7 +442,6 @@
365442
3B6EAFC2188F5D79005D2EB4 /* Release */ = {
366443
isa = XCBuildConfiguration;
367444
buildSettings = {
368-
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
369445
FRAMEWORK_SEARCH_PATHS = (
370446
"$(SDKROOT)/Developer/Library/Frameworks",
371447
"$(inherited)",
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "0500"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "3B6EAF99188F5D78005D2EB4"
18+
BuildableName = "libCMDQueryStringSerialization.a"
19+
BlueprintName = "CMDQueryStringSerialization"
20+
ReferencedContainer = "container:CMDQueryStringSerialization.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
27+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
28+
shouldUseLaunchSchemeArgsEnv = "YES"
29+
buildConfiguration = "Debug">
30+
<Testables>
31+
<TestableReference
32+
skipped = "NO">
33+
<BuildableReference
34+
BuildableIdentifier = "primary"
35+
BlueprintIdentifier = "3B6EAFA9188F5D78005D2EB4"
36+
BuildableName = "CMDQueryStringSerializationTests.xctest"
37+
BlueprintName = "CMDQueryStringSerializationTests"
38+
ReferencedContainer = "container:CMDQueryStringSerialization.xcodeproj">
39+
</BuildableReference>
40+
</TestableReference>
41+
</Testables>
42+
</TestAction>
43+
<LaunchAction
44+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
45+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
46+
launchStyle = "0"
47+
useCustomWorkingDirectory = "NO"
48+
buildConfiguration = "Debug"
49+
ignoresPersistentStateOnLaunch = "NO"
50+
debugDocumentVersioning = "YES"
51+
allowLocationSimulation = "YES">
52+
<AdditionalOptions>
53+
</AdditionalOptions>
54+
</LaunchAction>
55+
<ProfileAction
56+
shouldUseLaunchSchemeArgsEnv = "YES"
57+
savedToolIdentifier = ""
58+
useCustomWorkingDirectory = "NO"
59+
buildConfiguration = "Release"
60+
debugDocumentVersioning = "YES">
61+
</ProfileAction>
62+
<AnalyzeAction
63+
buildConfiguration = "Debug">
64+
</AnalyzeAction>
65+
<ArchiveAction
66+
buildConfiguration = "Release"
67+
revealArchiveInOrganizer = "YES">
68+
</ArchiveAction>
69+
</Scheme>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// CMDQueryStringArrayTransformer.h
3+
// CMDQueryStringSerialization
4+
//
5+
// Created by Caleb Davenport on 4/5/14.
6+
// Copyright (c) 2014 Caleb Davenport. All rights reserved.
7+
//
8+
9+
#import "CMDQueryStringValueTransformer.h"
10+
11+
@interface CMDQueryStringArrayTransformer : NSObject <CMDQueryStringValueTransformer>
12+
13+
@end
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// CMDQueryStringArrayTransformer.m
3+
// CMDQueryStringSerialization
4+
//
5+
// Created by Caleb Davenport on 4/5/14.
6+
// Copyright (c) 2014 Caleb Davenport. All rights reserved.
7+
//
8+
9+
#import "CMDQueryStringArrayTransformer.h"
10+
11+
@implementation CMDQueryStringArrayTransformer
12+
13+
#pragma mark - CMDQueryStringValueTransformer
14+
15+
+ (NSString *)stringWithKey:(NSString *)key value:(id)value options:(CMDQueryStringWritingOptions)options {
16+
NSArray *escapedValues = [value valueForKey:@"cmd_stringByAddingEscapes"];
17+
if ((options & CMDQueryStringWritingOptionArrayCommaSeparatedValues) == CMDQueryStringWritingOptionArrayCommaSeparatedValues) {
18+
key = [key cmd_stringByAddingEscapes];
19+
value = [escapedValues componentsJoinedByString:@","];
20+
return [NSString stringWithFormat:@"%@=%@", key, value];
21+
}
22+
else if ((options & CMDQueryStringWritingOptionArrayRepeatKeysWithBrackets) == CMDQueryStringWritingOptionArrayRepeatKeysWithBrackets) {
23+
NSMutableArray *pairs = [NSMutableArray new];
24+
for (id escapedValue in escapedValues) {
25+
NSString *string = [NSString stringWithFormat:@"%@[]=%@", [key cmd_stringByAddingEscapes], escapedValue];
26+
[pairs addObject:string];
27+
}
28+
return [pairs componentsJoinedByString:@"&"];
29+
}
30+
else if ((options & CMDQueryStringWritingOptionArrayRepeatKeys) == CMDQueryStringWritingOptionArrayRepeatKeys) {
31+
NSMutableArray *pairs = [NSMutableArray new];
32+
for (id escapedValue in escapedValues) {
33+
NSString *string = [NSString stringWithFormat:@"%@=%@", [key cmd_stringByAddingEscapes], escapedValue];
34+
[pairs addObject:string];
35+
}
36+
return [pairs componentsJoinedByString:@"&"];
37+
}
38+
return nil;
39+
}
40+
41+
@end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// CMDQueryStringDateTransformer.h
3+
// CMDQueryStringSerialization
4+
//
5+
// Created by Caleb Davenport on 4/5/14.
6+
// Copyright (c) 2014 Caleb Davenport. All rights reserved.
7+
//
8+
9+
#import "CMDQueryStringValueTransformer.h"
10+
11+
@interface CMDQueryStringDateTransformer : NSObject <CMDQueryStringValueTransformer>
12+
13+
@end
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//
2+
// CMDQueryStringDateTransformer.m
3+
// CMDQueryStringSerialization
4+
//
5+
// Created by Caleb Davenport on 4/5/14.
6+
// Copyright (c) 2014 Caleb Davenport. All rights reserved.
7+
//
8+
9+
#import "CMDQueryStringDateTransformer.h"
10+
11+
@implementation CMDQueryStringDateTransformer
12+
13+
#pragma mark - CMDQueryStringValueTransformer
14+
15+
+ (NSString *)stringWithKey:(NSString *)key value:(id)value options:(CMDQueryStringWritingOptions)options {
16+
if ((options & CMDQueryStringWritingOptionDateAsUnixTimestamp) == CMDQueryStringWritingOptionDateAsUnixTimestamp) {
17+
NSNumber *number = @((NSInteger)[value timeIntervalSince1970]);
18+
return [CMDQueryStringValueTransformer stringWithKey:key value:number options:options];
19+
}
20+
return nil;
21+
}
22+
23+
@end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// CMDQueryStringNumberTransformer.h
3+
// CMDQueryStringSerialization
4+
//
5+
// Created by Caleb Davenport on 4/5/14.
6+
// Copyright (c) 2014 Caleb Davenport. All rights reserved.
7+
//
8+
9+
#import "CMDQueryStringValueTransformer.h"
10+
11+
@interface CMDQueryStringNumberTransformer : NSObject <CMDQueryStringValueTransformer>
12+
13+
@end

0 commit comments

Comments
 (0)