Skip to content

Instantly share code, notes, and snippets.

@sgtsquiggs
Created August 1, 2018 20:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sgtsquiggs/4cba5da01e06db24ee204923a673c531 to your computer and use it in GitHub Desktop.
Save sgtsquiggs/4cba5da01e06db24ee204923a673c531 to your computer and use it in GitHub Desktop.
import RxSwift
extension PrimitiveSequence where TraitType == SingleTrait {
public func asMaybe() -> PrimitiveSequence<MaybeTrait, Element> {
return self.asObservable().asMaybe()
}
public func asCompletable() -> PrimitiveSequence<CompletableTrait, Never> {
return self.asObservable().flatMap { _ in Observable<Never>.empty() }.asCompletable()
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Observable<R>) -> Observable<R> {
return self.asObservable().flatMap(selector)
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Maybe<R>) -> Maybe<R> {
return self.asObservable().flatMap(selector).asMaybe()
}
public func flatMap(_ selector: @escaping (Element) throws -> Completable) -> Completable {
return self.asObservable().flatMap(selector).asCompletable()
}
}
extension PrimitiveSequence where TraitType == MaybeTrait {
public func asSingle() -> PrimitiveSequence<SingleTrait, Element> {
return self.asObservable().asSingle()
}
public func asCompletable() -> PrimitiveSequence<CompletableTrait, Never> {
return self.asObservable().flatMap { _ in Observable<Never>.empty() }.asCompletable()
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Observable<R>) -> Observable<R> {
return self.asObservable().flatMap(selector)
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Single<R>) -> Single<R> {
return self.asObservable().flatMap(selector).asSingle()
}
public func flatMap(_ selector: @escaping (Element) throws -> Completable) -> Completable {
return self.asObservable().flatMap(selector).asCompletable()
}
}
extension PrimitiveSequence where TraitType == CompletableTrait, ElementType == Swift.Never {
public func asSingle() -> PrimitiveSequence<SingleTrait, Element> {
return self.asObservable().asSingle()
}
public func asMaybe() -> PrimitiveSequence<MaybeTrait, Element> {
return self.asObservable().asMaybe()
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Observable<R>) -> Observable<R> {
return self.asObservable().flatMap(selector)
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Maybe<R>) -> Maybe<R> {
return self.asObservable().flatMap(selector).asMaybe()
}
public func flatMap<R>(_ selector: @escaping (Element) throws -> Single<R>) -> Single<R> {
return self.asObservable().flatMap(selector).asSingle()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment