CommandLineToolkit
51 строка · 1.8 Кб
1import Foundation
2
3final class NumericStorage {
4var bytes = Data()
5var parsedNumber: NSNumber?
6
7init(_ initialBytes: Data) {
8bytes = initialBytes
9}
10}
11
12enum ParsingContext: CustomStringConvertible {
13case root
14case inObject(key: String?, storage: NSMutableDictionary)
15case inArray(key: String?, storage: NSMutableArray)
16case inKey(NSMutableData)
17case inValue(key: String)
18case inStringObject(storage: NSMutableData)
19case inStringValue(key: String?, storage: NSMutableData)
20case inNullValue(key: String?)
21case inTrueValue(key: String?)
22case inFalseValue(key: String?)
23case inNumericValue(key: String?, storage: NumericStorage)
24
25var description: String {
26switch self {
27case .root:
28return "root"
29case let .inObject(key, storage):
30return "inObject for key '\(key ?? "null")': '\(storage)'"
31case let .inArray(key, storage):
32return "inArray for key '\(key ?? "null")': '\(storage)'"
33case let .inKey(key):
34return "inKey \(key)"
35case let .inValue(key):
36return "inValue for key '\(key)'"
37case let .inStringValue(key, storage):
38return "inStringValue for key '\(key ?? "null")': '\(storage)'"
39case let .inStringObject(storage):
40return "inStringObject: '\(storage)'"
41case let .inNullValue(key):
42return "inNullValue for key '\(key ?? "null")'"
43case let .inTrueValue(key):
44return "inTrueValue for key '\(key ?? "null")'"
45case let .inFalseValue(key):
46return "inFalseValue for key '\(key ?? "null")'"
47case let .inNumericValue(key, storage):
48return "inNumericValue for key '\(key ?? "null")': '\(storage)'"
49}
50}
51}
52