remove unused
This commit is contained in:
parent
72758675dc
commit
dae65285c9
@ -1,10 +0,0 @@
|
||||
import Foundation
|
||||
|
||||
public typealias JSONArray = [[String: Any]]
|
||||
public typealias JSONObject = [String: Any]
|
||||
|
||||
public enum JSONError: Error {
|
||||
case pathNotFound
|
||||
case data(path: String)
|
||||
case other(error: Error)
|
||||
}
|
||||
@ -1,122 +0,0 @@
|
||||
import Foundation
|
||||
|
||||
public typealias JSONValueArray = [[String: JSONValue]]
|
||||
public typealias JSONValueObject = [String: JSONValue]
|
||||
|
||||
public enum JSONValueError: Error {
|
||||
case encode
|
||||
}
|
||||
|
||||
extension Optional {
|
||||
func or(_ other: Optional) -> Optional {
|
||||
switch self {
|
||||
case .none: return other
|
||||
case .some: return self
|
||||
}
|
||||
}
|
||||
|
||||
func resolve(with error: @autoclosure () -> Error) throws -> Wrapped {
|
||||
switch self {
|
||||
case .none: throw error()
|
||||
case .some(let wrapped): return wrapped
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum JSONValue: Codable, Equatable {
|
||||
case string(String)
|
||||
case int(Int)
|
||||
case double(Double)
|
||||
case bool(Bool)
|
||||
case object([String: JSONValue])
|
||||
case array([JSONValue])
|
||||
case null
|
||||
public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.singleValueContainer()
|
||||
let value = ((try? container.decode(String.self)).map(JSONValue.string))
|
||||
.or((try? container.decode(Int.self)).map(JSONValue.int))
|
||||
.or((try? container.decode(Double.self)).map(JSONValue.double))
|
||||
.or((try? container.decode(Bool.self)).map(JSONValue.bool))
|
||||
.or((try? container.decode([String: JSONValue].self)).map(JSONValue.object))
|
||||
.or((try? container.decode([JSONValue].self)).map(JSONValue.array))
|
||||
|
||||
self = value ?? JSONValue.null
|
||||
}
|
||||
|
||||
func decode<T: Decodable>() throws -> T {
|
||||
let encoded = try JSONEncoder().encode(self)
|
||||
return try JSONDecoder().decode(T.self, from: encoded)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.singleValueContainer()
|
||||
switch self {
|
||||
case .string(let string): try container.encode(string)
|
||||
case .int(let int): try container.encode(int)
|
||||
case .double(let double): try container.encode(double)
|
||||
case .bool(let bool): try container.encode(bool)
|
||||
case .object(let object): try container.encode(object)
|
||||
case .array(let array): try container.encode(array)
|
||||
case .null: break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func ==(lhs: JSONValue, rhs: JSONValue) -> Bool {
|
||||
let ld = try? lhs.encode()
|
||||
let rd = try? lhs.encode()
|
||||
return ld == rd
|
||||
}
|
||||
|
||||
extension JSONValue: ExpressibleByStringLiteral {
|
||||
public init(stringLiteral value: String) {
|
||||
self = .string(value)
|
||||
}
|
||||
}
|
||||
|
||||
extension JSONValue: ExpressibleByIntegerLiteral {
|
||||
public init(integerLiteral value: Int) {
|
||||
self = .int(value)
|
||||
}
|
||||
}
|
||||
|
||||
extension JSONValue: ExpressibleByFloatLiteral {
|
||||
public init(floatLiteral value: Double) {
|
||||
self = .double(value)
|
||||
}
|
||||
}
|
||||
|
||||
extension JSONValue: ExpressibleByBooleanLiteral {
|
||||
public init(booleanLiteral value: Bool) {
|
||||
self = .bool(value)
|
||||
}
|
||||
}
|
||||
|
||||
extension JSONValue: ExpressibleByArrayLiteral {
|
||||
public init(arrayLiteral elements: JSONValue...) {
|
||||
self = .array(elements)
|
||||
}
|
||||
}
|
||||
|
||||
extension JSONValue: ExpressibleByDictionaryLiteral {
|
||||
public init(dictionaryLiteral elements: (String, JSONValue)...) {
|
||||
self = .object([String: JSONValue](uniqueKeysWithValues: elements))
|
||||
}
|
||||
}
|
||||
|
||||
extension Dictionary where Key == String, Value == Any {
|
||||
public func toJSONValue() throws -> [String: JSONValue] {
|
||||
let data = try JSONSerialization.data(withJSONObject: self, options: .prettyPrinted)
|
||||
return try JSONDecoder().decode([String:JSONValue].self, from: data)
|
||||
}
|
||||
}
|
||||
|
||||
extension Dictionary where Key == String, Value == JSONValue {
|
||||
public func toJSONObject() throws -> JSONObject {
|
||||
let encoded = try JSONEncoder().encode(self)
|
||||
guard let json = try JSONSerialization.jsonObject(with: encoded, options: .mutableContainers) as? JSONObject else {
|
||||
throw JSONValueError.encode
|
||||
}
|
||||
return json
|
||||
}
|
||||
}
|
||||
@ -11,7 +11,7 @@ import Foundation
|
||||
@objcMembers public class ActionModel: Codable {
|
||||
public var actionType: String?
|
||||
|
||||
public init(actionType: String?, pageType: String?) {
|
||||
public init(actionType: String?) {
|
||||
self.actionType = actionType
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user