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

Commit 8a2d80e

Browse files
committed
Add ability to encode ISO8601 dates.
1 parent ad325bd commit 8a2d80e

10 files changed

Lines changed: 129 additions & 106 deletions

File tree

CMDQueryStringSerialization.podspec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@ Pod::Spec.new do |s|
1818
'CMDQueryStringSerialization/CMDQueryStringSerialization.h',
1919
'CMDQueryStringSerialization/CMDQueryStringWritingOptions.h'
2020

21+
s.dependency 'ISO8601'
22+
2123
end

CMDQueryStringSerialization.xcodeproj/project.pbxproj

Lines changed: 90 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,14 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
3B0EA95619745A150063266A /* CMDQueryStringWritingOptions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3B1DB7531970E5A40076F82B /* CMDQueryStringWritingOptions.h */; };
1110
3B0EA95719745A240063266A /* libCMDQueryStringSerialization.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B6EAF9A188F5D78005D2EB4 /* libCMDQueryStringSerialization.a */; };
12-
3B0EA95819745AE90063266A /* CMDQueryStringValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */; };
13-
3B6EAFA3188F5D78005D2EB4 /* CMDQueryStringSerialization.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3B6EAFA2188F5D78005D2EB4 /* CMDQueryStringSerialization.h */; };
14-
3B6EAFA5188F5D78005D2EB4 /* CMDQueryStringSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6EAFA4188F5D78005D2EB4 /* CMDQueryStringSerialization.m */; };
11+
3B2304AB198AB3850041975A /* CMDQueryStringReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2304A3198AB3850041975A /* CMDQueryStringReader.m */; };
12+
3B2304AC198AB3850041975A /* CMDQueryStringSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2304A5198AB3850041975A /* CMDQueryStringSerialization.m */; };
13+
3B2304AD198AB3850041975A /* CMDQueryStringValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2304A7198AB3850041975A /* CMDQueryStringValueTransformer.m */; };
14+
3B2304AE198AB3850041975A /* NSString+CMDQueryStringSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2304AA198AB3850041975A /* NSString+CMDQueryStringSerialization.m */; };
1515
3B6EAFB8188F5D79005D2EB4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3B6EAFB6188F5D79005D2EB4 /* InfoPlist.strings */; };
1616
3B6EAFBA188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6EAFB9188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m */; };
17-
3BF7142418B3FAD300D596B6 /* CMDQueryStringReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */; };
18-
3BF7142818B3FB3200D596B6 /* CMDQueryStringWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */; };
19-
93832CCF18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */; };
17+
3BA6BEA5C0334CF39D850E6D /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 528AAADF68E947A4B197A807 /* libPods.a */; };
2018
/* End PBXBuildFile section */
2119

2220
/* Begin PBXContainerItemProxy section */
@@ -43,37 +41,36 @@
4341
dstPath = "include/$(PRODUCT_NAME)";
4442
dstSubfolderSpec = 16;
4543
files = (
46-
3B0EA95619745A150063266A /* CMDQueryStringWritingOptions.h in CopyFiles */,
47-
3B6EAFA3188F5D78005D2EB4 /* CMDQueryStringSerialization.h in CopyFiles */,
4844
);
4945
runOnlyForDeploymentPostprocessing = 0;
5046
};
5147
/* End PBXCopyFilesBuildPhase section */
5248

5349
/* Begin PBXFileReference section */
54-
3B1DB7531970E5A40076F82B /* CMDQueryStringWritingOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringWritingOptions.h; sourceTree = "<group>"; };
55-
3B63E2C518B415E7002812A5 /* CMDQueryStringValueTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringValueTransformer.h; sourceTree = "<group>"; };
50+
1FA5FE7907B44006AE9FDFA3 /* Pods.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.xcconfig; path = Pods/Pods.xcconfig; sourceTree = "<group>"; };
51+
3B2304A2198AB3850041975A /* CMDQueryStringReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringReader.h; sourceTree = "<group>"; };
52+
3B2304A3198AB3850041975A /* CMDQueryStringReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringReader.m; sourceTree = "<group>"; };
53+
3B2304A4198AB3850041975A /* CMDQueryStringSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringSerialization.h; sourceTree = "<group>"; };
54+
3B2304A5198AB3850041975A /* CMDQueryStringSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringSerialization.m; sourceTree = "<group>"; };
55+
3B2304A6198AB3850041975A /* CMDQueryStringValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringValueTransformer.h; sourceTree = "<group>"; };
56+
3B2304A7198AB3850041975A /* CMDQueryStringValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringValueTransformer.m; sourceTree = "<group>"; };
57+
3B2304A8198AB3850041975A /* CMDQueryStringWritingOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringWritingOptions.h; sourceTree = "<group>"; };
58+
3B2304A9198AB3850041975A /* NSString+CMDQueryStringSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+CMDQueryStringSerialization.h"; sourceTree = "<group>"; };
59+
3B2304AA198AB3850041975A /* NSString+CMDQueryStringSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+CMDQueryStringSerialization.m"; sourceTree = "<group>"; };
5660
3B6EAF9A188F5D78005D2EB4 /* libCMDQueryStringSerialization.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCMDQueryStringSerialization.a; sourceTree = BUILT_PRODUCTS_DIR; };
57-
3B6EAFA2188F5D78005D2EB4 /* CMDQueryStringSerialization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringSerialization.h; sourceTree = "<group>"; };
58-
3B6EAFA4188F5D78005D2EB4 /* CMDQueryStringSerialization.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringSerialization.m; sourceTree = "<group>"; };
5961
3B6EAFAA188F5D78005D2EB4 /* CMDQueryStringSerializationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CMDQueryStringSerializationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6062
3B6EAFB5188F5D79005D2EB4 /* CMDQueryStringSerializationTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CMDQueryStringSerializationTests-Info.plist"; sourceTree = "<group>"; };
6163
3B6EAFB7188F5D79005D2EB4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6264
3B6EAFB9188F5D79005D2EB4 /* CMDQueryStringSerializationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringSerializationTests.m; sourceTree = "<group>"; };
63-
3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringValueTransformer.m; sourceTree = "<group>"; };
64-
3BF7142218B3FAD300D596B6 /* CMDQueryStringReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringReader.h; sourceTree = "<group>"; };
65-
3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringReader.m; sourceTree = "<group>"; };
66-
3BF7142618B3FB3200D596B6 /* CMDQueryStringWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMDQueryStringWriter.h; sourceTree = "<group>"; };
67-
3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMDQueryStringWriter.m; sourceTree = "<group>"; };
68-
93832CCD18958BAF005D5744 /* NSString+CMDQueryStringSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+CMDQueryStringSerialization.h"; sourceTree = "<group>"; };
69-
93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+CMDQueryStringSerialization.m"; sourceTree = "<group>"; };
65+
528AAADF68E947A4B197A807 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
7066
/* End PBXFileReference section */
7167

7268
/* Begin PBXFrameworksBuildPhase section */
7369
3B6EAF97188F5D78005D2EB4 /* Frameworks */ = {
7470
isa = PBXFrameworksBuildPhase;
7571
buildActionMask = 2147483647;
7672
files = (
73+
3BA6BEA5C0334CF39D850E6D /* libPods.a in Frameworks */,
7774
);
7875
runOnlyForDeploymentPostprocessing = 0;
7976
};
@@ -88,22 +85,27 @@
8885
/* End PBXFrameworksBuildPhase section */
8986

9087
/* Begin PBXGroup section */
91-
3B63E2C418B40367002812A5 /* Categories */ = {
88+
3B2304A1198AB3850041975A /* CMDQueryStringSerialization */ = {
9289
isa = PBXGroup;
9390
children = (
94-
93832CCD18958BAF005D5744 /* NSString+CMDQueryStringSerialization.h */,
95-
93832CCE18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m */,
91+
3B2304A4198AB3850041975A /* CMDQueryStringSerialization.h */,
92+
3B2304A5198AB3850041975A /* CMDQueryStringSerialization.m */,
93+
3B2304A8198AB3850041975A /* CMDQueryStringWritingOptions.h */,
94+
3BB9F66C198AB5B900220F84 /* Reader */,
95+
3BB9F66B198AB5A200220F84 /* Transformers */,
96+
3BB9F66D198AB5C100220F84 /* Categories */,
9697
);
97-
name = Categories;
98+
path = CMDQueryStringSerialization;
9899
sourceTree = "<group>";
99100
};
100101
3B6EAF91188F5D78005D2EB4 = {
101102
isa = PBXGroup;
102103
children = (
103-
3B6EAF9F188F5D78005D2EB4 /* CMDQueryStringSerialization */,
104+
3B2304A1198AB3850041975A /* CMDQueryStringSerialization */,
104105
3B6EAFB3188F5D79005D2EB4 /* CMDQueryStringSerializationTests */,
105106
3B6EAF9C188F5D78005D2EB4 /* Frameworks */,
106107
3B6EAF9B188F5D78005D2EB4 /* Products */,
108+
1FA5FE7907B44006AE9FDFA3 /* Pods.xcconfig */,
107109
);
108110
indentWidth = 4;
109111
sourceTree = "<group>";
@@ -122,26 +124,11 @@
122124
3B6EAF9C188F5D78005D2EB4 /* Frameworks */ = {
123125
isa = PBXGroup;
124126
children = (
127+
528AAADF68E947A4B197A807 /* libPods.a */,
125128
);
126129
name = Frameworks;
127130
sourceTree = "<group>";
128131
};
129-
3B6EAF9F188F5D78005D2EB4 /* CMDQueryStringSerialization */ = {
130-
isa = PBXGroup;
131-
children = (
132-
3B1DB7531970E5A40076F82B /* CMDQueryStringWritingOptions.h */,
133-
3B6EAFA2188F5D78005D2EB4 /* CMDQueryStringSerialization.h */,
134-
3B6EAFA4188F5D78005D2EB4 /* CMDQueryStringSerialization.m */,
135-
3BF7142218B3FAD300D596B6 /* CMDQueryStringReader.h */,
136-
3BF7142318B3FAD300D596B6 /* CMDQueryStringReader.m */,
137-
3BF7142618B3FB3200D596B6 /* CMDQueryStringWriter.h */,
138-
3BF7142718B3FB3200D596B6 /* CMDQueryStringWriter.m */,
139-
93832CC218957E89005D5744 /* Transformers */,
140-
3B63E2C418B40367002812A5 /* Categories */,
141-
);
142-
path = CMDQueryStringSerialization;
143-
sourceTree = "<group>";
144-
};
145132
3B6EAFB3188F5D79005D2EB4 /* CMDQueryStringSerializationTests */ = {
146133
isa = PBXGroup;
147134
children = (
@@ -160,25 +147,45 @@
160147
name = "Supporting Files";
161148
sourceTree = "<group>";
162149
};
163-
93832CC218957E89005D5744 /* Transformers */ = {
150+
3BB9F66B198AB5A200220F84 /* Transformers */ = {
164151
isa = PBXGroup;
165152
children = (
166-
3B63E2C518B415E7002812A5 /* CMDQueryStringValueTransformer.h */,
167-
3BF21A5118F0C58A0029100A /* CMDQueryStringValueTransformer.m */,
153+
3B2304A6198AB3850041975A /* CMDQueryStringValueTransformer.h */,
154+
3B2304A7198AB3850041975A /* CMDQueryStringValueTransformer.m */,
168155
);
169156
name = Transformers;
170157
sourceTree = "<group>";
171158
};
159+
3BB9F66C198AB5B900220F84 /* Reader */ = {
160+
isa = PBXGroup;
161+
children = (
162+
3B2304A2198AB3850041975A /* CMDQueryStringReader.h */,
163+
3B2304A3198AB3850041975A /* CMDQueryStringReader.m */,
164+
);
165+
name = Reader;
166+
sourceTree = "<group>";
167+
};
168+
3BB9F66D198AB5C100220F84 /* Categories */ = {
169+
isa = PBXGroup;
170+
children = (
171+
3B2304A9198AB3850041975A /* NSString+CMDQueryStringSerialization.h */,
172+
3B2304AA198AB3850041975A /* NSString+CMDQueryStringSerialization.m */,
173+
);
174+
name = Categories;
175+
sourceTree = "<group>";
176+
};
172177
/* End PBXGroup section */
173178

174179
/* Begin PBXNativeTarget section */
175180
3B6EAF99188F5D78005D2EB4 /* CMDQueryStringSerialization */ = {
176181
isa = PBXNativeTarget;
177182
buildConfigurationList = 3B6EAFBD188F5D79005D2EB4 /* Build configuration list for PBXNativeTarget "CMDQueryStringSerialization" */;
178183
buildPhases = (
184+
AF924C540B6D4AAB8A963FB8 /* Check Pods Manifest.lock */,
179185
3B6EAF96188F5D78005D2EB4 /* Sources */,
180186
3B6EAF97188F5D78005D2EB4 /* Frameworks */,
181187
3B6EAF98188F5D78005D2EB4 /* CopyFiles */,
188+
6D284C235B9F4B79A2619BAF /* Copy Pods Resources */,
182189
);
183190
buildRules = (
184191
);
@@ -251,16 +258,48 @@
251258
};
252259
/* End PBXResourcesBuildPhase section */
253260

261+
/* Begin PBXShellScriptBuildPhase section */
262+
6D284C235B9F4B79A2619BAF /* Copy Pods Resources */ = {
263+
isa = PBXShellScriptBuildPhase;
264+
buildActionMask = 2147483647;
265+
files = (
266+
);
267+
inputPaths = (
268+
);
269+
name = "Copy Pods Resources";
270+
outputPaths = (
271+
);
272+
runOnlyForDeploymentPostprocessing = 0;
273+
shellPath = /bin/sh;
274+
shellScript = "\"${SRCROOT}/Pods/Pods-resources.sh\"\n";
275+
showEnvVarsInLog = 0;
276+
};
277+
AF924C540B6D4AAB8A963FB8 /* Check Pods Manifest.lock */ = {
278+
isa = PBXShellScriptBuildPhase;
279+
buildActionMask = 2147483647;
280+
files = (
281+
);
282+
inputPaths = (
283+
);
284+
name = "Check Pods Manifest.lock";
285+
outputPaths = (
286+
);
287+
runOnlyForDeploymentPostprocessing = 0;
288+
shellPath = /bin/sh;
289+
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
290+
showEnvVarsInLog = 0;
291+
};
292+
/* End PBXShellScriptBuildPhase section */
293+
254294
/* Begin PBXSourcesBuildPhase section */
255295
3B6EAF96188F5D78005D2EB4 /* Sources */ = {
256296
isa = PBXSourcesBuildPhase;
257297
buildActionMask = 2147483647;
258298
files = (
259-
3B0EA95819745AE90063266A /* CMDQueryStringValueTransformer.m in Sources */,
260-
3B6EAFA5188F5D78005D2EB4 /* CMDQueryStringSerialization.m in Sources */,
261-
93832CCF18958BAF005D5744 /* NSString+CMDQueryStringSerialization.m in Sources */,
262-
3BF7142418B3FAD300D596B6 /* CMDQueryStringReader.m in Sources */,
263-
3BF7142818B3FB3200D596B6 /* CMDQueryStringWriter.m in Sources */,
299+
3B2304AB198AB3850041975A /* CMDQueryStringReader.m in Sources */,
300+
3B2304AD198AB3850041975A /* CMDQueryStringValueTransformer.m in Sources */,
301+
3B2304AC198AB3850041975A /* CMDQueryStringSerialization.m in Sources */,
302+
3B2304AE198AB3850041975A /* NSString+CMDQueryStringSerialization.m in Sources */,
264303
);
265304
runOnlyForDeploymentPostprocessing = 0;
266305
};
@@ -373,6 +412,7 @@
373412
};
374413
3B6EAFBE188F5D79005D2EB4 /* Debug */ = {
375414
isa = XCBuildConfiguration;
415+
baseConfigurationReference = 1FA5FE7907B44006AE9FDFA3 /* Pods.xcconfig */;
376416
buildSettings = {
377417
PRODUCT_NAME = "$(TARGET_NAME)";
378418
SKIP_INSTALL = YES;
@@ -381,6 +421,7 @@
381421
};
382422
3B6EAFBF188F5D79005D2EB4 /* Release */ = {
383423
isa = XCBuildConfiguration;
424+
baseConfigurationReference = 1FA5FE7907B44006AE9FDFA3 /* Pods.xcconfig */;
384425
buildSettings = {
385426
PRODUCT_NAME = "$(TARGET_NAME)";
386427
SKIP_INSTALL = YES;

CMDQueryStringSerialization/CMDQueryStringSerialization.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
//
88

99
#import "CMDQueryStringSerialization.h"
10-
#import "CMDQueryStringWriter.h"
1110
#import "CMDQueryStringReader.h"
11+
#import "CMDQueryStringValueTransformer.h"
1212

1313
@implementation CMDQueryStringSerialization
1414

@@ -28,8 +28,7 @@ + (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary {
2828

2929

3030
+ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary options:(CMDQueryStringWritingOptions)options {
31-
CMDQueryStringWriter *writer = [[CMDQueryStringWriter alloc] initWithDictionary:dictionary options:options];
32-
return [writer stringValue];
31+
return [dictionary CMDQueryStringValueTransformer_queryStringWithKey:nil options:options];
3332
}
3433

3534
@end

CMDQueryStringSerialization/CMDQueryStringValueTransformer.m

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#import "CMDQueryStringValueTransformer.h"
1010
#import "NSString+CMDQueryStringSerialization.h"
1111

12+
#import <ISO8601/ISO8601.h>
13+
1214
@implementation NSObject (CMDQueryStringValueTransformer)
1315

1416
- (NSString *)CMDQueryStringValueTransformer_queryStringWithKey:(NSString *)key options:(CMDQueryStringWritingOptions)options {
@@ -71,8 +73,13 @@ - (NSString *)CMDQueryStringValueTransformer_queryStringWithKey:(NSString *)name
7173
@implementation NSDate (CMDQueryStringValueTransformer)
7274

7375
- (NSString *)CMDQueryStringValueTransformer_queryStringWithKey:(NSString *)key options:(CMDQueryStringWritingOptions)options {
74-
NSNumber *number = @((NSInteger)[self timeIntervalSince1970]);
75-
return [number CMDQueryStringValueTransformer_queryStringWithKey:key options:options];
76+
if ((options & CMDQueryStringWritingOptionDateAsISO8601String) == CMDQueryStringWritingOptionDateAsISO8601String) {
77+
return [[self ISO8601String] CMDQueryStringValueTransformer_queryStringWithKey:key options:options];
78+
}
79+
else {
80+
NSNumber *number = @((NSInteger)[self timeIntervalSince1970]);
81+
return [number CMDQueryStringValueTransformer_queryStringWithKey:key options:options];
82+
}
7683
}
7784

7885
@end

CMDQueryStringSerialization/CMDQueryStringWriter.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

CMDQueryStringSerialization/CMDQueryStringWriter.m

Lines changed: 0 additions & 32 deletions
This file was deleted.

CMDQueryStringSerialization/CMDQueryStringWritingOptions.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ typedef NS_OPTIONS(NSUInteger, CMDQueryStringWritingOptions) {
1717
// Arrays encoded with format: `key=value1,value2`
1818
CMDQueryStringWritingOptionArrayCommaSeparatedValues = 3 << 4,
1919

20-
// Dates encoded as Unix time stamps
21-
CMDQueryStringWritingOptionDateAsUnixTimestamp = 1 << 8
20+
// Defualt: Dates encoded as Unix time stamps
21+
CMDQueryStringWritingOptionDateAsUnixTimestamp = 1 << 8,
22+
23+
// Dates encoded as ISO8601 strings
24+
CMDQueryStringWritingOptionDateAsISO8601String = 2 << 8,
2225
};

CMDQueryStringSerializationTests/CMDQueryStringSerializationTests.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,14 @@ - (void)testDictionaryWithBooleanNO {
210210
XCTAssertEqualObjects(actualString, desiredString, @"Query parameters are incorrect.");
211211
}
212212

213+
- (void)testDateAsISO8601String {
214+
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1406759723];
215+
NSString *desiredString = @"date=2014-07-30T15%3A35%3A23-07%3A00";
216+
217+
NSDictionary *dictionary = @{ @"date": date };
218+
219+
NSString *actualString = [CMDQueryStringSerialization queryStringWithDictionary:dictionary options:CMDQueryStringWritingOptionDateAsISO8601String];
220+
XCTAssertEqualObjects(actualString, desiredString, @"Query parameters are incorrect.");
221+
}
222+
213223
@end

Podfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
podspec :name => 'CMDQueryStringSerialization'

0 commit comments

Comments
 (0)