Skip to content

Instantly share code, notes, and snippets.

@yusuke024
Created November 8, 2017 02:51
Show Gist options
  • Save yusuke024/e6f74e38bbb03557a75f53c3cbc9e8db to your computer and use it in GitHub Desktop.
Save yusuke024/e6f74e38bbb03557a75f53c3cbc9e8db to your computer and use it in GitHub Desktop.
import RxSwift
///
/// The operators can be generated by running the below code with Swift 4
///
//
//let methodCount = 6
//
//print("""
//extension ObservableType {
// public func appendLatestFrom<SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(E, SecondO.E)> {
// return withLatestFrom(second) { ($0, $1) }
// }\n
//\((1..<methodCount).map({
// """
// public func appendLatestFrom<\((0...$0).map({ "T\($0)" }).joined(separator: ", ")), SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(\((0...$0).map({ "T\($0)" }).joined(separator: ", ")), SecondO.E)>
// where E == (\((0...$0).map({ "T\($0)" }).joined(separator: ", "))) {
// return withLatestFrom(second) { (\((0...$0).map({ "$0.\($0)" }).joined(separator: ", ")), $1) }
// }
// """
//}).joined(separator: "\n\n"))
//}
//""")
//
// swiftlint:disable large_tuple
extension ObservableType {
public func appendLatestFrom<SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(E, SecondO.E)> {
return withLatestFrom(second) { ($0, $1) }
}
public func appendLatestFrom<T0, T1, SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(T0, T1, SecondO.E)>
where E == (T0, T1) {
return withLatestFrom(second) { ($0.0, $0.1, $1) }
}
public func appendLatestFrom<T0, T1, T2, SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(T0, T1, T2, SecondO.E)>
where E == (T0, T1, T2) {
return withLatestFrom(second) { ($0.0, $0.1, $0.2, $1) }
}
public func appendLatestFrom<T0, T1, T2, T3, SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(T0, T1, T2, T3, SecondO.E)>
where E == (T0, T1, T2, T3) {
return withLatestFrom(second) { ($0.0, $0.1, $0.2, $0.3, $1) }
}
public func appendLatestFrom<T0, T1, T2, T3, T4, SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(T0, T1, T2, T3, T4, SecondO.E)>
where E == (T0, T1, T2, T3, T4) {
return withLatestFrom(second) { ($0.0, $0.1, $0.2, $0.3, $0.4, $1) }
}
public func appendLatestFrom<T0, T1, T2, T3, T4, T5, SecondO: ObservableConvertibleType>(_ second: SecondO) -> Observable<(T0, T1, T2, T3, T4, T5, SecondO.E)>
where E == (T0, T1, T2, T3, T4, T5) {
return withLatestFrom(second) { ($0.0, $0.1, $0.2, $0.3, $0.4, $0.5, $1) }
}
}
// swiftlint:enable large_tuple
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment