From eba73eec264b68112e5f9fc946c52d43e45845dc Mon Sep 17 00:00:00 2001 From: Krunoslav Zaher Date: Wed, 14 Oct 2015 15:43:25 +0200 Subject: [PATCH] Adds `Zip` and `CombineLatest` to `Driver` unit. --- Rx.xcodeproj/project.pbxproj | 140 +++++---- .../{ => Driver}/ControlEvent+Driver.swift | 0 .../{ => Driver}/ControlProperty+Driver.swift | 0 .../Driver/Driver+Operators+arity.swift | 281 ++++++++++++++++++ .../Driver/Driver+Operators+arity.tt | 52 ++++ .../{ => Driver}/Driver+Operators.swift | 28 ++ .../{ => Driver}/Driver+Subscription.swift | 0 .../CocoaUnits/{ => Driver}/Driver.swift | 18 +- .../ObservableConvertibleType+Driver.swift | 0 RxExample/RxExample.xcodeproj/project.pbxproj | 64 ++-- .../Implementations/CombineLatest+arity.swift | 14 +- .../Implementations/CombineLatest+arity.tt | 2 +- .../Implementations/Zip+CollectionType.swift | 7 +- .../Implementations/Zip+arity.swift | 14 +- .../Observables/Implementations/Zip+arity.tt | 2 +- RxSwift/Observables/Observable+Multiple.swift | 2 +- RxTests/RxSwiftTests/Tests/VariableTest.swift | 2 +- 17 files changed, 514 insertions(+), 112 deletions(-) rename RxCocoa/Common/CocoaUnits/{ => Driver}/ControlEvent+Driver.swift (100%) rename RxCocoa/Common/CocoaUnits/{ => Driver}/ControlProperty+Driver.swift (100%) create mode 100644 RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.swift create mode 100644 RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.tt rename RxCocoa/Common/CocoaUnits/{ => Driver}/Driver+Operators.swift (89%) rename RxCocoa/Common/CocoaUnits/{ => Driver}/Driver+Subscription.swift (100%) rename RxCocoa/Common/CocoaUnits/{ => Driver}/Driver.swift (91%) rename RxCocoa/Common/CocoaUnits/{ => Driver}/ObservableConvertibleType+Driver.swift (100%) diff --git a/Rx.xcodeproj/project.pbxproj b/Rx.xcodeproj/project.pbxproj index fe9c2125..65e285d5 100644 --- a/Rx.xcodeproj/project.pbxproj +++ b/Rx.xcodeproj/project.pbxproj @@ -256,20 +256,36 @@ C80D339B1B922FB00014629D /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D33941B922FB00014629D /* ControlProperty.swift */; }; C80D342E1B9245A40014629D /* CombineLatest+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D342D1B9245A40014629D /* CombineLatest+CollectionType.swift */; }; C80D342F1B9245A40014629D /* CombineLatest+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D342D1B9245A40014629D /* CombineLatest+CollectionType.swift */; }; + C80DDE931BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8D1BCE69BA006A1832 /* ControlEvent+Driver.swift */; }; + C80DDE941BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8D1BCE69BA006A1832 /* ControlEvent+Driver.swift */; }; + C80DDE951BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8D1BCE69BA006A1832 /* ControlEvent+Driver.swift */; }; + C80DDE961BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8D1BCE69BA006A1832 /* ControlEvent+Driver.swift */; }; + C80DDE971BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8E1BCE69BA006A1832 /* ControlProperty+Driver.swift */; }; + C80DDE981BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8E1BCE69BA006A1832 /* ControlProperty+Driver.swift */; }; + C80DDE991BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8E1BCE69BA006A1832 /* ControlProperty+Driver.swift */; }; + C80DDE9A1BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8E1BCE69BA006A1832 /* ControlProperty+Driver.swift */; }; + C80DDE9B1BCE69BA006A1832 /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8F1BCE69BA006A1832 /* Driver+Operators.swift */; }; + C80DDE9C1BCE69BA006A1832 /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8F1BCE69BA006A1832 /* Driver+Operators.swift */; }; + C80DDE9D1BCE69BA006A1832 /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8F1BCE69BA006A1832 /* Driver+Operators.swift */; }; + C80DDE9E1BCE69BA006A1832 /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE8F1BCE69BA006A1832 /* Driver+Operators.swift */; }; + C80DDE9F1BCE69BA006A1832 /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE901BCE69BA006A1832 /* Driver+Subscription.swift */; }; + C80DDEA01BCE69BA006A1832 /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE901BCE69BA006A1832 /* Driver+Subscription.swift */; }; + C80DDEA11BCE69BA006A1832 /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE901BCE69BA006A1832 /* Driver+Subscription.swift */; }; + C80DDEA21BCE69BA006A1832 /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE901BCE69BA006A1832 /* Driver+Subscription.swift */; }; + C80DDEA31BCE69BA006A1832 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE911BCE69BA006A1832 /* Driver.swift */; }; + C80DDEA41BCE69BA006A1832 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE911BCE69BA006A1832 /* Driver.swift */; }; + C80DDEA51BCE69BA006A1832 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE911BCE69BA006A1832 /* Driver.swift */; }; + C80DDEA61BCE69BA006A1832 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE911BCE69BA006A1832 /* Driver.swift */; }; + C80DDEA71BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE921BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift */; }; + C80DDEA81BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE921BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift */; }; + C80DDEA91BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE921BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift */; }; + C80DDEAA1BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE921BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift */; }; + C80DDEB11BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEB01BCE8CA3006A1832 /* Driver+Operators+arity.swift */; }; + C80DDEB21BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEB01BCE8CA3006A1832 /* Driver+Operators+arity.swift */; }; + C80DDEB31BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEB01BCE8CA3006A1832 /* Driver+Operators+arity.swift */; }; + C80DDEB41BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEB01BCE8CA3006A1832 /* Driver+Operators+arity.swift */; }; C821DBA21BA4DCAB008F3809 /* Buffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C821DBA11BA4DCAB008F3809 /* Buffer.swift */; }; C821DBA31BA4DCAB008F3809 /* Buffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C821DBA11BA4DCAB008F3809 /* Buffer.swift */; }; - C8226BC41BADDF2800D7F20C /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC11BADDD3600D7F20C /* Driver+Subscription.swift */; }; - C8226BC51BADDF2800D7F20C /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC11BADDD3600D7F20C /* Driver+Subscription.swift */; }; - C8226BC71BADE87100D7F20C /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC61BADE87100D7F20C /* ControlProperty+Driver.swift */; }; - C8226BC81BADE87100D7F20C /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC61BADE87100D7F20C /* ControlProperty+Driver.swift */; }; - C8226BCA1BADE87D00D7F20C /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC91BADE87D00D7F20C /* ControlEvent+Driver.swift */; }; - C8226BCB1BADE87D00D7F20C /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC91BADE87D00D7F20C /* ControlEvent+Driver.swift */; }; - C8226BCD1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCC1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift */; }; - C8226BCE1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCC1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift */; }; - C8226BD01BADEBDF00D7F20C /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCF1BADEBDF00D7F20C /* Driver+Operators.swift */; }; - C8226BD11BADEBDF00D7F20C /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCF1BADEBDF00D7F20C /* Driver+Operators.swift */; }; - C836E8E71BA2165500AFEF77 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836E8E51BA2165500AFEF77 /* Driver.swift */; }; - C836E8E81BA2165500AFEF77 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836E8E51BA2165500AFEF77 /* Driver.swift */; }; C849BE2B1BAB5D070019AD27 /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */; }; C849BE2C1BAB5D070019AD27 /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */; }; C84B38E91BA43380001B7D88 /* ScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84B38E71BA43380001B7D88 /* ScheduledItem.swift */; }; @@ -312,18 +328,6 @@ C88254341B8A752B00B02D69 /* UITableView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254121B8A752B00B02D69 /* UITableView+Rx.swift */; }; C88254351B8A752B00B02D69 /* UITextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254131B8A752B00B02D69 /* UITextField+Rx.swift */; }; C88254361B8A752B00B02D69 /* UITextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254141B8A752B00B02D69 /* UITextView+Rx.swift */; }; - C8945FDF1BC6C09D0055219D /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836E8E51BA2165500AFEF77 /* Driver.swift */; }; - C8945FE01BC6C09D0055219D /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCF1BADEBDF00D7F20C /* Driver+Operators.swift */; }; - C8945FE11BC6C09D0055219D /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC11BADDD3600D7F20C /* Driver+Subscription.swift */; }; - C8945FE21BC6C09D0055219D /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC61BADE87100D7F20C /* ControlProperty+Driver.swift */; }; - C8945FE31BC6C09D0055219D /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC91BADE87D00D7F20C /* ControlEvent+Driver.swift */; }; - C8945FE41BC6C09D0055219D /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCC1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift */; }; - C8945FE51BC6C09D0055219D /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836E8E51BA2165500AFEF77 /* Driver.swift */; }; - C8945FE61BC6C09D0055219D /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCF1BADEBDF00D7F20C /* Driver+Operators.swift */; }; - C8945FE71BC6C09D0055219D /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC11BADDD3600D7F20C /* Driver+Subscription.swift */; }; - C8945FE81BC6C09D0055219D /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC61BADE87100D7F20C /* ControlProperty+Driver.swift */; }; - C8945FE91BC6C09D0055219D /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BC91BADE87D00D7F20C /* ControlEvent+Driver.swift */; }; - C8945FEA1BC6C09D0055219D /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8226BCC1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift */; }; C89461751BC6C1210055219D /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */; }; C89461761BC6C1220055219D /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */; }; C89CDB361BCB0DD7002063D9 /* ShareReplay1.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CDB351BCB0DD7002063D9 /* ShareReplay1.swift */; }; @@ -887,13 +891,15 @@ C80D33931B922FB00014629D /* ControlEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEvent.swift; sourceTree = ""; }; C80D33941B922FB00014629D /* ControlProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlProperty.swift; sourceTree = ""; }; C80D342D1B9245A40014629D /* CombineLatest+CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+CollectionType.swift"; sourceTree = ""; }; + C80DDE8D1BCE69BA006A1832 /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlEvent+Driver.swift"; sourceTree = ""; }; + C80DDE8E1BCE69BA006A1832 /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlProperty+Driver.swift"; sourceTree = ""; }; + C80DDE8F1BCE69BA006A1832 /* Driver+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Operators.swift"; sourceTree = ""; }; + C80DDE901BCE69BA006A1832 /* Driver+Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Subscription.swift"; sourceTree = ""; }; + C80DDE911BCE69BA006A1832 /* Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = ""; }; + C80DDE921BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableConvertibleType+Driver.swift"; sourceTree = ""; }; + C80DDEAB1BCE83B2006A1832 /* Driver+Operators+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Driver+Operators+arity.tt"; sourceTree = ""; }; + C80DDEB01BCE8CA3006A1832 /* Driver+Operators+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Operators+arity.swift"; sourceTree = ""; }; C821DBA11BA4DCAB008F3809 /* Buffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Buffer.swift; sourceTree = ""; }; - C8226BC11BADDD3600D7F20C /* Driver+Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Subscription.swift"; sourceTree = ""; }; - C8226BC61BADE87100D7F20C /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlProperty+Driver.swift"; sourceTree = ""; }; - C8226BC91BADE87D00D7F20C /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlEvent+Driver.swift"; sourceTree = ""; }; - C8226BCC1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableConvertibleType+Driver.swift"; sourceTree = ""; }; - C8226BCF1BADEBDF00D7F20C /* Driver+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Operators.swift"; sourceTree = ""; }; - C836E8E51BA2165500AFEF77 /* Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = ""; }; C849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableConvertibleType.swift; sourceTree = ""; }; C84B38E71BA43380001B7D88 /* ScheduledItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledItem.swift; sourceTree = ""; }; C84B38ED1BA433CD001B7D88 /* Generate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Generate.swift; sourceTree = ""; }; @@ -1318,18 +1324,28 @@ C80D33911B922FB00014629D /* CocoaUnits */ = { isa = PBXGroup; children = ( - C836E8E51BA2165500AFEF77 /* Driver.swift */, - C8226BCF1BADEBDF00D7F20C /* Driver+Operators.swift */, - C8226BC11BADDD3600D7F20C /* Driver+Subscription.swift */, - C8226BC61BADE87100D7F20C /* ControlProperty+Driver.swift */, - C8226BC91BADE87D00D7F20C /* ControlEvent+Driver.swift */, - C8226BCC1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift */, + C80DDE8C1BCE69BA006A1832 /* Driver */, C80D33931B922FB00014629D /* ControlEvent.swift */, C80D33941B922FB00014629D /* ControlProperty.swift */, ); path = CocoaUnits; sourceTree = ""; }; + C80DDE8C1BCE69BA006A1832 /* Driver */ = { + isa = PBXGroup; + children = ( + C80DDEB01BCE8CA3006A1832 /* Driver+Operators+arity.swift */, + C80DDE8D1BCE69BA006A1832 /* ControlEvent+Driver.swift */, + C80DDE8E1BCE69BA006A1832 /* ControlProperty+Driver.swift */, + C80DDE911BCE69BA006A1832 /* Driver.swift */, + C80DDE8F1BCE69BA006A1832 /* Driver+Operators.swift */, + C80DDEAB1BCE83B2006A1832 /* Driver+Operators+arity.tt */, + C80DDE901BCE69BA006A1832 /* Driver+Subscription.swift */, + C80DDE921BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift */, + ); + path = Driver; + sourceTree = ""; + }; C88253EE1B8A752B00B02D69 /* iOS */ = { isa = PBXGroup; children = ( @@ -1912,11 +1928,14 @@ C88254321B8A752B00B02D69 /* UISlider+Rx.swift in Sources */, C8093ED91B8A732E0088E94D /* _RXKVOObserver.m in Sources */, C882542F1B8A752B00B02D69 /* UIScrollView+Rx.swift in Sources */, + C80DDE9B1BCE69BA006A1832 /* Driver+Operators.swift in Sources */, C8093EE31B8A732E0088E94D /* DelegateProxyType.swift in Sources */, C8093EFD1B8A732E0088E94D /* RxTarget.swift in Sources */, C88254361B8A752B00B02D69 /* UITextView+Rx.swift in Sources */, C88254171B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift in Sources */, C882541E1B8A752B00B02D69 /* RxCollectionViewDataSourceProxy.swift in Sources */, + C80DDE971BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */, + C80DDE931BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */, C8093ED11B8A732E0088E94D /* _RX.m in Sources */, C8093EFB1B8A732E0088E94D /* RxCocoa.swift in Sources */, C88254231B8A752B00B02D69 /* RxTableViewDelegateProxy.swift in Sources */, @@ -1934,14 +1953,15 @@ C882542E1B8A752B00B02D69 /* UILabel+Rx.swift in Sources */, C88254211B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift in Sources */, C882541D1B8A752B00B02D69 /* RxAlertViewDelegateProxy.swift in Sources */, + C80DDEA71BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */, + C80DDE9F1BCE69BA006A1832 /* Driver+Subscription.swift in Sources */, C80D338F1B91EF9E0014629D /* Observable+Bind.swift in Sources */, C88254311B8A752B00B02D69 /* UISegmentedControl+Rx.swift in Sources */, - C8226BD01BADEBDF00D7F20C /* Driver+Operators.swift in Sources */, - C8226BC41BADDF2800D7F20C /* Driver+Subscription.swift in Sources */, C8093EED1B8A732E0088E94D /* KVOObservable.swift in Sources */, + C80DDEB11BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */, C88254281B8A752B00B02D69 /* UIButton+Rx.swift in Sources */, C8093EDF1B8A732E0088E94D /* CLLocationManager+Rx.swift in Sources */, - C8226BC71BADE87100D7F20C /* ControlProperty+Driver.swift in Sources */, + C80DDEA31BCE69BA006A1832 /* Driver.swift in Sources */, C8093EEB1B8A732E0088E94D /* DeinitAction.swift in Sources */, C882541C1B8A752B00B02D69 /* RxActionSheetDelegateProxy.swift in Sources */, C8093ED51B8A732E0088E94D /* _RXDelegateProxy.m in Sources */, @@ -1951,13 +1971,11 @@ C88254251B8A752B00B02D69 /* UIActionSheet+Rx.swift in Sources */, C80D339A1B922FB00014629D /* ControlProperty.swift in Sources */, C882542B1B8A752B00B02D69 /* UIDatePicker+Rx.swift in Sources */, - C8226BCD1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift in Sources */, C88254221B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift in Sources */, C8093EDD1B8A732E0088E94D /* _RXSwizzling.m in Sources */, C8093EE91B8A732E0088E94D /* Deallocating.swift in Sources */, C882542C1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift in Sources */, C8093EE11B8A732E0088E94D /* DelegateProxy.swift in Sources */, - C8226BCA1BADE87D00D7F20C /* ControlEvent+Driver.swift in Sources */, C8093EF91B8A732E0088E94D /* RxCLLocationManagerDelegateProxy.swift in Sources */, C88254331B8A752B00B02D69 /* UISwitch+Rx.swift in Sources */, C8093EE51B8A732E0088E94D /* Logging.swift in Sources */, @@ -1965,7 +1983,6 @@ C882541A1B8A752B00B02D69 /* RxCollectionViewDataSourceType.swift in Sources */, C8093EF11B8A732E0088E94D /* NSNotificationCenter+Rx.swift in Sources */, C88254351B8A752B00B02D69 /* UITextField+Rx.swift in Sources */, - C836E8E71BA2165500AFEF77 /* Driver.swift in Sources */, C8093EF71B8A732E0088E94D /* NSURLSession+Rx.swift in Sources */, C8093EE71B8A732E0088E94D /* ControlTarget.swift in Sources */, C88254301B8A752B00B02D69 /* UISearchBar+Rx.swift in Sources */, @@ -1978,6 +1995,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C80DDEA41BCE69BA006A1832 /* Driver.swift in Sources */, C8093F4A1B8A732E0088E94D /* NSImageView+Rx.swift in Sources */, C8093EDA1B8A732E0088E94D /* _RXKVOObserver.m in Sources */, C8093EE41B8A732E0088E94D /* DelegateProxyType.swift in Sources */, @@ -1987,28 +2005,28 @@ C8093ED21B8A732E0088E94D /* _RX.m in Sources */, C8093EFC1B8A732E0088E94D /* RxCocoa.swift in Sources */, C80D33991B922FB00014629D /* ControlEvent.swift in Sources */, + C80DDEA81BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */, C80D339B1B922FB00014629D /* ControlProperty.swift in Sources */, - C8226BCE1BADE8D600D7F20C /* ObservableConvertibleType+Driver.swift in Sources */, C8093EF41B8A732E0088E94D /* NSObject+Rx+CoreGraphics.swift in Sources */, - C836E8E81BA2165500AFEF77 /* Driver.swift in Sources */, C8093EF01B8A732E0088E94D /* KVOObserver.swift in Sources */, C8093EEE1B8A732E0088E94D /* KVOObservable.swift in Sources */, C8093EE01B8A732E0088E94D /* CLLocationManager+Rx.swift in Sources */, C8093EEC1B8A732E0088E94D /* DeinitAction.swift in Sources */, - C8226BD11BADEBDF00D7F20C /* Driver+Operators.swift in Sources */, - C8226BC51BADDF2800D7F20C /* Driver+Subscription.swift in Sources */, C8093F461B8A732E0088E94D /* NSButton+Rx.swift in Sources */, + C80DDEA01BCE69BA006A1832 /* Driver+Subscription.swift in Sources */, C8093ED61B8A732E0088E94D /* _RXDelegateProxy.m in Sources */, C8093EF61B8A732E0088E94D /* NSObject+Rx.swift in Sources */, - C8226BC81BADE87100D7F20C /* ControlProperty+Driver.swift in Sources */, + C80DDE981BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */, C8093EDE1B8A732E0088E94D /* _RXSwizzling.m in Sources */, + C80DDE941BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */, + C80DDEB21BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */, C8093EEA1B8A732E0088E94D /* Deallocating.swift in Sources */, C8093EE21B8A732E0088E94D /* DelegateProxy.swift in Sources */, C8093EFA1B8A732E0088E94D /* RxCLLocationManagerDelegateProxy.swift in Sources */, C8093EE61B8A732E0088E94D /* Logging.swift in Sources */, C8093EF21B8A732E0088E94D /* NSNotificationCenter+Rx.swift in Sources */, - C8226BCB1BADE87D00D7F20C /* ControlEvent+Driver.swift in Sources */, C8093EF81B8A732E0088E94D /* NSURLSession+Rx.swift in Sources */, + C80DDE9C1BCE69BA006A1832 /* Driver+Operators.swift in Sources */, C8093F4C1B8A732E0088E94D /* NSSlider+Rx.swift in Sources */, C8093EE81B8A732E0088E94D /* ControlTarget.swift in Sources */, C80D33901B91EF9E0014629D /* Observable+Bind.swift in Sources */, @@ -2386,19 +2404,20 @@ C8F0C0061BBBFBB9001B112F /* UISlider+Rx.swift in Sources */, C8F0C0071BBBFBB9001B112F /* _RXKVOObserver.m in Sources */, C8F0C0081BBBFBB9001B112F /* UIScrollView+Rx.swift in Sources */, + C80DDE9E1BCE69BA006A1832 /* Driver+Operators.swift in Sources */, C8F0C0091BBBFBB9001B112F /* DelegateProxyType.swift in Sources */, C8F0C00A1BBBFBB9001B112F /* RxTarget.swift in Sources */, C8F0C00B1BBBFBB9001B112F /* UITextView+Rx.swift in Sources */, C8F0C00C1BBBFBB9001B112F /* RxTableViewReactiveArrayDataSource.swift in Sources */, C8F0C00D1BBBFBB9001B112F /* RxCollectionViewDataSourceProxy.swift in Sources */, + C80DDE9A1BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */, + C80DDE961BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */, C8F0C00E1BBBFBB9001B112F /* _RX.m in Sources */, C8F0C00F1BBBFBB9001B112F /* RxCocoa.swift in Sources */, C8F0C0101BBBFBB9001B112F /* RxTableViewDelegateProxy.swift in Sources */, C8F0C0111BBBFBB9001B112F /* UIStepper+Rx.swift in Sources */, C8F0C0121BBBFBB9001B112F /* UIImageView+Rx.swift in Sources */, C8F0C0131BBBFBB9001B112F /* ControlEvent.swift in Sources */, - C8945FE91BC6C09D0055219D /* ControlEvent+Driver.swift in Sources */, - C8945FE71BC6C09D0055219D /* Driver+Subscription.swift in Sources */, C8F0C0141BBBFBB9001B112F /* NSObject+Rx+CoreGraphics.swift in Sources */, C8F0C0151BBBFBB9001B112F /* UIControl+Rx.swift in Sources */, C8F0C0161BBBFBB9001B112F /* UITableView+Rx.swift in Sources */, @@ -2410,12 +2429,15 @@ C8F0C01C1BBBFBB9001B112F /* UILabel+Rx.swift in Sources */, C8F0C01D1BBBFBB9001B112F /* RxSearchBarDelegateProxy.swift in Sources */, C8F0C01E1BBBFBB9001B112F /* RxAlertViewDelegateProxy.swift in Sources */, + C80DDEAA1BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */, + C80DDEA21BCE69BA006A1832 /* Driver+Subscription.swift in Sources */, C8F0C01F1BBBFBB9001B112F /* Observable+Bind.swift in Sources */, - C8945FEA1BC6C09D0055219D /* ObservableConvertibleType+Driver.swift in Sources */, C8F0C0201BBBFBB9001B112F /* UISegmentedControl+Rx.swift in Sources */, C8F0C0211BBBFBB9001B112F /* KVOObservable.swift in Sources */, + C80DDEB41BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */, C8F0C0221BBBFBB9001B112F /* UIButton+Rx.swift in Sources */, C8F0C0231BBBFBB9001B112F /* CLLocationManager+Rx.swift in Sources */, + C80DDEA61BCE69BA006A1832 /* Driver.swift in Sources */, C8F0C0241BBBFBB9001B112F /* DeinitAction.swift in Sources */, C8F0C0251BBBFBB9001B112F /* RxActionSheetDelegateProxy.swift in Sources */, C8F0C0261BBBFBB9001B112F /* _RXDelegateProxy.m in Sources */, @@ -2427,13 +2449,10 @@ C8F0C02C1BBBFBB9001B112F /* UIDatePicker+Rx.swift in Sources */, C8F0C02D1BBBFBB9001B112F /* RxTableViewDataSourceProxy.swift in Sources */, C8F0C02E1BBBFBB9001B112F /* _RXSwizzling.m in Sources */, - C8945FE61BC6C09D0055219D /* Driver+Operators.swift in Sources */, C8F0C02F1BBBFBB9001B112F /* Deallocating.swift in Sources */, C8F0C0301BBBFBB9001B112F /* UIGestureRecognizer+Rx.swift in Sources */, C8F0C0311BBBFBB9001B112F /* DelegateProxy.swift in Sources */, C8F0C0321BBBFBB9001B112F /* RxCLLocationManagerDelegateProxy.swift in Sources */, - C8945FE51BC6C09D0055219D /* Driver.swift in Sources */, - C8945FE81BC6C09D0055219D /* ControlProperty+Driver.swift in Sources */, C8F0C0331BBBFBB9001B112F /* UISwitch+Rx.swift in Sources */, C8F0C0341BBBFBB9001B112F /* Logging.swift in Sources */, C8F0C0351BBBFBB9001B112F /* UICollectionView+Rx.swift in Sources */, @@ -2463,19 +2482,20 @@ D203C4F71BB9C53100D02D00 /* RxTableViewDataSourceType.swift in Sources */, D203C5021BB9C53E00D02D00 /* UIAlertView+Rx.swift in Sources */, D203C50E1BB9C53E00D02D00 /* UISlider+Rx.swift in Sources */, + C80DDE9D1BCE69BA006A1832 /* Driver+Operators.swift in Sources */, D2138C8C1BB9BECA00339B5C /* ControlEvent.swift in Sources */, D2138C981BB9BEEE00339B5C /* RxCocoa.swift in Sources */, D2138C991BB9BEEE00339B5C /* RxTarget.swift in Sources */, D203C5081BB9C53E00D02D00 /* UIGestureRecognizer+Rx.swift in Sources */, D2138C931BB9BEDA00339B5C /* NSNotificationCenter+Rx.swift in Sources */, + C80DDE991BCE69BA006A1832 /* ControlProperty+Driver.swift in Sources */, + C80DDE951BCE69BA006A1832 /* ControlEvent+Driver.swift in Sources */, D203C4F61BB9C52E00D02D00 /* RxCollectionViewDataSourceType.swift in Sources */, D203C5131BB9C53E00D02D00 /* UITextView+Rx.swift in Sources */, D203C4F41BB9C52400D02D00 /* RxTableViewReactiveArrayDataSource.swift in Sources */, D2138C951BB9BEDA00339B5C /* NSObject+Rx.swift in Sources */, D2138C881BB9BEBE00339B5C /* DelegateProxy.swift in Sources */, D203C5101BB9C53E00D02D00 /* UISwitch+Rx.swift in Sources */, - C8945FE31BC6C09D0055219D /* ControlEvent+Driver.swift in Sources */, - C8945FE11BC6C09D0055219D /* Driver+Subscription.swift in Sources */, D203C5121BB9C53E00D02D00 /* UITextField+Rx.swift in Sources */, D203C4F91BB9C53700D02D00 /* RxAlertViewDelegateProxy.swift in Sources */, D203C4F31BB9C4CA00D02D00 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */, @@ -2487,12 +2507,15 @@ D203C4FC1BB9C53700D02D00 /* RxScrollViewDelegateProxy.swift in Sources */, D2138C8E1BB9BED600339B5C /* ControlTarget.swift in Sources */, D203C5041BB9C53E00D02D00 /* UIButton+Rx.swift in Sources */, + C80DDEA91BCE69BA006A1832 /* ObservableConvertibleType+Driver.swift in Sources */, + C80DDEA11BCE69BA006A1832 /* Driver+Subscription.swift in Sources */, D2138C891BB9BEBE00339B5C /* DelegateProxyType.swift in Sources */, - C8945FE41BC6C09D0055219D /* ObservableConvertibleType+Driver.swift in Sources */, D2138C921BB9BED600339B5C /* KVOObserver.swift in Sources */, D2138C831BB9BEBE00339B5C /* _RXKVOObserver.m in Sources */, + C80DDEB31BCE8CA3006A1832 /* Driver+Operators+arity.swift in Sources */, D203C5061BB9C53E00D02D00 /* UIControl+Rx.swift in Sources */, D203C5111BB9C53E00D02D00 /* UITableView+Rx.swift in Sources */, + C80DDEA51BCE69BA006A1832 /* Driver.swift in Sources */, D203C4F81BB9C53700D02D00 /* RxActionSheetDelegateProxy.swift in Sources */, D2138C8F1BB9BED600339B5C /* Deallocating.swift in Sources */, D2138C961BB9BEDA00339B5C /* NSURLSession+Rx.swift in Sources */, @@ -2504,13 +2527,10 @@ D2138C861BB9BEBE00339B5C /* Observable+Bind.swift in Sources */, D203C50A1BB9C53E00D02D00 /* UILabel+Rx.swift in Sources */, D2138C901BB9BED600339B5C /* DeinitAction.swift in Sources */, - C8945FE01BC6C09D0055219D /* Driver+Operators.swift in Sources */, D203C4F51BB9C52900D02D00 /* ItemEvents.swift in Sources */, D2138C911BB9BED600339B5C /* KVOObservable.swift in Sources */, D203C4FA1BB9C53700D02D00 /* RxCollectionViewDataSourceProxy.swift in Sources */, D2138C7F1BB9BEBE00339B5C /* _RX.m in Sources */, - C8945FDF1BC6C09D0055219D /* Driver.swift in Sources */, - C8945FE21BC6C09D0055219D /* ControlProperty+Driver.swift in Sources */, D203C4FE1BB9C53700D02D00 /* RxTableViewDataSourceProxy.swift in Sources */, D203C5001BB9C53700D02D00 /* RxTextViewDelegateProxy.swift in Sources */, D203C5091BB9C53E00D02D00 /* UIImageView+Rx.swift in Sources */, diff --git a/RxCocoa/Common/CocoaUnits/ControlEvent+Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/ControlEvent+Driver.swift similarity index 100% rename from RxCocoa/Common/CocoaUnits/ControlEvent+Driver.swift rename to RxCocoa/Common/CocoaUnits/Driver/ControlEvent+Driver.swift diff --git a/RxCocoa/Common/CocoaUnits/ControlProperty+Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/ControlProperty+Driver.swift similarity index 100% rename from RxCocoa/Common/CocoaUnits/ControlProperty+Driver.swift rename to RxCocoa/Common/CocoaUnits/Driver/ControlProperty+Driver.swift diff --git a/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.swift b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.swift new file mode 100644 index 00000000..9d51cd7e --- /dev/null +++ b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.swift @@ -0,0 +1,281 @@ +// This file is autogenerated. +// Take a look at `Preprocessor` target in RxSwift project +// +// Driver+Operators+arity.swift +// Rx +// +// Created by Krunoslav Zaher on 10/14/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation +#if !RX_NO_MODULE +import RxSwift +#endif + + + +// 2 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ resultSelector: (O1.E, O2.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ resultSelector: (O1.E, O2.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + + + +// 3 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ source3: O3, _ resultSelector: (O1.E, O2.E, O3.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ source3: O3, _ resultSelector: (O1.E, O2.E, O3.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + + + +// 4 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + + + +// 5 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + + + +// 6 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + + + +// 7 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + + + +// 8 + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> R) + -> Driver { + let source = zip( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(), source8.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> R) + -> Driver { + let source = combineLatest( + source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(), source8.asDriver().asObservable(), + resultSelector: resultSelector + ) + + return Driver(source) +} + diff --git a/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.tt b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.tt new file mode 100644 index 00000000..781da9cd --- /dev/null +++ b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators+arity.tt @@ -0,0 +1,52 @@ +// +// Driver+Operators+arity.swift +// Rx +// +// Created by Krunoslav Zaher on 10/14/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation +#if !RX_NO_MODULE +import RxSwift +#endif + +<% for i in 2 ... 8 { %> + +// <%= i %> + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + +- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func zip<<%= (Array(1...i).map { "O\($0): DriverConvertibleType" }).joinWithSeparator(", ") %>, R> + (<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, _ resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> R) + -> Driver { + let source = zip( + <%= (Array(1...i).map { "source\($0).asDriver().asObservable()" }).joinWithSeparator(", ") %>, + resultSelector: resultSelector + ) + + return Driver(source) +} + +/** +Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + +- parameter resultSelector: Function to invoke whenever any of the sources produces an element. +- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. +*/ +public func combineLatest<<%= (Array(1...i).map { "O\($0): DriverConvertibleType" }).joinWithSeparator(", ") %>, R> + (<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, _ resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> R) + -> Driver { + let source = combineLatest( + <%= (Array(1...i).map { "source\($0).asDriver().asObservable()" }).joinWithSeparator(", ") %>, + resultSelector: resultSelector + ) + + return Driver(source) +} + +<% } %> \ No newline at end of file diff --git a/RxCocoa/Common/CocoaUnits/Driver+Operators.swift b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift similarity index 89% rename from RxCocoa/Common/CocoaUnits/Driver+Operators.swift rename to RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift index 3b8a74ba..7d49271f 100644 --- a/RxCocoa/Common/CocoaUnits/Driver+Operators.swift +++ b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift @@ -289,4 +289,32 @@ extension Driver { .scan(seed, accumulator: accumulator) return Driver(source) } +} + +extension SequenceType where Generator.Element : DriverConvertibleType { + + /** + Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully. + + - returns: An observable sequence that contains the elements of each given sequence, in sequential order. + */ + public func concat() + -> Driver { + let source: Observable = self.lazy.map { $0.asDriver() }.concat() + return Driver(source) + } +} + +extension CollectionType where Generator.Element : DriverConvertibleType { + + /** + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources. + - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. + */ + public func zip(resultSelector: [Generator.Element.E] throws -> R) -> Driver { + let source: Observable = self.map { $0.asDriver() }.zip(resultSelector) + return Driver(source) + } } \ No newline at end of file diff --git a/RxCocoa/Common/CocoaUnits/Driver+Subscription.swift b/RxCocoa/Common/CocoaUnits/Driver/Driver+Subscription.swift similarity index 100% rename from RxCocoa/Common/CocoaUnits/Driver+Subscription.swift rename to RxCocoa/Common/CocoaUnits/Driver/Driver+Subscription.swift diff --git a/RxCocoa/Common/CocoaUnits/Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/Driver.swift similarity index 91% rename from RxCocoa/Common/CocoaUnits/Driver.swift rename to RxCocoa/Common/CocoaUnits/Driver/Driver.swift index 166a961a..165dd601 100644 --- a/RxCocoa/Common/CocoaUnits/Driver.swift +++ b/RxCocoa/Common/CocoaUnits/Driver/Driver.swift @@ -46,6 +46,10 @@ public struct Driver : DriverConvertibleType { init(_ source: Observable) { self._source = source.shareReplay(1) } + + init(raw: Observable) { + self._source = raw + } #if EXPANDABLE_DRIVER public static func createUnsafe(source: O) -> Driver { @@ -72,7 +76,7 @@ public struct Drive { - returns: An observable sequence with no elements. */ public static func empty() -> Driver { - return Driver(RxSwift.empty()) + return Driver(raw: RxSwift.empty()) } /** @@ -81,7 +85,7 @@ public struct Drive { - returns: An observable sequence whose observers will never get called. */ public static func never() -> Driver { - return Driver(RxSwift.never()) + return Driver(raw: RxSwift.never()) } /** @@ -91,7 +95,7 @@ public struct Drive { - returns: An observable sequence containing the single specified element. */ public static func just(element: E) -> Driver { - return Driver(RxSwift.just(element)) + return Driver(raw: RxSwift.just(element)) } #else @@ -102,7 +106,7 @@ public struct Drive { - returns: An observable sequence with no elements. */ public static func empty() -> Driver { - return Driver(_empty()) + return Driver(raw: _empty()) } /** @@ -111,7 +115,7 @@ public struct Drive { - returns: An observable sequence whose observers will never get called. */ public static func never() -> Driver { - return Driver(_never()) + return Driver(raw: _never()) } /** @@ -121,14 +125,14 @@ public struct Drive { - returns: An observable sequence containing the single specified element. */ public static func just(element: E) -> Driver { - return Driver(_just(element)) + return Driver(raw: _just(element)) } #endif public static func sequenceOf(elements: E ...) -> Driver { let source = elements.asObservable() - return Driver(source) + return Driver(raw: source) } } diff --git a/RxCocoa/Common/CocoaUnits/ObservableConvertibleType+Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/ObservableConvertibleType+Driver.swift similarity index 100% rename from RxCocoa/Common/CocoaUnits/ObservableConvertibleType+Driver.swift rename to RxCocoa/Common/CocoaUnits/Driver/ObservableConvertibleType+Driver.swift diff --git a/RxExample/RxExample.xcodeproj/project.pbxproj b/RxExample/RxExample.xcodeproj/project.pbxproj index 062a608e..6b759a72 100644 --- a/RxExample/RxExample.xcodeproj/project.pbxproj +++ b/RxExample/RxExample.xcodeproj/project.pbxproj @@ -18,6 +18,14 @@ 07E300091B149A2A00F00100 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E300081B149A2A00F00100 /* User.swift */; }; 07E3C2331B03605B0010338D /* Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E3C2321B03605B0010338D /* Dependencies.swift */; }; C80DDE881BCDAA0F006A1832 /* SkipWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDE7A1BCDA952006A1832 /* SkipWhile.swift */; }; + C80DDED21BCE9046006A1832 /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC21BCE9041006A1832 /* ControlEvent+Driver.swift */; }; + C80DDED31BCE9046006A1832 /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC31BCE9041006A1832 /* ControlProperty+Driver.swift */; }; + C80DDED41BCE9046006A1832 /* Driver+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC41BCE9041006A1832 /* Driver+Operators+arity.swift */; }; + C80DDED51BCE9046006A1832 /* Driver+Operators+arity.tt in Resources */ = {isa = PBXBuildFile; fileRef = C80DDEC51BCE9041006A1832 /* Driver+Operators+arity.tt */; }; + C80DDED61BCE9046006A1832 /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC61BCE9041006A1832 /* Driver+Operators.swift */; }; + C80DDED71BCE9046006A1832 /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC71BCE9041006A1832 /* Driver+Subscription.swift */; }; + C80DDED81BCE9046006A1832 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC81BCE9041006A1832 /* Driver.swift */; }; + C80DDED91BCE9046006A1832 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80DDEC91BCE9041006A1832 /* ObservableConvertibleType+Driver.swift */; }; C8297E2F1B6CF905000589EA /* RxTableViewSectionedAnimatedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88C78631B3EB0A00061C5AB /* RxTableViewSectionedAnimatedDataSource.swift */; }; C8297E301B6CF905000589EA /* RandomUserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0706E19E1B17703E00BA2D3A /* RandomUserAPI.swift */; }; C8297E311B6CF905000589EA /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F321AE5A0CA00C31024 /* SearchResultViewModel.swift */; }; @@ -216,14 +224,8 @@ C89465631BC6C2BC0055219D /* _RXKVOObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C89465131BC6C2BC0055219D /* _RXKVOObserver.m */; }; C89465641BC6C2BC0055219D /* _RXSwizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = C89465151BC6C2BC0055219D /* _RXSwizzling.m */; }; C89465651BC6C2BC0055219D /* CLLocationManager+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89465161BC6C2BC0055219D /* CLLocationManager+Rx.swift */; }; - C89465661BC6C2BC0055219D /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89465181BC6C2BC0055219D /* ControlEvent+Driver.swift */; }; C89465671BC6C2BC0055219D /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89465191BC6C2BC0055219D /* ControlEvent.swift */; }; - C89465681BC6C2BC0055219D /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C894651A1BC6C2BC0055219D /* ControlProperty+Driver.swift */; }; C89465691BC6C2BC0055219D /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C894651B1BC6C2BC0055219D /* ControlProperty.swift */; }; - C894656A1BC6C2BC0055219D /* Driver+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C894651C1BC6C2BC0055219D /* Driver+Operators.swift */; }; - C894656B1BC6C2BC0055219D /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C894651D1BC6C2BC0055219D /* Driver+Subscription.swift */; }; - C894656C1BC6C2BC0055219D /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C894651E1BC6C2BC0055219D /* Driver.swift */; }; - C894656D1BC6C2BC0055219D /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C894651F1BC6C2BC0055219D /* ObservableConvertibleType+Driver.swift */; }; C894656E1BC6C2BC0055219D /* DelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89465201BC6C2BC0055219D /* DelegateProxy.swift */; }; C894656F1BC6C2BC0055219D /* DelegateProxyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89465211BC6C2BC0055219D /* DelegateProxyType.swift */; }; C89465701BC6C2BC0055219D /* Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89465221BC6C2BC0055219D /* Logging.swift */; }; @@ -440,6 +442,14 @@ 07E300081B149A2A00F00100 /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; 07E3C2321B03605B0010338D /* Dependencies.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Dependencies.swift; path = Examples/Dependencies.swift; sourceTree = ""; }; C80DDE7A1BCDA952006A1832 /* SkipWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipWhile.swift; sourceTree = ""; }; + C80DDEC21BCE9041006A1832 /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlEvent+Driver.swift"; sourceTree = ""; }; + C80DDEC31BCE9041006A1832 /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlProperty+Driver.swift"; sourceTree = ""; }; + C80DDEC41BCE9041006A1832 /* Driver+Operators+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Operators+arity.swift"; sourceTree = ""; }; + C80DDEC51BCE9041006A1832 /* Driver+Operators+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Driver+Operators+arity.tt"; sourceTree = ""; }; + C80DDEC61BCE9041006A1832 /* Driver+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Operators.swift"; sourceTree = ""; }; + C80DDEC71BCE9041006A1832 /* Driver+Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Subscription.swift"; sourceTree = ""; }; + C80DDEC81BCE9041006A1832 /* Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = ""; }; + C80DDEC91BCE9041006A1832 /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableConvertibleType+Driver.swift"; sourceTree = ""; }; C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Rx.xcodeproj; path = ../Rx.xcodeproj; sourceTree = ""; }; C8297E691B6CF905000589EA /* RxExample-iOS-no-module.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RxExample-iOS-no-module.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C83366DD1AD0293800C668A7 /* RxExample-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RxExample-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -589,14 +599,8 @@ C89465141BC6C2BC0055219D /* _RXSwizzling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXSwizzling.h; sourceTree = ""; }; C89465151BC6C2BC0055219D /* _RXSwizzling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXSwizzling.m; sourceTree = ""; }; C89465161BC6C2BC0055219D /* CLLocationManager+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CLLocationManager+Rx.swift"; sourceTree = ""; }; - C89465181BC6C2BC0055219D /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlEvent+Driver.swift"; sourceTree = ""; }; C89465191BC6C2BC0055219D /* ControlEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEvent.swift; sourceTree = ""; }; - C894651A1BC6C2BC0055219D /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControlProperty+Driver.swift"; sourceTree = ""; }; C894651B1BC6C2BC0055219D /* ControlProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlProperty.swift; sourceTree = ""; }; - C894651C1BC6C2BC0055219D /* Driver+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Operators.swift"; sourceTree = ""; }; - C894651D1BC6C2BC0055219D /* Driver+Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Subscription.swift"; sourceTree = ""; }; - C894651E1BC6C2BC0055219D /* Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = ""; }; - C894651F1BC6C2BC0055219D /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableConvertibleType+Driver.swift"; sourceTree = ""; }; C89465201BC6C2BC0055219D /* DelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxy.swift; sourceTree = ""; }; C89465211BC6C2BC0055219D /* DelegateProxyType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxyType.swift; sourceTree = ""; }; C89465221BC6C2BC0055219D /* Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logging.swift; sourceTree = ""; }; @@ -762,6 +766,21 @@ path = TableView; sourceTree = ""; }; + C80DDEC11BCE9041006A1832 /* Driver */ = { + isa = PBXGroup; + children = ( + C80DDEC21BCE9041006A1832 /* ControlEvent+Driver.swift */, + C80DDEC31BCE9041006A1832 /* ControlProperty+Driver.swift */, + C80DDEC41BCE9041006A1832 /* Driver+Operators+arity.swift */, + C80DDEC51BCE9041006A1832 /* Driver+Operators+arity.tt */, + C80DDEC61BCE9041006A1832 /* Driver+Operators.swift */, + C80DDEC71BCE9041006A1832 /* Driver+Subscription.swift */, + C80DDEC81BCE9041006A1832 /* Driver.swift */, + C80DDEC91BCE9041006A1832 /* ObservableConvertibleType+Driver.swift */, + ); + path = Driver; + sourceTree = ""; + }; C81B39F21BC1C28400EF5A9F /* Products */ = { isa = PBXGroup; children = ( @@ -1183,14 +1202,9 @@ C89465171BC6C2BC0055219D /* CocoaUnits */ = { isa = PBXGroup; children = ( - C89465181BC6C2BC0055219D /* ControlEvent+Driver.swift */, + C80DDEC11BCE9041006A1832 /* Driver */, C89465191BC6C2BC0055219D /* ControlEvent.swift */, - C894651A1BC6C2BC0055219D /* ControlProperty+Driver.swift */, C894651B1BC6C2BC0055219D /* ControlProperty.swift */, - C894651C1BC6C2BC0055219D /* Driver+Operators.swift */, - C894651D1BC6C2BC0055219D /* Driver+Subscription.swift */, - C894651E1BC6C2BC0055219D /* Driver.swift */, - C894651F1BC6C2BC0055219D /* ObservableConvertibleType+Driver.swift */, ); path = CocoaUnits; sourceTree = ""; @@ -1536,6 +1550,7 @@ C8297E601B6CF905000589EA /* Images.xcassets in Resources */, C8297E611B6CF905000589EA /* Main.storyboard in Resources */, C894657E1BC6C2BC0055219D /* Info.plist in Resources */, + C80DDED51BCE9046006A1832 /* Driver+Operators+arity.tt in Resources */, C89464B61BC6C2B00055219D /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1568,7 +1583,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C894656D1BC6C2BC0055219D /* ObservableConvertibleType+Driver.swift in Sources */, C89465971BC6C2BC0055219D /* UIScrollView+Rx.swift in Sources */, C8297E2F1B6CF905000589EA /* RxTableViewSectionedAnimatedDataSource.swift in Sources */, C89464FF1BC6C2B00055219D /* DispatchQueueSchedulerPriority.swift in Sources */, @@ -1600,6 +1614,8 @@ C89464ED1BC6C2B00055219D /* Observable+Concurrency.swift in Sources */, C89464DA1BC6C2B00055219D /* Repeat.swift in Sources */, C89465651BC6C2BC0055219D /* CLLocationManager+Rx.swift in Sources */, + C80DDED81BCE9046006A1832 /* Driver.swift in Sources */, + C80DDED71BCE9046006A1832 /* Driver+Subscription.swift in Sources */, 07A5C3DC1B70B703001EFE5C /* CalculatorViewController.swift in Sources */, C89465961BC6C2BC0055219D /* UILabel+Rx.swift in Sources */, C894659C1BC6C2BC0055219D /* UISwitch+Rx.swift in Sources */, @@ -1608,6 +1624,7 @@ C89465751BC6C2BC0055219D /* KVOObservable.swift in Sources */, C89464CB1BC6C2B00055219D /* FailWith.swift in Sources */, C8297E341B6CF905000589EA /* UIImageView+Extensions.swift in Sources */, + C80DDED61BCE9046006A1832 /* Driver+Operators.swift in Sources */, C89465051BC6C2B00055219D /* SerialDispatchQueueScheduler.swift in Sources */, C89464B81BC6C2B00055219D /* Observable.swift in Sources */, C89465001BC6C2B00055219D /* MainScheduler.swift in Sources */, @@ -1617,7 +1634,6 @@ C89464A71BC6C2B00055219D /* BinaryDisposable.swift in Sources */, C89465741BC6C2BC0055219D /* DeinitAction.swift in Sources */, C8297E361B6CF905000589EA /* RootViewController.swift in Sources */, - C894656C1BC6C2BC0055219D /* Driver.swift in Sources */, C89464BB1BC6C2B00055219D /* AnonymousObservable.swift in Sources */, C89465991BC6C2BC0055219D /* UISegmentedControl+Rx.swift in Sources */, C8297E371B6CF905000589EA /* RxCollectionViewSectionedDataSource.swift in Sources */, @@ -1633,7 +1649,6 @@ C89464F01BC6C2B00055219D /* Observable+Multiple.swift in Sources */, C89464DF1BC6C2B00055219D /* StartWith.swift in Sources */, C89465881BC6C2BC0055219D /* RxScrollViewDelegateProxy.swift in Sources */, - C894656B1BC6C2BC0055219D /* Driver+Subscription.swift in Sources */, C89464B71BC6C2B00055219D /* Observable+Extensions.swift in Sources */, C89464A01BC6C2B00055219D /* Lock.swift in Sources */, C89464C91BC6C2B00055219D /* Do.swift in Sources */, @@ -1649,12 +1664,14 @@ C8297E3A1B6CF905000589EA /* WikipediaSearchViewController.swift in Sources */, C89464F21BC6C2B00055219D /* Observable+StandardSequenceOperators.swift in Sources */, C89464CC1BC6C2B00055219D /* Filter.swift in Sources */, + C80DDED31BCE9046006A1832 /* ControlProperty+Driver.swift in Sources */, C89465021BC6C2B00055219D /* RecursiveScheduler.swift in Sources */, C89464C11BC6C2B00055219D /* CombineLatest+CollectionType.swift in Sources */, C89465671BC6C2BC0055219D /* ControlEvent.swift in Sources */, C8297E3B1B6CF905000589EA /* String+extensions.swift in Sources */, C89464A61BC6C2B00055219D /* AnonymousDisposable.swift in Sources */, C894657D1BC6C2BC0055219D /* RxTarget.swift in Sources */, + C80DDED21BCE9046006A1832 /* ControlEvent+Driver.swift in Sources */, C89464EE1BC6C2B00055219D /* Observable+Creation.swift in Sources */, C894659A1BC6C2BC0055219D /* UISlider+Rx.swift in Sources */, C89465891BC6C2BC0055219D /* RxSearchBarDelegateProxy.swift in Sources */, @@ -1689,6 +1706,7 @@ C89464A31BC6C2B00055219D /* InfiniteSequence.swift in Sources */, C89465041BC6C2B00055219D /* SchedulerServices+Emulation.swift in Sources */, C89465611BC6C2BC0055219D /* _RX.m in Sources */, + C80DDED41BCE9046006A1832 /* Driver+Operators+arity.swift in Sources */, C89465841BC6C2BC0055219D /* RxActionSheetDelegateProxy.swift in Sources */, C89464F51BC6C2B00055219D /* ObserverOf.swift in Sources */, C89464D71BC6C2B00055219D /* Range.swift in Sources */, @@ -1713,7 +1731,6 @@ C89CDB721BCC45EE002063D9 /* SkipUntil.swift in Sources */, C8297E471B6CF905000589EA /* ViewController.swift in Sources */, C89464E41BC6C2B00055219D /* TakeWhile.swift in Sources */, - C89465681BC6C2BC0055219D /* ControlProperty+Driver.swift in Sources */, C89464F71BC6C2B00055219D /* ObserverBase.swift in Sources */, C89465951BC6C2BC0055219D /* UIImageView+Rx.swift in Sources */, C89464E31BC6C2B00055219D /* TakeUntil.swift in Sources */, @@ -1750,6 +1767,7 @@ C8297E511B6CF905000589EA /* PartialUpdatesViewController.swift in Sources */, C894649F1BC6C2B00055219D /* AsyncLock.swift in Sources */, C8297E521B6CF905000589EA /* Dependencies.swift in Sources */, + C80DDED91BCE9046006A1832 /* ObservableConvertibleType+Driver.swift in Sources */, C89464E11BC6C2B00055219D /* Switch.swift in Sources */, C89465851BC6C2BC0055219D /* RxAlertViewDelegateProxy.swift in Sources */, C89464A11BC6C2B00055219D /* ConnectableObservableType.swift in Sources */, @@ -1763,13 +1781,11 @@ C8297E541B6CF905000589EA /* AppDelegate.swift in Sources */, C894659D1BC6C2BC0055219D /* UITableView+Rx.swift in Sources */, C894657F1BC6C2BC0055219D /* RxCollectionViewReactiveArrayDataSource.swift in Sources */, - C894656A1BC6C2BC0055219D /* Driver+Operators.swift in Sources */, C8297E551B6CF905000589EA /* RxTableViewSectionedDataSource.swift in Sources */, C8297E561B6CF905000589EA /* WikipediaPage.swift in Sources */, C8297E571B6CF905000589EA /* Randomizer.swift in Sources */, C89464C31BC6C2B00055219D /* Concat.swift in Sources */, C894657A1BC6C2BC0055219D /* NSURLSession+Rx.swift in Sources */, - C89465661BC6C2BC0055219D /* ControlEvent+Driver.swift in Sources */, C89464F41BC6C2B00055219D /* ObservableType.swift in Sources */, C89464CE1BC6C2B00055219D /* Generate.swift in Sources */, C89465711BC6C2BC0055219D /* Observable+Bind.swift in Sources */, diff --git a/RxSwift/Observables/Implementations/CombineLatest+arity.swift b/RxSwift/Observables/Implementations/CombineLatest+arity.swift index 31df249f..8f1e424b 100644 --- a/RxSwift/Observables/Implementations/CombineLatest+arity.swift +++ b/RxSwift/Observables/Implementations/CombineLatest+arity.swift @@ -21,7 +21,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ resultSelector: (O1.E, O2.E) throws -> R) + (source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> R) -> Observable { return CombineLatest2( source1: source1.asObservable(), source2: source2.asObservable(), @@ -97,7 +97,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ source3: O3, _ resultSelector: (O1.E, O2.E, O3.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, resultSelector: (O1.E, O2.E, O3.E) throws -> R) -> Observable { return CombineLatest3( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), @@ -180,7 +180,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> R) -> Observable { return CombineLatest4( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), @@ -270,7 +270,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> R) -> Observable { return CombineLatest5( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), @@ -367,7 +367,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> R) -> Observable { return CombineLatest6( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), @@ -471,7 +471,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> R) -> Observable { return CombineLatest7( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), @@ -582,7 +582,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> R) -> Observable { return CombineLatest8( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(), diff --git a/RxSwift/Observables/Implementations/CombineLatest+arity.tt b/RxSwift/Observables/Implementations/CombineLatest+arity.tt index 5eafbfd5..47706697 100644 --- a/RxSwift/Observables/Implementations/CombineLatest+arity.tt +++ b/RxSwift/Observables/Implementations/CombineLatest+arity.tt @@ -19,7 +19,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func combineLatest<<%= (Array(1...i).map { "O\($0): ObservableType" }).joinWithSeparator(", ") %>, R> - (<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, _ resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> R) + (<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> R) -> Observable { return CombineLatest<%= i %>( <%= (Array(1...i).map { "source\($0): source\($0).asObservable()" }).joinWithSeparator(", ") %>, diff --git a/RxSwift/Observables/Implementations/Zip+CollectionType.swift b/RxSwift/Observables/Implementations/Zip+CollectionType.swift index 15d4d685..b51b0044 100644 --- a/RxSwift/Observables/Implementations/Zip+CollectionType.swift +++ b/RxSwift/Observables/Implementations/Zip+CollectionType.swift @@ -8,7 +8,7 @@ import Foundation -class ZipCollectionTypeSink : Sink { +class ZipCollectionTypeSink : Sink { typealias Parent = ZipCollectionType typealias SourceElement = C.Generator.Element.E @@ -104,7 +104,8 @@ class ZipCollectionTypeSink : Producer { +class ZipCollectionType : Producer { typealias ResultSelector = [C.Generator.Element.E] throws -> R let sources: C diff --git a/RxSwift/Observables/Implementations/Zip+arity.swift b/RxSwift/Observables/Implementations/Zip+arity.swift index 1996fec5..964ce655 100644 --- a/RxSwift/Observables/Implementations/Zip+arity.swift +++ b/RxSwift/Observables/Implementations/Zip+arity.swift @@ -21,7 +21,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ resultSelector: (O1.E, O2.E) throws -> R) + (source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> R) -> Observable { return Zip2( source1: source1.asObservable(), source2: source2.asObservable(), @@ -109,7 +109,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ source3: O3, _ resultSelector: (O1.E, O2.E, O3.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, resultSelector: (O1.E, O2.E, O3.E) throws -> R) -> Observable { return Zip3( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), @@ -205,7 +205,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> R) -> Observable { return Zip4( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), @@ -309,7 +309,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> R) -> Observable { return Zip5( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), @@ -421,7 +421,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> R) -> Observable { return Zip6( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), @@ -541,7 +541,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> R) -> Observable { return Zip7( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), @@ -669,7 +669,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip - (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, _ resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> R) + (source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> R) -> Observable { return Zip8( source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(), diff --git a/RxSwift/Observables/Implementations/Zip+arity.tt b/RxSwift/Observables/Implementations/Zip+arity.tt index e544bb5a..456b3313 100644 --- a/RxSwift/Observables/Implementations/Zip+arity.tt +++ b/RxSwift/Observables/Implementations/Zip+arity.tt @@ -19,7 +19,7 @@ Merges the specified observable sequences into one observable sequence by using - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ public func zip<<%= (Array(1...i).map { "O\($0): ObservableType" }).joinWithSeparator(", ") %>, R> - (<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, _ resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> R) + (<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> R) -> Observable { return Zip<%= i %>( <%= (Array(1...i).map { "source\($0): source\($0).asObservable()" }).joinWithSeparator(", ") %>, diff --git a/RxSwift/Observables/Observable+Multiple.swift b/RxSwift/Observables/Observable+Multiple.swift index 0ed6e70a..7b8f1f48 100644 --- a/RxSwift/Observables/Observable+Multiple.swift +++ b/RxSwift/Observables/Observable+Multiple.swift @@ -25,7 +25,7 @@ extension CollectionType where Generator.Element : ObservableType { // zip -extension CollectionType where Generator.Element : ObservableType { +extension CollectionType where Generator.Element : ObservableConvertibleType { /** Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. diff --git a/RxTests/RxSwiftTests/Tests/VariableTest.swift b/RxTests/RxSwiftTests/Tests/VariableTest.swift index e65bdcc5..33add24d 100644 --- a/RxTests/RxSwiftTests/Tests/VariableTest.swift +++ b/RxTests/RxSwiftTests/Tests/VariableTest.swift @@ -15,7 +15,7 @@ class VariableTest : RxTest { let a = Variable(1) let b = Variable(2) - let c = combineLatest(a, b, +) + let c = combineLatest(a, b, resultSelector: +) var latestValue: Int?