initial
This commit is contained in:
69
Pods/RxSwift/RxSwift/AnyObserver.swift
generated
Normal file
69
Pods/RxSwift/RxSwift/AnyObserver.swift
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// AnyObserver.swift
|
||||
// RxSwift
|
||||
//
|
||||
// Created by Krunoslav Zaher on 2/28/15.
|
||||
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
|
||||
//
|
||||
|
||||
/// A type-erased `ObserverType`.
|
||||
///
|
||||
/// Forwards operations to an arbitrary underlying observer with the same `Element` type, hiding the specifics of the underlying observer type.
|
||||
public struct AnyObserver<Element> : ObserverType {
|
||||
/// Anonymous event handler type.
|
||||
public typealias EventHandler = (Event<Element>) -> Void
|
||||
|
||||
private let observer: EventHandler
|
||||
|
||||
/// Construct an instance whose `on(event)` calls `eventHandler(event)`
|
||||
///
|
||||
/// - parameter eventHandler: Event handler that observes sequences events.
|
||||
public init(eventHandler: @escaping EventHandler) {
|
||||
self.observer = eventHandler
|
||||
}
|
||||
|
||||
/// Construct an instance whose `on(event)` calls `observer.on(event)`
|
||||
///
|
||||
/// - parameter observer: Observer that receives sequence events.
|
||||
public init<Observer: ObserverType>(_ observer: Observer) where Observer.Element == Element {
|
||||
self.observer = observer.on
|
||||
}
|
||||
|
||||
/// Send `event` to this observer.
|
||||
///
|
||||
/// - parameter event: Event instance.
|
||||
public func on(_ event: Event<Element>) {
|
||||
self.observer(event)
|
||||
}
|
||||
|
||||
/// Erases type of observer and returns canonical observer.
|
||||
///
|
||||
/// - returns: type erased observer.
|
||||
public func asObserver() -> AnyObserver<Element> {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
extension AnyObserver {
|
||||
/// Collection of `AnyObserver`s
|
||||
typealias s = Bag<(Event<Element>) -> Void>
|
||||
}
|
||||
|
||||
extension ObserverType {
|
||||
/// Erases type of observer and returns canonical observer.
|
||||
///
|
||||
/// - returns: type erased observer.
|
||||
public func asObserver() -> AnyObserver<Element> {
|
||||
AnyObserver(self)
|
||||
}
|
||||
|
||||
/// Transforms observer of type R to type E using custom transform method.
|
||||
/// Each event sent to result observer is transformed and sent to `self`.
|
||||
///
|
||||
/// - returns: observer that transforms events.
|
||||
public func mapObserver<Result>(_ transform: @escaping (Result) throws -> Element) -> AnyObserver<Result> {
|
||||
AnyObserver { e in
|
||||
self.on(e.map(transform))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user