Files

41 lines
1.0 KiB
Swift
Raw Permalink Normal View History

import Foundation
extension Dictionary where Key == String, Value == Any {
func int(_ key: String) -> Int? {
return (self[key] as? NSNumber)?.intValue
}
func double(_ key: String) -> Double? {
return (self[key] as? NSNumber)?.doubleValue
}
func string(_ key: String) -> String? {
return self[key] as? String
}
func bool(_ key: String) -> Bool {
return (self[key] as? NSNumber)?.boolValue ?? false
}
func dict(_ key: String) -> [String: Any]? {
return self[key] as? [String: Any]
}
func ms(_ key: String) throws -> Int? {
guard let v = int(key) else {
return nil
}
if v < 0 || v > 600_000 {
throw ToolError("\(key) must be between 0 and 600000 ms")
}
return v
}
func require<T>(_ key: String, _ get: (String) -> T?) throws -> T {
guard let v = get(key) else {
throw ToolError("missing or malformed argument: \(key)")
}
return v
}
}