@@ -34,12 +34,13 @@ import Foundation
3434/// type of object as a value.
3535public typealias JSONDictionary = [ String : AnyObject ]
3636
37- // MARK: Operator for quick primitive type deserialization.
37+ /// Operator for use in deserialization operations.
38+ infix operator <-- { associativity right precedence 150 }
3839
39- infix operator <<< { associativity right precedence 150 }
40+ /// MARK: Primitive Type Deserialization
4041
4142// For optionals.
42- public func <<< < T> ( inout property: T ? , value: AnyObject ? ) -> T ? {
43+ public func <-- < T> ( inout property: T ? , value: AnyObject ? ) -> T ? {
4344 var newValue : T ?
4445 if let unwrappedValue: AnyObject = value {
4546 // We unwrapped the given value successfully, try to convert.
@@ -75,15 +76,15 @@ public func <<< <T>(inout property: T?, value: AnyObject?) -> T? {
7576}
7677
7778// For non-optionals.
78- public func <<< < T> ( inout property: T , value: AnyObject ? ) -> T {
79+ public func <-- < T> ( inout property: T , value: AnyObject ? ) -> T {
7980 var newValue : T ?
80- newValue <<< value
81+ newValue <-- value
8182 if let newValue = newValue { property = newValue }
8283 return property
8384}
8485
8586// Special handling for value and format pair to NSDate conversion.
86- public func <<< ( inout property: NSDate ? , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> NSDate ? {
87+ public func <-- ( inout property: NSDate ? , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> NSDate ? {
8788 var newValue : NSDate ?
8889 if let dateString = valueAndFormat. value as? String {
8990 if let formatString = valueAndFormat. format as? String {
@@ -98,18 +99,16 @@ public func <<< (inout property: NSDate?, valueAndFormat: (value: AnyObject?, fo
9899 return property
99100}
100101
101- public func <<< ( inout property: NSDate , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> NSDate {
102+ public func <-- ( inout property: NSDate , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> NSDate {
102103 var date : NSDate ?
103- date <<< valueAndFormat
104+ date <-- valueAndFormat
104105 if let date = date { property = date }
105106 return property
106107}
107108
108- // MARK: Operator for quick primitive array deserialization.
109+ // MARK: Primitive Array Deserialization
109110
110- infix operator <<<* { associativity right precedence 150 }
111-
112- public func <<<* ( inout array: [ String ] ? , value: AnyObject ? ) -> [ String ] ? {
111+ public func <-- ( inout array: [ String ] ? , value: AnyObject ? ) -> [ String ] ? {
113112 if let stringArray = value as? [ String ] {
114113 array = stringArray
115114 } else {
@@ -118,14 +117,14 @@ public func <<<* (inout array: [String]?, value: AnyObject?) -> [String]? {
118117 return array
119118}
120119
121- public func <<<* ( inout array: [ String ] , value: AnyObject ? ) -> [ String ] {
120+ public func <-- ( inout array: [ String ] , value: AnyObject ? ) -> [ String ] {
122121 var newValue : [ String ] ?
123- newValue <<<* value
122+ newValue <-- value
124123 if let newValue = newValue { array = newValue }
125124 return array
126125}
127126
128- public func <<<* ( inout array: [ Int ] ? , value: AnyObject ? ) -> [ Int ] ? {
127+ public func <-- ( inout array: [ Int ] ? , value: AnyObject ? ) -> [ Int ] ? {
129128 if let intArray = value as? [ Int ] {
130129 array = intArray
131130 } else {
@@ -134,14 +133,14 @@ public func <<<* (inout array: [Int]?, value: AnyObject?) -> [Int]? {
134133 return array
135134}
136135
137- public func <<<* ( inout array: [ Int ] , value: AnyObject ? ) -> [ Int ] {
136+ public func <-- ( inout array: [ Int ] , value: AnyObject ? ) -> [ Int ] {
138137 var newValue : [ Int ] ?
139- newValue <<<* value
138+ newValue <-- value
140139 if let newValue = newValue { array = newValue }
141140 return array
142141}
143142
144- public func <<<* ( inout array: [ Float ] ? , value: AnyObject ? ) -> [ Float ] ? {
143+ public func <-- ( inout array: [ Float ] ? , value: AnyObject ? ) -> [ Float ] ? {
145144
146145 if let floatArray = value as? [ Float ] {
147146 array = floatArray
@@ -151,14 +150,14 @@ public func <<<* (inout array: [Float]?, value: AnyObject?) -> [Float]? {
151150 return array
152151}
153152
154- public func <<<* ( inout array: [ Float ] , value: AnyObject ? ) -> [ Float ] {
153+ public func <-- ( inout array: [ Float ] , value: AnyObject ? ) -> [ Float ] {
155154 var newValue : [ Float ] ?
156- newValue <<<* value
155+ newValue <-- value
157156 if let newValue = newValue { array = newValue }
158157 return array
159158}
160159
161- public func <<<* ( inout array: [ Double ] ? , value: AnyObject ? ) -> [ Double ] ? {
160+ public func <-- ( inout array: [ Double ] ? , value: AnyObject ? ) -> [ Double ] ? {
162161 if let doubleArrayDoubleExcitement = value as? [ Double ] {
163162 array = doubleArrayDoubleExcitement
164163 } else {
@@ -167,14 +166,14 @@ public func <<<* (inout array: [Double]?, value: AnyObject?) -> [Double]? {
167166 return array
168167}
169168
170- public func <<<* ( inout array: [ Double ] , value: AnyObject ? ) -> [ Double ] {
169+ public func <-- ( inout array: [ Double ] , value: AnyObject ? ) -> [ Double ] {
171170 var newValue : [ Double ] ?
172- newValue <<<* value
171+ newValue <-- value
173172 if let newValue = newValue { array = newValue }
174173 return array
175174}
176175
177- public func <<<* ( inout array: [ Bool ] ? , value: AnyObject ? ) -> [ Bool ] ? {
176+ public func <-- ( inout array: [ Bool ] ? , value: AnyObject ? ) -> [ Bool ] ? {
178177 if let boolArray = value as? [ Bool ] {
179178 array = boolArray
180179 } else {
@@ -183,14 +182,14 @@ public func <<<* (inout array: [Bool]?, value: AnyObject?) -> [Bool]? {
183182 return array
184183}
185184
186- public func <<<* ( inout array: [ Bool ] , value: AnyObject ? ) -> [ Bool ] {
185+ public func <-- ( inout array: [ Bool ] , value: AnyObject ? ) -> [ Bool ] {
187186 var newValue : [ Bool ] ?
188- newValue <<<* value
187+ newValue <-- value
189188 if let newValue = newValue { array = newValue }
190189 return array
191190}
192191
193- public func <<<* ( inout array: [ NSURL ] ? , value: AnyObject ? ) -> [ NSURL ] ? {
192+ public func <-- ( inout array: [ NSURL ] ? , value: AnyObject ? ) -> [ NSURL ] ? {
194193 if let stringURLArray = value as? [ String ] {
195194 array = [ NSURL] ( )
196195 for stringURL in stringURLArray {
@@ -204,14 +203,14 @@ public func <<<* (inout array: [NSURL]?, value: AnyObject?) -> [NSURL]? {
204203 return array
205204}
206205
207- public func <<<* ( inout array: [ NSURL ] , value: AnyObject ? ) -> [ NSURL ] {
206+ public func <-- ( inout array: [ NSURL ] , value: AnyObject ? ) -> [ NSURL ] {
208207 var newValue : [ NSURL ] ?
209- newValue <<<* value
208+ newValue <-- value
210209 if let newValue = newValue { array = newValue }
211210 return array
212211}
213212
214- public func <<<* ( inout array: [ NSDate ] ? , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> [ NSDate ] ? {
213+ public func <-- ( inout array: [ NSDate ] ? , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> [ NSDate ] ? {
215214 var newValue : [ NSDate ] ?
216215 if let dateStringArray = valueAndFormat. value as? [ String ] {
217216 if let formatString = valueAndFormat. format as? String {
@@ -229,21 +228,19 @@ public func <<<* (inout array: [NSDate]?, valueAndFormat: (value: AnyObject?, fo
229228 return array
230229}
231230
232- public func <<<* ( inout array: [ NSDate ] , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> [ NSDate ] {
231+ public func <-- ( inout array: [ NSDate ] , valueAndFormat: ( value: AnyObject ? , format: AnyObject ? ) ) -> [ NSDate ] {
233232 var newValue : [ NSDate ] ?
234- newValue <<<* valueAndFormat
233+ newValue <-- valueAndFormat
235234 if let newValue = newValue { array = newValue }
236235 return array
237236}
238237
239- public func <<<* ( inout array: [ NSDate ] ? , value: AnyObject ? ) -> [ NSDate ] ? {
240-
238+ public func <-- ( inout array: [ NSDate ] ? , value: AnyObject ? ) -> [ NSDate ] ? {
241239 if let timestamps = value as? [ AnyObject ] {
242240 array = [ NSDate] ( )
243-
244241 for timestamp in timestamps {
245242 var date : NSDate ?
246- date <<< timestamp
243+ date <-- timestamp
247244 if date != nil { array!. append ( date!) }
248245 }
249246 } else {
@@ -252,22 +249,20 @@ public func <<<* (inout array: [NSDate]?, value: AnyObject?) -> [NSDate]? {
252249 return array
253250}
254251
255- public func <<<* ( inout array: [ NSDate ] , value: AnyObject ? ) -> [ NSDate ] {
252+ public func <-- ( inout array: [ NSDate ] , value: AnyObject ? ) -> [ NSDate ] {
256253 var newValue : [ NSDate ] ?
257- newValue <<<* value
254+ newValue <-- value
258255 if let newValue = newValue { array = newValue }
259256 return array
260257}
261258
262- // MARK: Operator for quick class deserialization.
263-
264- infix operator <<<< { associativity right precedence 150 }
259+ // MARK: Custom Object Deserialization
265260
266261public protocol Deserializable {
267262 init ( data: JSONDictionary )
268263}
269264
270- public func <<<< < T: Deserializable > ( inout instance: T ? , dataObject: AnyObject ? ) -> T ? {
265+ public func <-- < T: Deserializable > ( inout instance: T ? , dataObject: AnyObject ? ) -> T ? {
271266 if let data = dataObject as? JSONDictionary {
272267 instance = T ( data: data)
273268 } else {
@@ -276,18 +271,16 @@ public func <<<< <T: Deserializable>(inout instance: T?, dataObject: AnyObject?)
276271 return instance
277272}
278273
279- public func <<<< < T: Deserializable > ( inout instance: T , dataObject: AnyObject ? ) -> T {
274+ public func <-- < T: Deserializable > ( inout instance: T , dataObject: AnyObject ? ) -> T {
280275 var newInstance : T ?
281- newInstance <<<< dataObject
276+ newInstance <-- dataObject
282277 if let newInstance = newInstance { instance = newInstance }
283278 return instance
284279}
285280
286- // MARK: Operator for quick deserialization into an array of instances of a deserializable class.
287-
288- infix operator <<<<* { associativity right precedence 150 }
281+ // MARK: Custom Object Array Deserialization
289282
290- public func <<<<* < T: Deserializable > ( inout array: [ T ] ? , dataObject: AnyObject ? ) -> [ T ] ? {
283+ public func <-- < T: Deserializable > ( inout array: [ T ] ? , dataObject: AnyObject ? ) -> [ T ] ? {
291284 if let dataArray = dataObject as? [ JSONDictionary ] {
292285 array = [ T] ( )
293286 for data in dataArray {
@@ -299,33 +292,33 @@ public func <<<<* <T: Deserializable>(inout array: [T]?, dataObject: AnyObject?)
299292 return array
300293}
301294
302- public func <<<<* < T: Deserializable > ( inout array: [ T ] , dataObject: AnyObject ? ) -> [ T ] {
295+ public func <-- < T: Deserializable > ( inout array: [ T ] , dataObject: AnyObject ? ) -> [ T ] {
303296 var newArray : [ T ] ?
304- newArray <<<<* dataObject
297+ newArray <-- dataObject
305298 if let newArray = newArray { array = newArray }
306299 return array
307300}
308301
309- // MARK: Overloading of own operators for deserialization of JSON strings.
302+ // MARK: JSON String Deserialization
310303
311304private func dataStringToObject( dataString: String ) -> AnyObject ? {
312305 var data : NSData = dataString. dataUsingEncoding ( NSUTF8StringEncoding) !
313306 var error : NSError ?
314307 return NSJSONSerialization . JSONObjectWithData ( data, options: NSJSONReadingOptions ( 0 ) , error: & error)
315308}
316309
317- public func <<<< < T: Deserializable > ( inout instance: T ? , dataString: String ) -> T ? {
318- return instance <<<< dataStringToObject ( dataString)
310+ public func <-- < T: Deserializable > ( inout instance: T ? , dataString: String ) -> T ? {
311+ return instance <-- dataStringToObject ( dataString)
319312}
320313
321- public func <<<< < T: Deserializable > ( inout instance: T , dataString: String ) -> T {
322- return instance <<<< dataStringToObject ( dataString)
314+ public func <-- < T: Deserializable > ( inout instance: T , dataString: String ) -> T {
315+ return instance <-- dataStringToObject ( dataString)
323316}
324317
325- public func <<<<* < T: Deserializable > ( inout array: [ T ] ? , dataString: String ) -> [ T ] ? {
326- return array <<<<* dataStringToObject ( dataString)
318+ public func <-- < T: Deserializable > ( inout array: [ T ] ? , dataString: String ) -> [ T ] ? {
319+ return array <-- dataStringToObject ( dataString)
327320}
328321
329- public func <<<<* < T: Deserializable > ( inout array: [ T ] , dataString: String ) -> [ T ] {
330- return array <<<<* dataStringToObject ( dataString)
322+ public func <-- < T: Deserializable > ( inout array: [ T ] , dataString: String ) -> [ T ] {
323+ return array <-- dataStringToObject ( dataString)
331324}
0 commit comments