Swiftgram/SwiftSignalKit/Signal_Mapping.swift
2015-06-10 12:53:19 +03:00

28 lines
763 B
Swift

import Foundation
public func map<T, E, R>(f: T -> R)(signal: Signal<T, E>) -> Signal<R, E> {
return Signal<R, E> { subscriber in
return signal.start(next: { next in
subscriber.putNext(f(next))
}, error: { error in
subscriber.putError(error)
}, completed: {
subscriber.putCompletion()
})
}
}
public func filter<T, E>(f: T -> Bool)(signal: Signal<T, E>) -> Signal<T, E> {
return Signal<T, E> { subscriber in
return signal.start(next: { next in
if f(next) {
subscriber.putNext(next)
}
}, error: { error in
subscriber.putError(error)
}, completed: {
subscriber.putCompletion()
})
}
}