more pattern matching

This commit is contained in:
Erik 2015-12-26 13:18:07 -05:00
parent 4e5fcff258
commit bed5ecd23b

View File

@ -239,23 +239,20 @@ extension SocketPacket {
private extension SocketPacket { private extension SocketPacket {
static func shred(data: AnyObject, inout binary: [NSData]) -> AnyObject { static func shred(data: AnyObject, inout binary: [NSData]) -> AnyObject {
if let bin = data as? NSData { let placeholder = ["_placeholder": true, "num": binary.count]
let placeholder = ["_placeholder": true, "num": binary.count]
switch data {
case let bin as NSData:
binary.append(bin) binary.append(bin)
return placeholder return placeholder
} else if let arr = data as? [AnyObject] { case let arr as [AnyObject]:
return arr.map({shred($0, binary: &binary)}) return arr.map({shred($0, binary: &binary)})
} else if let dict = data as? NSDictionary { case let dict as NSDictionary:
let mutDict = NSMutableDictionary(dictionary: dict) return dict.reduce(NSMutableDictionary(), combine: {cur, keyValue in
cur[keyValue.0 as! NSCopying] = shred(keyValue.1, binary: &binary)
for (key, value) in dict { return cur
mutDict[key as! NSCopying] = shred(value, binary: &binary) })
} default:
return mutDict
} else {
return data return data
} }
} }