This commit is contained in:
Михаил Капелько
2023-12-30 10:13:52 +03:00
parent 47f8109c0b
commit 8bf84d9449
18 changed files with 22 additions and 82 deletions

View File

@@ -0,0 +1,44 @@
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)
}
}