0001    //
0002    //  JsonSerializer.swift
0003    //  JsonSerializer
0004    //
0005    //  Created by Fuji Goro on 2014/09/18.
0006    //  Copyright (c) 2014年 Fuji Goro. All rights reserved.
0007    //
0008    
0009    public protocol JsonSerializer
Json.swift:84
        private var serializer: JsonSerializer.Type {
Json.swift:198
    public func serialize(serializer: JsonSerializer) -> String {
JsonSerializer.swift:14
internal class DefaultJsonSerializer: JsonSerializer {
{ 0010 init
Json.swift:95
        return style.serializer.init().serialize(self)
() 0011 func serialize
Json.swift:95
        return style.serializer.init().serialize(self)
Json.swift:199
        return serializer.serialize(self)
(_: Json) -> String 0012 } 0013 0014 internal class DefaultJsonSerializer
Json.swift:87
                return DefaultJsonSerializer.self
Json.swift:189
        return serialize(DefaultJsonSerializer())
JsonSerializer.swift:65
internal class PrettyJsonSerializer: DefaultJsonSerializer {
: JsonSerializer { 0015 0016 required init
Json.swift:189
        return serialize(DefaultJsonSerializer())
JsonSerializer.swift:69
        super.init()
() {} 0017 0018 internal func serialize(json: Json) -> String { 0019 switch json { 0020 case .NullValue: 0021 return "null" 0022 case .BooleanValue(let b): 0023 return b ? "true" : "false" 0024 case .NumberValue(let n): 0025 return serializeNumber(n) 0026 case .StringValue(let s): 0027 return escapeAsJsonString(s) 0028 case .ArrayValue(let a): 0029 return serializeArray(a) 0030 case .ObjectValue(let o): 0031 return serializeObject(o) 0032 } 0033 } 0034 0035 func serializeNumber
JsonSerializer.swift:25
            return serializeNumber(n)
(n: Double) -> String { 0036 if n == Double(Int64(n)) { 0037 return Int64(n).description 0038 } else { 0039 return n.description 0040 } 0041 } 0042 0043 func serializeArray
JsonSerializer.swift:29
            return serializeArray(a)
(array: [Json]) -> String { 0044 var string = "[" 0045 string += array 0046 .map { $0.serialize(self) } 0047 .joinWithSeparator(",") 0048 return string + "]" 0049 } 0050 0051 func serializeObject
JsonSerializer.swift:31
            return serializeObject(o)
(object: [String : Json]) -> String { 0052 var string = "{" 0053 string += object 0054 .map { key, val in 0055 let escapedKey = escapeAsJsonString(key) 0056 let serializedVal = val.serialize(self) 0057 return "\(escapedKey):\(serializedVal)" 0058 } 0059 .joinWithSeparator(",") 0060 return string + "}" 0061 } 0062 0063 } 0064 0065 internal class PrettyJsonSerializer
Json.swift:89
                return PrettyJsonSerializer.self
Json.swift:193
        return serialize(PrettyJsonSerializer())
: DefaultJsonSerializer { 0066 private var indentLevel
JsonSerializer.swift:73
        indentLevel += 1
JsonSerializer.swift:75
            indentLevel -= 1
JsonSerializer.swift:91
        indentLevel += 1
JsonSerializer.swift:93
            indentLevel -= 1
JsonSerializer.swift:113
        return Array(1...indentLevel)
= 0 0067 0068 required init
Json.swift:193
        return serialize(PrettyJsonSerializer())
() { 0069 super.init() 0070 } 0071 0072 override internal func serializeArray(array: [Json]) -> String { 0073 indentLevel += 1 0074 defer { 0075 indentLevel -= 1 0076 } 0077 0078 let indentString = indent() 0079 0080 var string = "[\n" 0081 string += array 0082 .map { val in 0083 let serialized = val.serialize(self) 0084 return indentString + serialized 0085 } 0086 .joinWithSeparator(",\n") 0087 return string + " ]" 0088 } 0089 0090 override internal func serializeObject(object: [String : Json]) -> String { 0091 indentLevel += 1 0092 defer { 0093 indentLevel -= 1 0094 } 0095 0096 let indentString = indent() 0097 0098 var string = "{\n" 0099 string += object 0100 .map { key, val in 0101 let escapedKey = escapeAsJsonString(key) 0102 let serializedValue = val.serialize(self) 0103 let serializedLine = "\(escapedKey): \(serializedValue)" 0104 return indentString + serializedLine 0105 } 0106 .joinWithSeparator(",\n") 0107 string += " }" 0108 0109 return string 0110 } 0111 0112 func indent
JsonSerializer.swift:78
        let indentString = indent()
JsonSerializer.swift:96
        let indentString = indent()
() -> String { 0113 return Array(1...indentLevel) 0114 .map { _ in " " } 0115 .joinWithSeparator("") 0116 } 0117 } 0118