d
This commit is contained in:
44
Modules/BusX/Bus/src/Bus.Aux.swift
Normal file
44
Modules/BusX/Bus/src/Bus.Aux.swift
Normal 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user