|
- public extension Bus {
- /// Пропускаем далее предоставленный ключ.
- static func convertKeyValue<T>(
- _ key: String,
- _ v: (key: String, value: Any)
- ) -> (String, T)? {
- guard
- key == v.key,
- let value = v.value as? T
- else {
- return nil
- }
- return (key, value)
- }
-
- /// Пропускаем далее предоставленные ключи.
- static func convertKeyValue<T>(
- _ keys: Set<String>,
- _ v: (key: String, value: Any)
- ) -> (String, T)? {
- guard
- keys.contains(v.key),
- let value = v.value as? T
- else {
- return nil
- }
- return (v.key, value)
- }
-
- /// Обрабатываем.
- static func processKeysValue<Src, Dst>(
- _ v: (key: String, value: Any),
- _ keysIn: Set<String>,
- _ handler: @escaping ((Src) -> Dst?)
- ) -> Dst? {
- guard
- keysIn.contains(v.key),
- let vIn = v.value as? Src
- else {
- return nil
- }
- return handler(vIn)
- }
- }
|