├── Podfile ├── Podfile.lock ├── Pods ├── Action │ ├── License.md │ ├── Readme.md │ └── Sources │ │ └── Action │ │ ├── Action+Internal.swift │ │ ├── Action.swift │ │ └── UIKitExtensions │ │ ├── AlertAction.swift │ │ ├── UIBarButtonItem+Action.swift │ │ ├── UIButton+Rx.swift │ │ └── UIControl+Rx.swift ├── Manifest.lock ├── MockUIAlertController │ ├── LICENSE.txt │ ├── README.md │ └── Source │ │ └── MockUIAlertController │ │ ├── NSObject+QCOMockAlerts.h │ │ ├── NSObject+QCOMockAlerts.m │ │ ├── QCOMockAlertVerifier.h │ │ ├── QCOMockAlertVerifier.m │ │ ├── QCOMockPopoverPresentationController.h │ │ ├── QCOMockPopoverPresentationController.m │ │ ├── UIAlertAction+QCOMock.h │ │ ├── UIAlertAction+QCOMock.m │ │ ├── UIAlertController+QCOMock.h │ │ ├── UIAlertController+QCOMock.m │ │ ├── UIViewController+QCOMock.h │ │ └── UIViewController+QCOMock.m ├── NSObject+Rx │ ├── LICENSE │ ├── NSObject+Rx.swift │ └── Readme.md ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── Adam.xcuserdatad │ │ └── xcschemes │ │ ├── Action.xcscheme │ │ ├── MockUIAlertController.xcscheme │ │ ├── NSObject+Rx.xcscheme │ │ ├── Pods-ReactiveAlertAndActionSheet.xcscheme │ │ ├── Pods-ReactiveAlertAndActionSheetTests.xcscheme │ │ ├── RxBlocking.xcscheme │ │ ├── RxCocoa.xcscheme │ │ ├── RxSwift.xcscheme │ │ ├── RxSwiftExt.xcscheme │ │ ├── RxTest.xcscheme │ │ └── xcschememanagement.plist ├── RxBlocking │ ├── LICENSE.md │ ├── Platform │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ ├── DispatchQueue+Extensions.swift │ │ ├── Platform.Darwin.swift │ │ └── Platform.Linux.swift │ ├── README.md │ └── RxBlocking │ │ ├── BlockingObservable+Operators.swift │ │ ├── BlockingObservable.swift │ │ ├── ObservableConvertibleType+Blocking.swift │ │ └── RunLoopLock.swift ├── RxCocoa │ ├── LICENSE.md │ ├── Platform │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ ├── DispatchQueue+Extensions.swift │ │ ├── Platform.Darwin.swift │ │ └── Platform.Linux.swift │ ├── README.md │ └── RxCocoa │ │ ├── CocoaUnits │ │ ├── ControlEvent.swift │ │ ├── ControlProperty.swift │ │ ├── Driver │ │ │ ├── ControlEvent+Driver.swift │ │ │ ├── ControlProperty+Driver.swift │ │ │ ├── Driver+Subscription.swift │ │ │ ├── Driver.swift │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ └── Variable+Driver.swift │ │ ├── SharedSequence │ │ │ ├── ObservableConvertibleType+SharedSequence.swift │ │ │ ├── SharedSequence+Operators+arity.swift │ │ │ ├── SharedSequence+Operators.swift │ │ │ ├── SharedSequence.swift │ │ │ └── Variable+SharedSequence.swift │ │ └── UIBindingObserver.swift │ │ ├── Common │ │ ├── ControlTarget.swift │ │ ├── DelegateProxy.swift │ │ ├── DelegateProxyType.swift │ │ ├── NSLayoutConstraint+Rx.swift │ │ ├── Observable+Bind.swift │ │ ├── RxCocoaObjCRuntimeError+Extensions.swift │ │ ├── RxTarget.swift │ │ ├── SectionedViewDataSourceType.swift │ │ └── TextInput.swift │ │ ├── Foundation │ │ ├── KVORepresentable+CoreGraphics.swift │ │ ├── KVORepresentable+Swift.swift │ │ ├── KVORepresentable.swift │ │ ├── Logging.swift │ │ ├── NSNotificationCenter+Rx.swift │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ ├── NSObject+Rx.swift │ │ └── URLSession+Rx.swift │ │ ├── Runtime │ │ ├── _RX.m │ │ ├── _RXDelegateProxy.m │ │ ├── _RXKVOObserver.m │ │ ├── _RXObjCRuntime.m │ │ └── include │ │ │ ├── RxCocoaRuntime.h │ │ │ ├── _RX.h │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXKVOObserver.h │ │ │ └── _RXObjCRuntime.h │ │ ├── RxCocoa.h │ │ ├── RxCocoa.swift │ │ └── iOS │ │ ├── DataSources │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ ├── Events │ │ └── ItemEvents.swift │ │ ├── NSTextStorage+Rx.swift │ │ ├── Protocols │ │ ├── RxCollectionViewDataSourceType.swift │ │ └── RxTableViewDataSourceType.swift │ │ ├── Proxies │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ ├── RxCollectionViewDelegateProxy.swift │ │ ├── RxPickerViewDelegateProxy.swift │ │ ├── RxScrollViewDelegateProxy.swift │ │ ├── RxSearchBarDelegateProxy.swift │ │ ├── RxSearchControllerDelegateProxy.swift │ │ ├── RxTabBarControllerDelegateProxy.swift │ │ ├── RxTabBarDelegateProxy.swift │ │ ├── RxTableViewDataSourceProxy.swift │ │ ├── RxTableViewDelegateProxy.swift │ │ ├── RxTextStorageDelegateProxy.swift │ │ ├── RxTextViewDelegateProxy.swift │ │ └── RxWebViewDelegateProxy.swift │ │ ├── UIActivityIndicatorView+Rx.swift │ │ ├── UIAlertAction+Rx.swift │ │ ├── UIApplication+Rx.swift │ │ ├── UIBarButtonItem+Rx.swift │ │ ├── UIButton+Rx.swift │ │ ├── UICollectionView+Rx.swift │ │ ├── UIControl+Rx.swift │ │ ├── UIDatePicker+Rx.swift │ │ ├── UIGestureRecognizer+Rx.swift │ │ ├── UIImageView+Rx.swift │ │ ├── UILabel+Rx.swift │ │ ├── UINavigationItem+Rx.swift │ │ ├── UIPageControl+Rx.swift │ │ ├── UIPickerView+Rx.swift │ │ ├── UIProgressView+Rx.swift │ │ ├── UIRefreshControl+Rx.swift │ │ ├── UIScrollView+Rx.swift │ │ ├── UISearchBar+Rx.swift │ │ ├── UISearchController+Rx.swift │ │ ├── UISegmentedControl+Rx.swift │ │ ├── UISlider+Rx.swift │ │ ├── UIStepper+Rx.swift │ │ ├── UISwitch+Rx.swift │ │ ├── UITabBar+Rx.swift │ │ ├── UITabBarController+Rx.swift │ │ ├── UITabBarItem+Rx.swift │ │ ├── UITableView+Rx.swift │ │ ├── UITextField+Rx.swift │ │ ├── UITextView+Rx.swift │ │ ├── UIView+Rx.swift │ │ ├── UIViewController+Rx.swift │ │ └── UIWebView+Rx.swift ├── RxSwift │ ├── LICENSE.md │ ├── Platform │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ ├── DispatchQueue+Extensions.swift │ │ ├── Platform.Darwin.swift │ │ └── Platform.Linux.swift │ ├── README.md │ └── RxSwift │ │ ├── AnyObserver.swift │ │ ├── Cancelable.swift │ │ ├── Concurrency │ │ ├── AsyncLock.swift │ │ ├── Lock.swift │ │ ├── LockOwnerType.swift │ │ ├── SynchronizedDisposeType.swift │ │ ├── SynchronizedOnType.swift │ │ ├── SynchronizedSubscribeType.swift │ │ └── SynchronizedUnsubscribeType.swift │ │ ├── ConnectableObservableType.swift │ │ ├── Disposable.swift │ │ ├── Disposables │ │ ├── AnonymousDisposable.swift │ │ ├── BinaryDisposable.swift │ │ ├── BooleanDisposable.swift │ │ ├── CompositeDisposable.swift │ │ ├── Disposables.swift │ │ ├── DisposeBag.swift │ │ ├── DisposeBase.swift │ │ ├── NopDisposable.swift │ │ ├── RefCountDisposable.swift │ │ ├── ScheduledDisposable.swift │ │ ├── SerialDisposable.swift │ │ ├── SingleAssignmentDisposable.swift │ │ └── SubscriptionDisposable.swift │ │ ├── Errors.swift │ │ ├── Event.swift │ │ ├── Extensions │ │ ├── Bag+Rx.swift │ │ └── String+Rx.swift │ │ ├── ImmediateSchedulerType.swift │ │ ├── Observable.swift │ │ ├── ObservableConvertibleType.swift │ │ ├── ObservableType+Extensions.swift │ │ ├── ObservableType.swift │ │ ├── Observables │ │ ├── Implementations │ │ │ ├── AddRef.swift │ │ │ ├── Amb.swift │ │ │ ├── AnonymousObservable.swift │ │ │ ├── Buffer.swift │ │ │ ├── Catch.swift │ │ │ ├── CombineLatest+Collection.swift │ │ │ ├── CombineLatest+arity.swift │ │ │ ├── CombineLatest.swift │ │ │ ├── Concat.swift │ │ │ ├── ConnectableObservable.swift │ │ │ ├── Debug.swift │ │ │ ├── Debunce.swift │ │ │ ├── Deferred.swift │ │ │ ├── Delay.swift │ │ │ ├── DelaySubscription.swift │ │ │ ├── DistinctUntilChanged.swift │ │ │ ├── Do.swift │ │ │ ├── ElementAt.swift │ │ │ ├── Empty.swift │ │ │ ├── Error.swift │ │ │ ├── Filter.swift │ │ │ ├── Generate.swift │ │ │ ├── Just.swift │ │ │ ├── Map.swift │ │ │ ├── Merge.swift │ │ │ ├── Multicast.swift │ │ │ ├── Never.swift │ │ │ ├── ObserveOn.swift │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ ├── Optional.swift │ │ │ ├── Producer.swift │ │ │ ├── Range.swift │ │ │ ├── Reduce.swift │ │ │ ├── RefCount.swift │ │ │ ├── Repeat.swift │ │ │ ├── RetryWhen.swift │ │ │ ├── Sample.swift │ │ │ ├── Scan.swift │ │ │ ├── Sequence.swift │ │ │ ├── ShareReplay1.swift │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ ├── SingleAsync.swift │ │ │ ├── Sink.swift │ │ │ ├── Skip.swift │ │ │ ├── SkipUntil.swift │ │ │ ├── SkipWhile.swift │ │ │ ├── StartWith.swift │ │ │ ├── SubscribeOn.swift │ │ │ ├── Switch.swift │ │ │ ├── Take.swift │ │ │ ├── TakeLast.swift │ │ │ ├── TakeUntil.swift │ │ │ ├── TakeWhile.swift │ │ │ ├── Throttle.swift │ │ │ ├── Timeout.swift │ │ │ ├── Timer.swift │ │ │ ├── ToArray.swift │ │ │ ├── Using.swift │ │ │ ├── Window.swift │ │ │ ├── WithLatestFrom.swift │ │ │ ├── Zip+Collection.swift │ │ │ ├── Zip+arity.swift │ │ │ └── Zip.swift │ │ ├── Observable+Aggregate.swift │ │ ├── Observable+Binding.swift │ │ ├── Observable+Concurrency.swift │ │ ├── Observable+Creation.swift │ │ ├── Observable+Debug.swift │ │ ├── Observable+Multiple.swift │ │ ├── Observable+Single.swift │ │ ├── Observable+StandardSequenceOperators.swift │ │ └── Observable+Time.swift │ │ ├── ObserverType.swift │ │ ├── Observers │ │ ├── AnonymousObserver.swift │ │ ├── ObserverBase.swift │ │ └── TailRecursiveSink.swift │ │ ├── Reactive.swift │ │ ├── Rx.swift │ │ ├── RxMutableBox.swift │ │ ├── SchedulerType.swift │ │ ├── Schedulers │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ ├── ConcurrentMainScheduler.swift │ │ ├── CurrentThreadScheduler.swift │ │ ├── HistoricalScheduler.swift │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ ├── ImmediateScheduler.swift │ │ ├── Internal │ │ │ ├── AnonymousInvocable.swift │ │ │ ├── DispatchQueueConfiguration.swift │ │ │ ├── InvocableScheduledItem.swift │ │ │ ├── InvocableType.swift │ │ │ ├── ScheduledItem.swift │ │ │ └── ScheduledItemType.swift │ │ ├── MainScheduler.swift │ │ ├── OperationQueueScheduler.swift │ │ ├── RecursiveScheduler.swift │ │ ├── SchedulerServices+Emulation.swift │ │ ├── SerialDispatchQueueScheduler.swift │ │ ├── VirtualTimeConverterType.swift │ │ └── VirtualTimeScheduler.swift │ │ └── Subjects │ │ ├── BehaviorSubject.swift │ │ ├── PublishSubject.swift │ │ ├── ReplaySubject.swift │ │ ├── SubjectType.swift │ │ └── Variable.swift ├── RxSwiftExt │ ├── LICENSE │ ├── Readme.md │ └── Source │ │ ├── ObservableType+Weak.swift │ │ ├── cascade.swift │ │ ├── catchErrorJustComplete.swift │ │ ├── distinct.swift │ │ ├── ignore.swift │ │ ├── ignoreErrors.swift │ │ ├── ignoreWhen.swift │ │ ├── mapTo.swift │ │ ├── materialize.swift │ │ ├── not.swift │ │ ├── once.swift │ │ ├── pausable.swift │ │ ├── repeatWithBehavior.swift │ │ ├── retryWithBehavior.swift │ │ └── unwrap.swift ├── RxTest │ ├── LICENSE.md │ ├── Platform │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ ├── DispatchQueue+Extensions.swift │ │ ├── Platform.Darwin.swift │ │ └── Platform.Linux.swift │ ├── README.md │ └── RxTest │ │ ├── Any+Equatable.swift │ │ ├── ColdObservable.swift │ │ ├── Event+Equatable.swift │ │ ├── HotObservable.swift │ │ ├── Recorded.swift │ │ ├── RxTests.swift │ │ ├── Schedulers │ │ ├── TestScheduler.swift │ │ └── TestSchedulerVirtualTimeConverter.swift │ │ ├── Subscription.swift │ │ ├── TestableObservable.swift │ │ ├── TestableObserver.swift │ │ └── XCTest+Rx.swift └── Target Support Files │ ├── Action │ ├── Action-dummy.m │ ├── Action-prefix.pch │ ├── Action-umbrella.h │ ├── Action.modulemap │ ├── Action.xcconfig │ └── Info.plist │ ├── MockUIAlertController │ ├── Info.plist │ ├── MockUIAlertController-dummy.m │ ├── MockUIAlertController-prefix.pch │ ├── MockUIAlertController-umbrella.h │ ├── MockUIAlertController.modulemap │ └── MockUIAlertController.xcconfig │ ├── NSObject+Rx │ ├── Info.plist │ ├── NSObject+Rx-dummy.m │ ├── NSObject+Rx-prefix.pch │ ├── NSObject+Rx-umbrella.h │ ├── NSObject+Rx.modulemap │ └── NSObject+Rx.xcconfig │ ├── Pods-ReactiveAlertAndActionSheet │ ├── Info.plist │ ├── Pods-ReactiveAlertAndActionSheet-acknowledgements.markdown │ ├── Pods-ReactiveAlertAndActionSheet-acknowledgements.plist │ ├── Pods-ReactiveAlertAndActionSheet-dummy.m │ ├── Pods-ReactiveAlertAndActionSheet-frameworks.sh │ ├── Pods-ReactiveAlertAndActionSheet-resources.sh │ ├── Pods-ReactiveAlertAndActionSheet-umbrella.h │ ├── Pods-ReactiveAlertAndActionSheet.debug.xcconfig │ ├── Pods-ReactiveAlertAndActionSheet.modulemap │ └── Pods-ReactiveAlertAndActionSheet.release.xcconfig │ ├── Pods-ReactiveAlertAndActionSheetTests │ ├── Info.plist │ ├── Pods-ReactiveAlertAndActionSheetTests-acknowledgements.markdown │ ├── Pods-ReactiveAlertAndActionSheetTests-acknowledgements.plist │ ├── Pods-ReactiveAlertAndActionSheetTests-dummy.m │ ├── Pods-ReactiveAlertAndActionSheetTests-frameworks.sh │ ├── Pods-ReactiveAlertAndActionSheetTests-resources.sh │ ├── Pods-ReactiveAlertAndActionSheetTests-umbrella.h │ ├── Pods-ReactiveAlertAndActionSheetTests.debug.xcconfig │ ├── Pods-ReactiveAlertAndActionSheetTests.modulemap │ └── Pods-ReactiveAlertAndActionSheetTests.release.xcconfig │ ├── RxBlocking │ ├── Info.plist │ ├── RxBlocking-dummy.m │ ├── RxBlocking-prefix.pch │ ├── RxBlocking-umbrella.h │ ├── RxBlocking.modulemap │ └── RxBlocking.xcconfig │ ├── RxCocoa │ ├── Info.plist │ ├── RxCocoa-dummy.m │ ├── RxCocoa-prefix.pch │ ├── RxCocoa-umbrella.h │ ├── RxCocoa.modulemap │ └── RxCocoa.xcconfig │ ├── RxSwift │ ├── Info.plist │ ├── RxSwift-dummy.m │ ├── RxSwift-prefix.pch │ ├── RxSwift-umbrella.h │ ├── RxSwift.modulemap │ └── RxSwift.xcconfig │ ├── RxSwiftExt │ ├── Info.plist │ ├── RxSwiftExt-dummy.m │ ├── RxSwiftExt-prefix.pch │ ├── RxSwiftExt-umbrella.h │ ├── RxSwiftExt.modulemap │ └── RxSwiftExt.xcconfig │ └── RxTest │ ├── Info.plist │ ├── RxTest-dummy.m │ ├── RxTest-prefix.pch │ ├── RxTest-umbrella.h │ ├── RxTest.modulemap │ └── RxTest.xcconfig ├── ReactiveAlertAndActionSheet.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── Adam.xcuserdatad │ └── xcschemes │ ├── -[ImagePickerViewModelTests test_presentImagePickerView_toChooseImageFromGallery].xcscheme │ ├── All in AvatarViewModelTests.xcscheme │ ├── All in GalleryReaderTests.xcscheme │ ├── All in ImagePickerViewModelTests.swift.xcscheme │ ├── All in ImageReceiverTests.swift.xcscheme │ ├── All tests.xcscheme │ ├── ReactiveAlertAndActionSheet.xcscheme │ └── xcschememanagement.plist ├── ReactiveAlertAndActionSheet.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── Adam.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── ReactiveAlertAndActionSheet ├── Action+ActionType.swift ├── AppDelegate.swift ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── AvatarViewModel.swift ├── Base.lproj │ └── LaunchScreen.storyboard ├── Disposable+DisposedBy.swift ├── GalleryReader.swift ├── HavingNib.swift ├── ImagePickerInteractor.swift ├── ImageSourceChooser.swift ├── ImageSources │ ├── LastImageTakenImageSource.swift │ └── LibraryImageSource.swift ├── Info.plist ├── PhotosManagerAdapter.swift ├── Result.swift ├── ViewController.swift ├── ViewController.xib └── ViewControllerPresenting.swift └── ReactiveAlertAndActionSheetTests ├── Info.plist └── ReactiveAlertAndActionSheetTests-Bridging-Header.h /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | def rx_swift() 5 | pod 'RxSwift' 6 | pod 'RxCocoa' 7 | pod 'RxSwiftExt' 8 | pod 'NSObject+Rx' 9 | pod 'Action' 10 | end 11 | 12 | target 'ReactiveAlertAndActionSheet' do 13 | use_frameworks! 14 | rx_swift 15 | 16 | target 'ReactiveAlertAndActionSheetTests' do 17 | inherit! :search_paths 18 | pod 'RxTest' 19 | pod 'RxBlocking' 20 | pod 'MockUIAlertController' 21 | end 22 | 23 | end 24 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (2.2.1): 3 | - RxCocoa (~> 3.0) 4 | - RxSwift (~> 3.0) 5 | - MockUIAlertController (1.1.1) 6 | - NSObject+Rx (2.0.0): 7 | - RxSwift 8 | - RxBlocking (3.1.0): 9 | - RxSwift (~> 3.1) 10 | - RxCocoa (3.1.0): 11 | - RxSwift (~> 3.1) 12 | - RxSwift (3.1.0) 13 | - RxSwiftExt (2.1.0): 14 | - RxSwift (~> 3.0) 15 | - RxTest (3.1.0): 16 | - RxSwift (~> 3.0) 17 | 18 | DEPENDENCIES: 19 | - Action 20 | - MockUIAlertController 21 | - NSObject+Rx 22 | - RxBlocking 23 | - RxCocoa 24 | - RxSwift 25 | - RxSwiftExt 26 | - RxTest 27 | 28 | SPEC CHECKSUMS: 29 | Action: 93c6c9eec95eb76428b2d49a6d260466c2f71b7e 30 | MockUIAlertController: 51fbb77c43c7b8e6cb339e307b031836740ebe57 31 | NSObject+Rx: 2a9cd801d9c847e6d2486cbad8d7701b67834e70 32 | RxBlocking: cd73ef6a5f8c39cede9488178c46aa0c3c3ed17f 33 | RxCocoa: 50d7564866da9299161e86a263ce12a0873904d8 34 | RxSwift: 83ff553e7593fdfdcb2562933a64c0284dffdadc 35 | RxSwiftExt: 492a6575cf6afabb8feeed3204bd0f9e2c695e67 36 | RxTest: 661e33b5022682961784da03cf79c175fcc4bd64 37 | 38 | PODFILE CHECKSUM: 537095a3dea2f0f5413c0a39a3189e0e8f6646cf 39 | 40 | COCOAPODS: 1.1.1 41 | -------------------------------------------------------------------------------- /Pods/Action/License.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Ash Furrow 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Pods/Action/Sources/Action/Action+Internal.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import RxSwift 3 | 4 | internal struct AssociatedKeys { 5 | static var Action = "rx_action" 6 | static var DisposeBag = "rx_disposeBag" 7 | } 8 | 9 | // Note: Actions performed in this extension are _not_ locked 10 | // So be careful! 11 | internal extension NSObject { 12 | 13 | // A dispose bag to be used exclusively for the instance's rx.action. 14 | internal var actionDisposeBag: DisposeBag { 15 | var disposeBag: DisposeBag 16 | 17 | if let lookup = objc_getAssociatedObject(self, &AssociatedKeys.DisposeBag) as? DisposeBag { 18 | disposeBag = lookup 19 | } else { 20 | disposeBag = DisposeBag() 21 | objc_setAssociatedObject(self, &AssociatedKeys.DisposeBag, disposeBag, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 22 | } 23 | 24 | return disposeBag 25 | } 26 | 27 | // Resets the actionDisposeBag to nil, disposeing of any subscriptions within it. 28 | internal func resetActionDisposeBag() { 29 | objc_setAssociatedObject(self, &AssociatedKeys.DisposeBag, nil, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 30 | } 31 | 32 | // Uses objc_sync on self to perform a locked operation. 33 | internal func doLocked(_ closure: () -> Void) { 34 | objc_sync_enter(self); defer { objc_sync_exit(self) } 35 | closure() 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pods/Action/Sources/Action/UIKitExtensions/UIControl+Rx.swift: -------------------------------------------------------------------------------- 1 | #if os(iOS) || os(tvOS) 2 | import UIKit 3 | import RxSwift 4 | import RxCocoa 5 | 6 | public extension Reactive where Base: UIControl { 7 | /// Binds enabled state of action to control, and subscribes action's execution to provided controlEvents. 8 | /// These subscriptions are managed in a private, inaccessible dispose bag. To cancel 9 | /// them, set the rx.action to nil or another action, or call unbindAction(). 10 | public func bindTo(action: Action, controlEvent: ControlEvent, inputTransform: @escaping (Base) -> (Input)) { 11 | // This effectively disposes of any existing subscriptions. 12 | unbindAction() 13 | 14 | // For each tap event, use the inputTransform closure to provide an Input value to the action 15 | controlEvent 16 | .map { inputTransform(self.base) } 17 | .bindTo(action.inputs) 18 | .addDisposableTo(self.base.actionDisposeBag) 19 | 20 | // Bind the enabled state of the control to the enabled state of the action 21 | action 22 | .enabled 23 | .bindTo(self.isEnabled) 24 | .addDisposableTo(self.base.actionDisposeBag) 25 | } 26 | 27 | /// Unbinds any existing action, disposing of all subscriptions. 28 | public func unbindAction() { 29 | self.base.resetActionDisposeBag() 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (2.2.1): 3 | - RxCocoa (~> 3.0) 4 | - RxSwift (~> 3.0) 5 | - MockUIAlertController (1.1.1) 6 | - NSObject+Rx (2.0.0): 7 | - RxSwift 8 | - RxBlocking (3.1.0): 9 | - RxSwift (~> 3.1) 10 | - RxCocoa (3.1.0): 11 | - RxSwift (~> 3.1) 12 | - RxSwift (3.1.0) 13 | - RxSwiftExt (2.1.0): 14 | - RxSwift (~> 3.0) 15 | - RxTest (3.1.0): 16 | - RxSwift (~> 3.0) 17 | 18 | DEPENDENCIES: 19 | - Action 20 | - MockUIAlertController 21 | - NSObject+Rx 22 | - RxBlocking 23 | - RxCocoa 24 | - RxSwift 25 | - RxSwiftExt 26 | - RxTest 27 | 28 | SPEC CHECKSUMS: 29 | Action: 93c6c9eec95eb76428b2d49a6d260466c2f71b7e 30 | MockUIAlertController: 51fbb77c43c7b8e6cb339e307b031836740ebe57 31 | NSObject+Rx: 2a9cd801d9c847e6d2486cbad8d7701b67834e70 32 | RxBlocking: cd73ef6a5f8c39cede9488178c46aa0c3c3ed17f 33 | RxCocoa: 50d7564866da9299161e86a263ce12a0873904d8 34 | RxSwift: 83ff553e7593fdfdcb2562933a64c0284dffdadc 35 | RxSwiftExt: 492a6575cf6afabb8feeed3204bd0f9e2c695e67 36 | RxTest: 661e33b5022682961784da03cf79c175fcc4bd64 37 | 38 | PODFILE CHECKSUM: 537095a3dea2f0f5413c0a39a3189e0e8f6646cf 39 | 40 | COCOAPODS: 1.1.1 41 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/LICENSE.txt: -------------------------------------------------------------------------------- 1 | MockUIAlertController 2 | Copyright 2015 Jonathan M. Reid 3 | All rights reserved. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | (MIT License) 23 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/NSObject+QCOMockAlerts.h: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import 5 | 6 | 7 | @interface NSObject (QCOMockAlerts) 8 | 9 | + (void)qcoMockAlerts_replaceClassMethod:(SEL)originalSelector withMethod:(SEL)swizzledSelector; 10 | + (void)qcoMockAlerts_replaceInstanceMethod:(SEL)originalSelector withMethod:(SEL)swizzledSelector; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/NSObject+QCOMockAlerts.m: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import "NSObject+QCOMockAlerts.h" 5 | 6 | #import 7 | 8 | 9 | @implementation NSObject (QCOMockAlerts) 10 | 11 | + (void)qcoMockAlerts_replaceClassMethod:(SEL)originalSelector withMethod:(SEL)swizzledSelector 12 | { 13 | Method originalMethod = class_getClassMethod(self, originalSelector); 14 | Method swizzledMethod = class_getClassMethod(self, swizzledSelector); 15 | method_exchangeImplementations(originalMethod, swizzledMethod); 16 | } 17 | 18 | + (void)qcoMockAlerts_replaceInstanceMethod:(SEL)originalSelector withMethod:(SEL)swizzledSelector 19 | { 20 | Method originalMethod = class_getInstanceMethod(self, originalSelector); 21 | Method swizzledMethod = class_getInstanceMethod(self, swizzledSelector); 22 | method_exchangeImplementations(originalMethod, swizzledMethod); 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/QCOMockPopoverPresentationController.m: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import "QCOMockPopoverPresentationController.h" 5 | 6 | 7 | @implementation QCOMockPopoverPresentationController 8 | @end 9 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/UIAlertAction+QCOMock.h: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import 5 | 6 | 7 | @interface UIAlertAction (QCOMock) 8 | 9 | + (void)qcoMock_swizzle; 10 | 11 | - (void (^)(UIAlertAction *action))qcoMock_handler; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/UIAlertAction+QCOMock.m: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import "UIAlertAction+QCOMock.h" 5 | 6 | #import "NSObject+QCOMockAlerts.h" 7 | #import 8 | 9 | 10 | @implementation UIAlertAction (QCOMock) 11 | 12 | + (void)qcoMock_swizzle 13 | { 14 | [self qcoMockAlerts_replaceClassMethod:@selector(actionWithTitle:style:handler:) 15 | withMethod:@selector(qcoMock_actionWithTitle:style:handler:)]; 16 | } 17 | 18 | + (instancetype)qcoMock_actionWithTitle:(NSString *)title 19 | style:(UIAlertActionStyle)style 20 | handler:(void (^)(UIAlertAction *action))handler 21 | { 22 | UIAlertAction *action = [self qcoMock_actionWithTitle:title style:style handler:handler]; 23 | objc_setAssociatedObject(action, @selector(qcoMock_handler), handler, OBJC_ASSOCIATION_COPY_NONATOMIC); 24 | return action; 25 | } 26 | 27 | - (void (^)(UIAlertAction *action))qcoMock_handler 28 | { 29 | return objc_getAssociatedObject(self, @selector(qcoMock_handler)); 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/UIAlertController+QCOMock.h: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import 5 | 6 | extern NSString *const QCOMockAlertControllerPresentedNotification; 7 | 8 | 9 | @interface UIAlertController (QCOMock) 10 | 11 | + (void)qcoMock_swizzle; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/UIViewController+QCOMock.h: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import 5 | 6 | extern NSString *const QCOMockViewControllerAnimatedKey; 7 | 8 | 9 | @interface UIViewController (QCOMock) 10 | 11 | + (void)qcoMock_swizzle; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MockUIAlertController/Source/MockUIAlertController/UIViewController+QCOMock.m: -------------------------------------------------------------------------------- 1 | // MockUIAlertController by Jon Reid, http://qualitycoding.org/about/ 2 | // Copyright 2015 Jonathan M. Reid. See LICENSE.txt 3 | 4 | #import "UIViewController+QCOMock.h" 5 | 6 | #import "NSObject+QCOMockAlerts.h" 7 | #import "UIAlertController+QCOMock.h" 8 | 9 | NSString *const QCOMockViewControllerAnimatedKey = @"QCOMockViewControllerAnimatedKey"; 10 | 11 | 12 | @implementation UIViewController (QCOMock) 13 | 14 | + (void)qcoMock_swizzle 15 | { 16 | [self qcoMockAlerts_replaceInstanceMethod:@selector(presentViewController:animated:completion:) 17 | withMethod:@selector(qcoMock_presentViewController:animated:completion:)]; 18 | } 19 | 20 | - (void)qcoMock_presentViewController:(UIViewController *)viewControllerToPresent 21 | animated:(BOOL)flag 22 | completion:(void (^)(void))completion 23 | { 24 | if (![viewControllerToPresent isKindOfClass:[UIAlertController class]]) 25 | return; 26 | 27 | [viewControllerToPresent view]; 28 | NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; 29 | [nc postNotificationName:QCOMockAlertControllerPresentedNotification 30 | object:viewControllerToPresent 31 | userInfo:@{ QCOMockViewControllerAnimatedKey : @(flag) }]; 32 | if (completion) 33 | completion(); 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/NSObject+Rx/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Ash Furrow 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Pods/NSObject+Rx/NSObject+Rx.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import RxSwift 3 | import ObjectiveC 4 | 5 | public extension NSObject { 6 | fileprivate struct AssociatedKeys { 7 | static var DisposeBag = "rx_disposeBag" 8 | } 9 | 10 | fileprivate func doLocked(_ closure: () -> Void) { 11 | objc_sync_enter(self); defer { objc_sync_exit(self) } 12 | closure() 13 | } 14 | 15 | var rx_disposeBag: DisposeBag { 16 | get { 17 | var disposeBag: DisposeBag! 18 | doLocked { 19 | let lookup = objc_getAssociatedObject(self, &AssociatedKeys.DisposeBag) as? DisposeBag 20 | if let lookup = lookup { 21 | disposeBag = lookup 22 | } else { 23 | let newDisposeBag = DisposeBag() 24 | self.rx_disposeBag = newDisposeBag 25 | disposeBag = newDisposeBag 26 | } 27 | } 28 | return disposeBag 29 | } 30 | 31 | set { 32 | doLocked { 33 | objc_setAssociatedObject(self, &AssociatedKeys.DisposeBag, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pods/RxBlocking/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/RxBlocking/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Sequence that repeats `repeatedValue` infinite number of times. 12 | struct InfiniteSequence : Sequence { 13 | typealias Element = E 14 | typealias Iterator = AnyIterator 15 | 16 | private let _repeatedValue: E 17 | 18 | init(repeatedValue: E) { 19 | _repeatedValue = repeatedValue 20 | } 21 | 22 | func makeIterator() -> Iterator { 23 | let repeatedValue = _repeatedValue 24 | return AnyIterator { 25 | return repeatedValue 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxBlocking/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Dispatch 11 | 12 | extension DispatchQueue { 13 | private static var token: DispatchSpecificKey<()> = { 14 | let key = DispatchSpecificKey<()>() 15 | DispatchQueue.main.setSpecific(key: key, value: ()) 16 | return key 17 | }() 18 | 19 | static var isMain: Bool { 20 | return DispatchQueue.getSpecific(key: token) != nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxBlocking/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | typealias AtomicInt = Int32 15 | 16 | let AtomicCompareAndSwap = OSAtomicCompareAndSwap32Barrier 17 | let AtomicIncrement = OSAtomicIncrement32Barrier 18 | let AtomicDecrement = OSAtomicDecrement32Barrier 19 | 20 | extension Thread { 21 | 22 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String 23 | ) { 24 | let currentThread = Thread.current 25 | let threadDictionary = currentThread.threadDictionary 26 | 27 | if let newValue = value { 28 | threadDictionary[key] = newValue 29 | } 30 | else { 31 | threadDictionary[key] = nil 32 | } 33 | 34 | } 35 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 36 | let currentThread = Thread.current 37 | let threadDictionary = currentThread.threadDictionary 38 | 39 | return threadDictionary[key] as? T 40 | } 41 | } 42 | 43 | extension AtomicInt { 44 | func valueSnapshot() -> Int32 { 45 | return self 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Pods/RxBlocking/RxBlocking/BlockingObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BlockingObservable.swift 3 | // RxBlocking 4 | // 5 | // Created by Krunoslav Zaher on 10/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | /** 15 | `BlockingObservable` is a variety of `Observable` that provides blocking operators. 16 | 17 | It can be useful for testing and demo purposes, but is generally inappropriate for production applications. 18 | 19 | If you think you need to use a `BlockingObservable` this is usually a sign that you should rethink your 20 | design. 21 | */ 22 | public struct BlockingObservable { 23 | let timeout: RxTimeInterval? 24 | let source: Observable 25 | } 26 | -------------------------------------------------------------------------------- /Pods/RxBlocking/RxBlocking/ObservableConvertibleType+Blocking.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+Blocking.swift 3 | // RxBlocking 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | extension ObservableConvertibleType { 15 | /// Converts an Observable into a `BlockingObservable` (an Observable with blocking operators). 16 | /// 17 | /// - parameter timeout: Maximal time interval BlockingObservable can block without throwing `RxError.timeout`. 18 | /// - returns: `BlockingObservable` version of `self` 19 | public func toBlocking(timeout: RxTimeInterval? = nil) -> BlockingObservable { 20 | return BlockingObservable(timeout: timeout, source: self.asObservable()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxCocoa/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Sequence that repeats `repeatedValue` infinite number of times. 12 | struct InfiniteSequence : Sequence { 13 | typealias Element = E 14 | typealias Iterator = AnyIterator 15 | 16 | private let _repeatedValue: E 17 | 18 | init(repeatedValue: E) { 19 | _repeatedValue = repeatedValue 20 | } 21 | 22 | func makeIterator() -> Iterator { 23 | let repeatedValue = _repeatedValue 24 | return AnyIterator { 25 | return repeatedValue 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Dispatch 11 | 12 | extension DispatchQueue { 13 | private static var token: DispatchSpecificKey<()> = { 14 | let key = DispatchSpecificKey<()>() 15 | DispatchQueue.main.setSpecific(key: key, value: ()) 16 | return key 17 | }() 18 | 19 | static var isMain: Bool { 20 | return DispatchQueue.getSpecific(key: token) != nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | typealias AtomicInt = Int32 15 | 16 | let AtomicCompareAndSwap = OSAtomicCompareAndSwap32Barrier 17 | let AtomicIncrement = OSAtomicIncrement32Barrier 18 | let AtomicDecrement = OSAtomicDecrement32Barrier 19 | 20 | extension Thread { 21 | 22 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String 23 | ) { 24 | let currentThread = Thread.current 25 | let threadDictionary = currentThread.threadDictionary 26 | 27 | if let newValue = value { 28 | threadDictionary[key] = newValue 29 | } 30 | else { 31 | threadDictionary[key] = nil 32 | } 33 | 34 | } 35 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 36 | let currentThread = Thread.current 37 | let threadDictionary = currentThread.threadDictionary 38 | 39 | return threadDictionary[key] as? T 40 | } 41 | } 42 | 43 | extension AtomicInt { 44 | func valueSnapshot() -> Int32 { 45 | return self 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/CocoaUnits/Driver/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | extension ControlEvent { 15 | /// Converts `ControlEvent` to `Driver` unit. 16 | /// 17 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 18 | public func asDriver() -> Driver { 19 | return self.asDriver { (error) -> Driver in 20 | #if DEBUG 21 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 22 | #else 23 | return Driver.empty() 24 | #endif 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/CocoaUnits/Driver/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlProperty+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | extension ControlProperty { 15 | /// Converts `ControlProperty` to `Driver` unit. 16 | /// 17 | /// `ControlProperty` already can't fail, so no special case needs to be handled. 18 | public func asDriver() -> Driver { 19 | return self.asDriver { (error) -> Driver in 20 | #if DEBUG 21 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 22 | #else 23 | return Driver.empty() 24 | #endif 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/CocoaUnits/Driver/Variable+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Variable+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | extension Variable { 15 | /// Converts `Variable` to `Driver` unit. 16 | /// 17 | /// - returns: Driving observable sequence. 18 | public func asDriver() -> Driver { 19 | let source = self.asObservable() 20 | .observeOn(DriverSharingStrategy.scheduler) 21 | return Driver(source) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/CocoaUnits/SharedSequence/Variable+SharedSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Variable+SharedSequence.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | extension Variable { 15 | /// Converts `Variable` to `SharedSequence` unit. 16 | /// 17 | /// - returns: Observable sequence. 18 | public func asSharedSequence(strategy: SharingStrategy.Type = SharingStrategy.self) -> SharedSequence { 19 | let source = self.asObservable() 20 | .observeOn(SharingStrategy.scheduler) 21 | return SharedSequence(source) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Common/NSLayoutConstraint+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if !os(Linux) 10 | 11 | import Foundation 12 | 13 | #if os(macOS) 14 | import Cocoa 15 | #else 16 | import UIKit 17 | #endif 18 | 19 | #if !RX_NO_MODULE 20 | import RxSwift 21 | #endif 22 | 23 | #if os(iOS) || os(macOS) || os(tvOS) 24 | extension Reactive where Base: NSLayoutConstraint { 25 | /// Bindable sink for `constant` property. 26 | public var constant: UIBindingObserver { 27 | return UIBindingObserver(UIElement: self.base) { constraint, constant in 28 | constraint.constant = constant 29 | } 30 | } 31 | 32 | /// Bindable sink for `active` property. 33 | @available(iOS 8, OSX 10.10, *) 34 | public var active: UIBindingObserver { 35 | return UIBindingObserver(UIElement: self.base) { constraint, value in 36 | constraint.isActive = value 37 | } 38 | } 39 | } 40 | 41 | #endif 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Common/RxTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTarget.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class RxTarget : NSObject 15 | , Disposable { 16 | 17 | private var retainSelf: RxTarget? 18 | 19 | override init() { 20 | super.init() 21 | self.retainSelf = self 22 | 23 | #if TRACE_RESOURCES 24 | _ = Resources.incrementTotal() 25 | #endif 26 | 27 | #if DEBUG 28 | MainScheduler.ensureExecutingOnScheduler() 29 | #endif 30 | } 31 | 32 | func dispose() { 33 | #if DEBUG 34 | MainScheduler.ensureExecutingOnScheduler() 35 | #endif 36 | self.retainSelf = nil 37 | } 38 | 39 | #if TRACE_RESOURCES 40 | deinit { 41 | _ = Resources.decrementTotal() 42 | } 43 | #endif 44 | } 45 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionedViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 1/10/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Data source with access to underlying sectioned model. 12 | public protocol SectionedViewDataSourceType { 13 | /// Returns model at index path. 14 | /// 15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown. 16 | 17 | /// - parameter indexPath: Model index path 18 | /// - returns: Model at index path. 19 | func model(at indexPath: IndexPath) throws -> Any 20 | } 21 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KVORepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Type that is KVO representable (KVO mechanism can be used to observe it). 12 | public protocol KVORepresentable { 13 | /// Associated KVO type. 14 | associatedtype KVOType 15 | 16 | /// Constructs `Self` using KVO value. 17 | init?(KVOValue: KVOType) 18 | } 19 | 20 | extension KVORepresentable { 21 | /// Initializes `KVORepresentable` with optional value. 22 | init?(KVOValue: KVOType?) { 23 | guard let KVOValue = KVOValue else { 24 | return nil 25 | } 26 | 27 | self.init(KVOValue: KVOValue) 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Foundation/Logging.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Logging.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/3/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Simple logging settings for RxCocoa library. 12 | public struct Logging { 13 | public typealias LogURLRequest = (URLRequest) -> Bool 14 | 15 | /// Log URL requests to standard output in curl format. 16 | public static var URLRequests: LogURLRequest = { _ in 17 | #if DEBUG 18 | return true 19 | #else 20 | return false 21 | #endif 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Foundation/NSNotificationCenter+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotificationCenter+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | extension Reactive where Base: NotificationCenter { 15 | /** 16 | Transforms notifications posted to notification center to observable sequence of notifications. 17 | 18 | - parameter name: Optional name used to filter notifications. 19 | - parameter object: Optional object used to filter notifications. 20 | - returns: Observable sequence of posted notifications. 21 | */ 22 | public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable { 23 | return Observable.create { [weak object] observer in 24 | let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in 25 | observer.on(.next(notification)) 26 | } 27 | 28 | return Disposables.create { 29 | self.base.removeObserver(nsObserver) 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Foundation/NSObject+Rx+KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Rx+KVORepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if !os(Linux) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | 16 | extension Reactive where Base: NSObject { 17 | 18 | /** 19 | Specialization of generic `observe` method. 20 | 21 | This is a special overload because to observe values of some type (for example `Int`), first values of KVO type 22 | need to be observed (`NSNumber`), and then converted to result type. 23 | 24 | For more information take a look at `observe` method. 25 | */ 26 | public func observe(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable { 27 | return observe(E.KVOType.self, keyPath, options: options, retainSelf: retainSelf) 28 | .map(E.init) 29 | } 30 | } 31 | 32 | #if !DISABLE_SWIZZLING && !os(Linux) 33 | // KVO 34 | extension Reactive where Base: NSObject { 35 | /** 36 | Specialization of generic `observeWeakly` method. 37 | 38 | For more information take a look at `observeWeakly` method. 39 | */ 40 | public func observeWeakly(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial]) -> Observable { 41 | return observeWeakly(E.KVOType.self, keyPath, options: options) 42 | .map(E.init) 43 | } 44 | } 45 | #endif 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/_RXKVOObserver.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RXKVOObserver.h" 10 | 11 | @interface _RXKVOObserver () 12 | 13 | @property (nonatomic, unsafe_unretained) id target; 14 | @property (nonatomic, strong ) id retainedTarget; 15 | @property (nonatomic, copy ) NSString *keyPath; 16 | @property (nonatomic, copy ) void (^callback)(id); 17 | 18 | @end 19 | 20 | @implementation _RXKVOObserver 21 | 22 | -(instancetype)initWithTarget:(id)target 23 | retainTarget:(BOOL)retainTarget 24 | keyPath:(NSString*)keyPath 25 | options:(NSKeyValueObservingOptions)options 26 | callback:(void (^)(id))callback { 27 | self = [super init]; 28 | if (!self) return nil; 29 | 30 | self.target = target; 31 | if (retainTarget) { 32 | self.retainedTarget = target; 33 | } 34 | self.keyPath = keyPath; 35 | self.callback = callback; 36 | 37 | [self.target addObserver:self forKeyPath:self.keyPath options:options context:nil]; 38 | 39 | return self; 40 | } 41 | 42 | -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 43 | @synchronized(self) { 44 | self.callback(change[NSKeyValueChangeNewKey]); 45 | } 46 | } 47 | 48 | -(void)dispose { 49 | [self.target removeObserver:self forKeyPath:self.keyPath context:nil]; 50 | self.target = nil; 51 | self.retainedTarget = nil; 52 | } 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/include/RxCocoaRuntime.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoaRuntime.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/include/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | 21 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 22 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/include/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if os(iOS) || os(tvOS) 11 | import UIKit 12 | 13 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 16 | #endif 17 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/NSTextStorage+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSTextStorage+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import Foundation 11 | 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: NSTextStorage { 18 | 19 | /// Reactive wrapper for `delegate`. 20 | /// 21 | /// For more information take a look at `DelegateProxyType` protocol documentation. 22 | public var delegate:DelegateProxy { 23 | return RxTextStorageDelegateProxy.proxyForObject(base) 24 | } 25 | 26 | /// Reactive wrapper for `delegate` message. 27 | public var didProcessEditingRangeChangeInLength: Observable<(editedMask:NSTextStorageEditActions, editedRange:NSRange, delta:Int)> { 28 | return delegate 29 | .methodInvoked(#selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:))) 30 | .map { a in 31 | let editedMask = NSTextStorageEditActions(rawValue: try castOrThrow(UInt.self, a[1]) ) 32 | let editedRange = try castOrThrow(NSValue.self, a[2]).rangeValue 33 | let delta = try castOrThrow(Int.self, a[3]) 34 | 35 | return (editedMask, editedRange, delta) 36 | } 37 | } 38 | } 39 | #endif 40 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods. 18 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ { 19 | 20 | /// Type of elements that can be bound to collection view. 21 | associatedtype Element 22 | 23 | /// New observable sequence event observed. 24 | /// 25 | /// - parameter collectionView: Bound collection view. 26 | /// - parameter observedEvent: Event 27 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event) -> Void 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/26/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods. 18 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ { 19 | 20 | /// Type of elements that can be bound to table view. 21 | associatedtype Element 22 | 23 | /// New observable sequence event observed. 24 | /// 25 | /// - parameter tableView: Bound table view. 26 | /// - parameter observedEvent: Event 27 | func tableView(_ tableView: UITableView, observedEvent: Event) -> Void 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | public class RxCollectionViewDelegateProxy 19 | : RxScrollViewDelegateProxy 20 | , UICollectionViewDelegate 21 | , UICollectionViewDelegateFlowLayout { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var collectionView: UICollectionView? 25 | 26 | /// Initializes `RxCollectionViewDelegateProxy` 27 | /// 28 | /// - parameter parentObject: Parent object for delegate proxy. 29 | public required init(parentObject: AnyObject) { 30 | self.collectionView = castOrFatalError(parentObject) 31 | super.init(parentObject: parentObject) 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 5/12/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | public class RxPickerViewDelegateProxy 18 | : DelegateProxy 19 | , DelegateProxyType 20 | , UIPickerViewDelegate { 21 | 22 | /// For more information take a look at `DelegateProxyType`. 23 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 24 | let pickerView: UIPickerView = castOrFatalError(object) 25 | pickerView.delegate = castOptionalOrFatalError(delegate) 26 | } 27 | 28 | /// For more information take a look at `DelegateProxyType`. 29 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 30 | let pickerView: UIPickerView = castOrFatalError(object) 31 | return pickerView.delegate 32 | } 33 | } 34 | #endif 35 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | public class RxSearchBarDelegateProxy 19 | : DelegateProxy 20 | , UISearchBarDelegate 21 | , DelegateProxyType { 22 | 23 | /// For more information take a look at `DelegateProxyType`. 24 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 25 | let searchBar: UISearchBar = castOrFatalError(object) 26 | return searchBar.delegate 27 | } 28 | 29 | /// For more information take a look at `DelegateProxyType`. 30 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 31 | let searchBar: UISearchBar = castOrFatalError(object) 32 | searchBar.delegate = castOptionalOrFatalError(delegate) 33 | } 34 | 35 | // MARK: Delegate proxy methods 36 | 37 | #if os(iOS) 38 | /// For more information take a look at `DelegateProxyType`. 39 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject { 40 | let searchBar: UISearchBar = castOrFatalError(object) 41 | return searchBar.createRxDelegateProxy() 42 | } 43 | #endif 44 | 45 | } 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 3/17/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | @available(iOS 8.0, *) 19 | public class RxSearchControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType 22 | , UISearchControllerDelegate { 23 | 24 | /// For more information take a look at `DelegateProxyType`. 25 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 26 | let searchController: UISearchController = castOrFatalError(object) 27 | searchController.delegate = castOptionalOrFatalError(delegate) 28 | } 29 | 30 | /// For more information take a look at `DelegateProxyType`. 31 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 32 | let searchController: UISearchController = castOrFatalError(object) 33 | return searchController.delegate 34 | } 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yusuke Kita on 2016/12/07. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import Foundation 11 | import UIKit 12 | 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | public class RxTabBarControllerDelegateProxy 19 | : DelegateProxy 20 | , UITabBarControllerDelegate 21 | , DelegateProxyType { 22 | 23 | /// For more information take a look at `DelegateProxyType`. 24 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 25 | let tabBarController: UITabBarController = castOrFatalError(object) 26 | return tabBarController.delegate 27 | } 28 | 29 | /// For more information take a look at `DelegateProxyType`. 30 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 31 | let tabBarController: UITabBarController = castOrFatalError(object) 32 | tabBarController.delegate = castOptionalOrFatalError(delegate) 33 | } 34 | 35 | /// For more information take a look at `DelegateProxyType`. 36 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject { 37 | let tabBarController: UITabBarController = castOrFatalError(object) 38 | return tabBarController.createRxDelegateProxy() 39 | } 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Jesse Farless on 5/14/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import Foundation 11 | import UIKit 12 | 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | public class RxTabBarDelegateProxy 19 | : DelegateProxy 20 | , UITabBarDelegate 21 | , DelegateProxyType { 22 | 23 | /// For more information take a look at `DelegateProxyType`. 24 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 25 | let tabBar: UITabBar = castOrFatalError(object) 26 | return tabBar.delegate 27 | } 28 | 29 | /// For more information take a look at `DelegateProxyType`. 30 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 31 | let tabBar: UITabBar = castOrFatalError(object) 32 | tabBar.delegate = castOptionalOrFatalError(delegate) 33 | } 34 | 35 | /// For more information take a look at `DelegateProxyType`. 36 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject { 37 | let tabBar: UITabBar = castOrFatalError(object) 38 | return tabBar.createRxDelegateProxy() 39 | } 40 | 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | public class RxTableViewDelegateProxy 19 | : RxScrollViewDelegateProxy 20 | , UITableViewDelegate { 21 | 22 | 23 | /// Typed parent object. 24 | public weak private(set) var tableView: UITableView? 25 | 26 | /// Initializes `RxTableViewDelegateProxy` 27 | /// 28 | /// - parameter parentObject: Parent object for delegate proxy. 29 | public required init(parentObject: AnyObject) { 30 | self.tableView = castOrFatalError(parentObject) 31 | super.init(parentObject: parentObject) 32 | } 33 | 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextStorageDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | public class RxTextStorageDelegateProxy 18 | : DelegateProxy 19 | , DelegateProxyType 20 | , NSTextStorageDelegate { 21 | 22 | 23 | /// For more information take a look at `DelegateProxyType`. 24 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 25 | let textStorage: NSTextStorage = castOrFatalError(object) 26 | textStorage.delegate = castOptionalOrFatalError(delegate) 27 | } 28 | 29 | /// For more information take a look at `DelegateProxyType`. 30 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 31 | let textStorage: NSTextStorage = castOrFatalError(object) 32 | return textStorage.delegate 33 | } 34 | 35 | 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 7/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | /// For more information take a look at `DelegateProxyType`. 18 | public class RxTextViewDelegateProxy 19 | : RxScrollViewDelegateProxy 20 | , UITextViewDelegate { 21 | 22 | /// Typed parent object. 23 | public weak private(set) var textView: UITextView? 24 | 25 | /// Initializes `RxTextViewDelegateProxy` 26 | /// 27 | /// - parameter parentObject: Parent object for delegate proxy. 28 | public required init(parentObject: AnyObject) { 29 | self.textView = castOrFatalError(parentObject) 30 | super.init(parentObject: parentObject) 31 | } 32 | 33 | // MARK: delegate methods 34 | 35 | /// For more information take a look at `DelegateProxyType`. 36 | @objc public func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 37 | /** 38 | We've had some issues with observing text changes. This is here just in case we need the same hack in future and that 39 | we wouldn't need to change the public interface. 40 | */ 41 | let forwardToDelegate = self.forwardToDelegate() as? UITextViewDelegate 42 | return forwardToDelegate?.textView?(textView, 43 | shouldChangeTextIn: range, 44 | replacementText: text) ?? true 45 | } 46 | } 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxWebViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Andrew Breckenridge on 9/26/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | import UIKit 11 | 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | 16 | public class RxWebViewDelegateProxy 17 | : DelegateProxy 18 | , DelegateProxyType 19 | , UIWebViewDelegate { 20 | 21 | /** 22 | For more information take a look at `DelegateProxyType`. 23 | */ 24 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) { 25 | let webView: UIWebView = castOrFatalError(object) 26 | webView.delegate = castOptionalOrFatalError(delegate) 27 | } 28 | 29 | /** 30 | For more information take a look at `DelegateProxyType`. 31 | */ 32 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? { 33 | let webView: UIWebView = castOrFatalError(object) 34 | return webView.delegate 35 | } 36 | 37 | 38 | } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIActivityIndicatorView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Ivan Persidskiy on 02/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import UIKit 11 | 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | 16 | extension Reactive where Base: UIActivityIndicatorView { 17 | 18 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 19 | public var isAnimating: UIBindingObserver { 20 | return UIBindingObserver(UIElement: self.base) { activityIndicator, active in 21 | if active { 22 | activityIndicator.startAnimating() 23 | } else { 24 | activityIndicator.stopAnimating() 25 | } 26 | } 27 | } 28 | 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIAlertAction+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertAction+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Andrew Breckenridge on 5/7/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | 14 | #if !RX_NO_MODULE 15 | import RxSwift 16 | #endif 17 | 18 | extension Reactive where Base: UIAlertAction { 19 | 20 | /// Bindable sink for `enabled` property. 21 | public var isEnabled: UIBindingObserver { 22 | return UIBindingObserver(UIElement: self.base) { alertAction, value in 23 | alertAction.isEnabled = value 24 | } 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIApplication+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Mads Bøgeskov on 18/01/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if os(iOS) 12 | import UIKit 13 | 14 | #if !RX_NO_MODULE 15 | import RxSwift 16 | #endif 17 | 18 | extension Reactive where Base: UIApplication { 19 | 20 | /// Bindable sink for `networkActivityIndicatorVisible`. 21 | public var isNetworkActivityIndicatorVisible: UIBindingObserver { 22 | return UIBindingObserver(UIElement: self.base) { application, active in 23 | application.isNetworkActivityIndicatorVisible = active 24 | } 25 | } 26 | } 27 | #endif 28 | 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIButton+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UIButton { 18 | 19 | /** 20 | Reactive wrapper for `TouchUpInside` control event. 21 | */ 22 | public var tap: ControlEvent { 23 | return controlEvent(.touchUpInside) 24 | } 25 | } 26 | 27 | #endif 28 | 29 | #if os(tvOS) 30 | 31 | import Foundation 32 | #if !RX_NO_MODULE 33 | import RxSwift 34 | #endif 35 | import UIKit 36 | 37 | extension Reactive where Base: UIButton { 38 | 39 | /// Reactive wrapper for `PrimaryActionTriggered` control event. 40 | public var primaryAction: ControlEvent { 41 | return controlEvent(.primaryActionTriggered) 42 | } 43 | 44 | } 45 | 46 | #endif 47 | 48 | #if os(iOS) || os(tvOS) 49 | 50 | import Foundation 51 | #if !RX_NO_MODULE 52 | import RxSwift 53 | #endif 54 | import UIKit 55 | 56 | extension Reactive where Base: UIButton { 57 | 58 | /// Reactive wrapper for `setTitle(_:controlState:)` 59 | public func title(for controlState: UIControlState = []) -> UIBindingObserver { 60 | return UIBindingObserver(UIElement: self.base) { (button, title) -> () in 61 | button.setTitle(title, for: controlState) 62 | } 63 | } 64 | 65 | } 66 | #endif 67 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIDatePicker+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIDatePicker+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Daniel Tartaglia on 5/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UIDatePicker { 18 | /// Reactive wrapper for `date` property. 19 | public var date: ControlProperty { 20 | return value 21 | } 22 | 23 | /// Reactive wrapper for `date` property. 24 | public var value: ControlProperty { 25 | return UIControl.rx.value( 26 | self.base, 27 | getter: { datePicker in 28 | datePicker.date 29 | }, setter: { datePicker, value in 30 | datePicker.date = value 31 | } 32 | ) 33 | } 34 | 35 | } 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIImageView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UIImageView { 18 | 19 | /// Bindable sink for `image` property. 20 | public var image: UIBindingObserver { 21 | return image(transitionType: nil) 22 | } 23 | 24 | /// Bindable sink for `image` property. 25 | 26 | /// - parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...) 27 | public func image(transitionType: String? = nil) -> UIBindingObserver { 28 | return UIBindingObserver(UIElement: base) { imageView, image in 29 | if let transitionType = transitionType { 30 | if image != nil { 31 | let transition = CATransition() 32 | transition.duration = 0.25 33 | transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 34 | transition.type = transitionType 35 | imageView.layer.add(transition, forKey: kCATransition) 36 | } 37 | } 38 | else { 39 | imageView.layer.removeAllAnimations() 40 | } 41 | imageView.image = image 42 | } 43 | } 44 | } 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UILabel+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UILabel { 18 | 19 | /// Bindable sink for `text` property. 20 | public var text: UIBindingObserver { 21 | return UIBindingObserver(UIElement: self.base) { label, text in 22 | label.text = text 23 | } 24 | } 25 | 26 | /// Bindable sink for `attributedText` property. 27 | public var attributedText: UIBindingObserver { 28 | return UIBindingObserver(UIElement: self.base) { label, text in 29 | label.attributedText = text 30 | } 31 | } 32 | 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UINavigationItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by kumapo on 2016/05/09. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | extension Reactive where Base: UINavigationItem { 18 | 19 | /// Bindable sink for `title` property. 20 | public var title: UIBindingObserver { 21 | return UIBindingObserver(UIElement: self.base) { navigationItem, text in 22 | navigationItem.title = text 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIPageControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIPageControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Francesco Puntillo on 14/04/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UIPageControl { 18 | 19 | /// Bindable sink for `currentPage` property. 20 | public var currentPage: UIBindingObserver { 21 | return UIBindingObserver(UIElement: self.base) { controller, page in 22 | controller.currentPage = page 23 | } 24 | } 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIPickerView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIPickerView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 5/12/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UIPickerView { 18 | 19 | /// Reactive wrapper for `delegate`. 20 | /// For more information take a look at `DelegateProxyType` protocol documentation. 21 | public var delegate: DelegateProxy { 22 | return RxPickerViewDelegateProxy.proxyForObject(base) 23 | } 24 | 25 | public var itemSelected: ControlEvent<(Int, Int)> { 26 | let source = delegate 27 | .methodInvoked(#selector(UIPickerViewDelegate.pickerView(_:didSelectRow:inComponent:))) 28 | .map { 29 | return (try castOrThrow(Int.self, $0[1]), try castOrThrow(Int.self, $0[2])) 30 | } 31 | return ControlEvent(events: source) 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIProgressView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIProgressView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Samuel Bae on 2/27/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UIProgressView { 18 | 19 | /// Bindable sink for `progress` property 20 | public var progress: UIBindingObserver { 21 | return UIBindingObserver(UIElement: self.base) { progressView, progress in 22 | progressView.progress = progress 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yosuke Ishikawa on 1/31/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | import UIKit 11 | 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | 16 | extension Reactive where Base: UIRefreshControl { 17 | 18 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. 19 | @available(*, deprecated, renamed: "isRefreshing") 20 | public var refreshing: UIBindingObserver { 21 | return self.isRefreshing 22 | } 23 | 24 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. 25 | public var isRefreshing: UIBindingObserver { 26 | return UIBindingObserver(UIElement: self.base) { refreshControl, refresh in 27 | if refresh { 28 | refreshControl.beginRefreshing() 29 | } else { 30 | refreshControl.endRefreshing() 31 | } 32 | } 33 | } 34 | 35 | } 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UISegmentedControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISegmentedControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos García on 8/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | 16 | 17 | extension Reactive where Base: UISegmentedControl { 18 | /// Reactive wrapper for `selectedSegmentIndex` property. 19 | public var selectedSegmentIndex: ControlProperty { 20 | return value 21 | } 22 | 23 | /// Reactive wrapper for `selectedSegmentIndex` property. 24 | public var value: ControlProperty { 25 | return UIControl.rx.value( 26 | self.base, 27 | getter: { segmentedControl in 28 | segmentedControl.selectedSegmentIndex 29 | }, setter: { segmentedControl, value in 30 | segmentedControl.selectedSegmentIndex = value 31 | } 32 | ) 33 | } 34 | 35 | } 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Alexander van der Werff on 28/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UISlider { 18 | 19 | /// Reactive wrapper for `value` property. 20 | public var value: ControlProperty { 21 | return UIControl.rx.value( 22 | self.base, 23 | getter: { slider in 24 | slider.value 25 | }, setter: { slider, value in 26 | slider.value = value 27 | } 28 | ) 29 | } 30 | 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIStepper+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 9/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | extension Reactive where Base: UIStepper { 18 | 19 | /// Reactive wrapper for `value` property. 20 | public var value: ControlProperty { 21 | return UIControl.rx.value( 22 | self.base, 23 | getter: { stepper in 24 | stepper.value 25 | }, setter: { stepper, value in 26 | stepper.value = value 27 | } 28 | ) 29 | } 30 | 31 | } 32 | 33 | #endif 34 | 35 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos García on 8/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | 16 | 17 | extension Reactive where Base: UISwitch { 18 | 19 | /// Reactive wrapper for `isOn` property. 20 | public var isOn: ControlProperty { 21 | return value 22 | } 23 | 24 | /** 25 | Reactive wrapper for `isOn` property. 26 | 27 | **⚠️ Versions prior to iOS 10.2 were leaking `UIButton`s, so on those versions 28 | underlying observable sequence won't complete when nothing holds a strong reference 29 | to UISwitch.⚠️** 30 | */ 31 | public var value: ControlProperty { 32 | return UIControl.rx.value( 33 | self.base, 34 | getter: { uiSwitch in 35 | uiSwitch.isOn 36 | }, setter: { uiSwitch, value in 37 | uiSwitch.isOn = value 38 | } 39 | ) 40 | } 41 | 42 | } 43 | 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UITabBarItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Mateusz Derks on 04/03/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | extension Reactive where Base: UITabBarItem { 18 | 19 | /// Bindable sink for `badgeValue` property. 20 | public var badgeValue: UIBindingObserver { 21 | return UIBindingObserver(UIElement: self.base) { tabBarItem, badgeValue in 22 | tabBarItem.badgeValue = badgeValue 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UITextField+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | #if !RX_NO_MODULE 13 | import RxSwift 14 | #endif 15 | import UIKit 16 | 17 | extension Reactive where Base: UITextField { 18 | /// Reactive wrapper for `text` property. 19 | public var text: ControlProperty { 20 | return value 21 | } 22 | 23 | /// Reactive wrapper for `text` property. 24 | public var value: ControlProperty { 25 | return UIControl.rx.value( 26 | base, 27 | getter: { textField in 28 | textField.text 29 | }, setter: { textField, value in 30 | // This check is important because setting text value always clears control state 31 | // including marked text selection which is imporant for proper input 32 | // when IME input method is used. 33 | if textField.text != value { 34 | textField.text = value 35 | } 36 | } 37 | ) 38 | } 39 | 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import Foundation 12 | import UIKit 13 | #if !RX_NO_MODULE 14 | import RxSwift 15 | #endif 16 | 17 | extension Reactive where Base: UIView { 18 | /// Bindable sink for `hidden` property. 19 | public var isHidden: UIBindingObserver { 20 | return UIBindingObserver(UIElement: self.base) { view, hidden in 21 | view.isHidden = hidden 22 | } 23 | } 24 | 25 | /// Bindable sink for `alpha` property. 26 | public var alpha: UIBindingObserver { 27 | return UIBindingObserver(UIElement: self.base) { view, alpha in 28 | view.alpha = alpha 29 | } 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIViewController+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Kyle Fuller on 27/05/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if os(iOS) 12 | import UIKit 13 | 14 | #if !RX_NO_MODULE 15 | import RxSwift 16 | #endif 17 | 18 | extension Reactive where Base: UIViewController { 19 | 20 | /// Bindable sink for `title`. 21 | public var title: UIBindingObserver { 22 | return UIBindingObserver(UIElement: self.base) { viewController, title in 23 | viewController.title = title 24 | } 25 | } 26 | 27 | } 28 | #endif 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIWebView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Andrew Breckenridge on 8/30/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import Foundation 12 | import UIKit 13 | 14 | #if !RX_NO_MODULE 15 | import RxSwift 16 | #endif 17 | 18 | extension Reactive where Base: UIWebView { 19 | 20 | /** 21 | Reactive wrapper for `delegate`. 22 | For more information take a look at `DelegateProxyType` protocol documentation. 23 | */ 24 | public var delegate: DelegateProxy { 25 | return RxWebViewDelegateProxy.proxyForObject(base) 26 | } 27 | /** 28 | Reactive wrapper for `delegate` message. 29 | */ 30 | public var didStartLoad: Observable { 31 | return delegate 32 | .methodInvoked(#selector(UIWebViewDelegate.webViewDidStartLoad(_:))) 33 | .map {_ in} 34 | } 35 | /** 36 | Reactive wrapper for `delegate` message. 37 | */ 38 | public var didFinishLoad: Observable { 39 | return delegate 40 | .methodInvoked(#selector(UIWebViewDelegate.webViewDidFinishLoad(_:))) 41 | .map {_ in} 42 | } 43 | /** 44 | Reactive wrapper for `delegate` message. 45 | */ 46 | public var didFailLoad: Observable { 47 | return delegate 48 | .methodInvoked(#selector(UIWebViewDelegate.webView(_:didFailLoadWithError:))) 49 | .map { a in 50 | return try castOrThrow(Error.self, a[1]) 51 | } 52 | } 53 | } 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /Pods/RxSwift/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Sequence that repeats `repeatedValue` infinite number of times. 12 | struct InfiniteSequence : Sequence { 13 | typealias Element = E 14 | typealias Iterator = AnyIterator 15 | 16 | private let _repeatedValue: E 17 | 18 | init(repeatedValue: E) { 19 | _repeatedValue = repeatedValue 20 | } 21 | 22 | func makeIterator() -> Iterator { 23 | let repeatedValue = _repeatedValue 24 | return AnyIterator { 25 | return repeatedValue 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Dispatch 11 | 12 | extension DispatchQueue { 13 | private static var token: DispatchSpecificKey<()> = { 14 | let key = DispatchSpecificKey<()>() 15 | DispatchQueue.main.setSpecific(key: key, value: ()) 16 | return key 17 | }() 18 | 19 | static var isMain: Bool { 20 | return DispatchQueue.getSpecific(key: token) != nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | typealias AtomicInt = Int32 15 | 16 | let AtomicCompareAndSwap = OSAtomicCompareAndSwap32Barrier 17 | let AtomicIncrement = OSAtomicIncrement32Barrier 18 | let AtomicDecrement = OSAtomicDecrement32Barrier 19 | 20 | extension Thread { 21 | 22 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String 23 | ) { 24 | let currentThread = Thread.current 25 | let threadDictionary = currentThread.threadDictionary 26 | 27 | if let newValue = value { 28 | threadDictionary[key] = newValue 29 | } 30 | else { 31 | threadDictionary[key] = nil 32 | } 33 | 34 | } 35 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 36 | let currentThread = Thread.current 37 | let threadDictionary = currentThread.threadDictionary 38 | 39 | return threadDictionary[key] as? T 40 | } 41 | } 42 | 43 | extension AtomicInt { 44 | func valueSnapshot() -> Int32 { 45 | return self 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents disposable resource with state tracking. 12 | public protocol Cancelable : Disposable { 13 | /// Was resource disposed. 14 | var isDisposed: Bool { get } 15 | } 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/Lock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lock.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol Lock { 12 | func lock() 13 | func unlock() 14 | } 15 | 16 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html 17 | typealias SpinLock = NSRecursiveLock 18 | 19 | extension NSRecursiveLock : Lock { 20 | @inline(__always) 21 | func performLocked(_ action: () -> Void) { 22 | lock(); defer { unlock() } 23 | action() 24 | } 25 | 26 | @inline(__always) 27 | func calculateLocked(_ action: () -> T) -> T { 28 | lock(); defer { unlock() } 29 | return action() 30 | } 31 | 32 | @inline(__always) 33 | func calculateLockedOrFail(_ action: () throws -> T) throws -> T { 34 | lock(); defer { unlock() } 35 | let result = try action() 36 | return result 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(_ event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(_ event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedSubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedSubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedSubscribeType : class, ObservableType, Lock { 12 | func _synchronized_subscribe(_ observer: O) -> Disposable where O.E == E 13 | } 14 | 15 | extension SynchronizedSubscribeType { 16 | func synchronizedSubscribe(_ observer: O) -> Disposable where O.E == E { 17 | lock(); defer { unlock() } 18 | return _synchronized_subscribe(observer) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 15 | } 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ConnectableObservableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence. 13 | */ 14 | public protocol ConnectableObservableType : ObservableType { 15 | /** 16 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. 17 | 18 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. 19 | */ 20 | func connect() -> Disposable 21 | } 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BinaryDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents two disposable resources that are disposed together. 12 | private final class BinaryDisposable : DisposeBase, Cancelable { 13 | 14 | private var _isDisposed: AtomicInt = 0 15 | 16 | // state 17 | private var _disposable1: Disposable? 18 | private var _disposable2: Disposable? 19 | 20 | /// - returns: Was resource disposed. 21 | var isDisposed: Bool { 22 | return _isDisposed > 0 23 | } 24 | 25 | /// Constructs new binary disposable from two disposables. 26 | /// 27 | /// - parameter disposable1: First disposable 28 | /// - parameter disposable2: Second disposable 29 | init(_ disposable1: Disposable, _ disposable2: Disposable) { 30 | _disposable1 = disposable1 31 | _disposable2 = disposable2 32 | super.init() 33 | } 34 | 35 | /// Calls the disposal action if and only if the current instance hasn't been disposed yet. 36 | /// 37 | /// After invoking disposal action, disposal action will be dereferenced. 38 | func dispose() { 39 | if AtomicCompareAndSwap(0, 1, &_isDisposed) { 40 | _disposable1?.dispose() 41 | _disposable2?.dispose() 42 | _disposable1 = nil 43 | _disposable2 = nil 44 | } 45 | } 46 | } 47 | 48 | extension Disposables { 49 | 50 | /// Creates a disposable with the given disposables. 51 | public static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable { 52 | return BinaryDisposable(disposable1, disposable2) 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BooleanDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 10/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents a disposable resource that can be checked for disposal status. 12 | public final class BooleanDisposable : Disposable, Cancelable { 13 | 14 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true) 15 | private var _isDisposed = false 16 | 17 | /// Initializes a new instance of the `BooleanDisposable` class 18 | public init() { 19 | } 20 | 21 | /// Initializes a new instance of the `BooleanDisposable` class with given value 22 | public init(isDisposed: Bool) { 23 | self._isDisposed = isDisposed 24 | } 25 | 26 | /// - returns: Was resource disposed. 27 | public var isDisposed: Bool { 28 | return _isDisposed 29 | } 30 | 31 | /// Sets the status to disposed, which can be observer through the `isDisposed` property. 32 | public func dispose() { 33 | _isDisposed = true 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/Disposables.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposables.swift 3 | // RxSwift 4 | // 5 | // Created by Mohsen Ramezanpoor on 01/08/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// A collection of utility methods for common disposable operations. 12 | public struct Disposables { 13 | private init() {} 14 | } 15 | 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Base class for all disposables. 12 | public class DisposeBase { 13 | init() { 14 | #if TRACE_RESOURCES 15 | let _ = Resources.incrementTotal() 16 | #endif 17 | } 18 | 19 | deinit { 20 | #if TRACE_RESOURCES 21 | let _ = Resources.decrementTotal() 22 | #endif 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NopDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents a disposable that does nothing on disposal. 12 | /// 13 | /// Nop = No Operation 14 | fileprivate struct NopDisposable : Disposable { 15 | 16 | fileprivate static let noOp: Disposable = NopDisposable() 17 | 18 | fileprivate init() { 19 | 20 | } 21 | 22 | /// Does nothing. 23 | public func dispose() { 24 | } 25 | } 26 | 27 | extension Disposables { 28 | /** 29 | Creates a disposable that does nothing on disposal. 30 | */ 31 | static public func create() -> Disposable { 32 | return NopDisposable.noOp 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | private let disposeScheduledDisposable: (ScheduledDisposable) -> Disposable = { sd in 12 | sd.disposeInner() 13 | return Disposables.create() 14 | } 15 | 16 | /// Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler. 17 | public final class ScheduledDisposable : Cancelable { 18 | public let scheduler: ImmediateSchedulerType 19 | 20 | private var _isDisposed: AtomicInt = 0 21 | 22 | // state 23 | private var _disposable: Disposable? 24 | 25 | /// - returns: Was resource disposed. 26 | public var isDisposed: Bool { 27 | return _isDisposed == 1 28 | } 29 | 30 | /** 31 | Initializes a new instance of the `ScheduledDisposable` that uses a `scheduler` on which to dispose the `disposable`. 32 | 33 | - parameter scheduler: Scheduler where the disposable resource will be disposed on. 34 | - parameter disposable: Disposable resource to dispose on the given scheduler. 35 | */ 36 | public init(scheduler: ImmediateSchedulerType, disposable: Disposable) { 37 | self.scheduler = scheduler 38 | _disposable = disposable 39 | } 40 | 41 | /// Disposes the wrapped disposable on the provided scheduler. 42 | public func dispose() { 43 | let _ = scheduler.schedule(self, action: disposeScheduledDisposable) 44 | } 45 | 46 | func disposeInner() { 47 | if AtomicCompareAndSwap(0, 1, &_isDisposed) { 48 | _disposable!.dispose() 49 | _disposable = nil 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Errors.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Errors.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | let RxErrorDomain = "RxErrorDomain" 12 | let RxCompositeFailures = "RxCompositeFailures" 13 | 14 | /// Generic Rx error codes. 15 | public enum RxError 16 | : Swift.Error 17 | , CustomDebugStringConvertible { 18 | /// Unknown error occured. 19 | case unknown 20 | /// Performing an action on disposed object. 21 | case disposed(object: AnyObject) 22 | /// Aritmetic overflow error. 23 | case overflow 24 | /// Argument out of range error. 25 | case argumentOutOfRange 26 | /// Sequence doesn't contain any elements. 27 | case noElements 28 | /// Sequence contains more than one element. 29 | case moreThanOneElement 30 | /// Timeout error. 31 | case timeout 32 | } 33 | 34 | extension RxError { 35 | /// A textual representation of `self`, suitable for debugging. 36 | public var debugDescription: String { 37 | switch self { 38 | case .unknown: 39 | return "Unknown error occured." 40 | case .disposed(let object): 41 | return "Object `\(object)` was already disposed." 42 | case .overflow: 43 | return "Arithmetic overflow occured." 44 | case .argumentOutOfRange: 45 | return "Argument out of range." 46 | case .noElements: 47 | return "Sequence doesn't contain any elements." 48 | case .moreThanOneElement: 49 | return "Sequence contains more than one element." 50 | case .timeout: 51 | return "Sequence timeout." 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bag+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/19/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | 12 | // MARK: forEach 13 | 14 | extension Bag where T: ObserverType { 15 | /// Dispatches `event` to app observers contained inside bag. 16 | /// 17 | /// - parameter action: Enumeration closure. 18 | func on(_ event: Event) { 19 | if _onlyFastPath { 20 | _value0?.on(event) 21 | return 22 | } 23 | 24 | let value0 = _value0 25 | let dictionary = _dictionary 26 | 27 | if let value0 = value0 { 28 | value0.on(event) 29 | } 30 | 31 | if let dictionary = dictionary { 32 | for element in dictionary.values { 33 | element.on(event) 34 | } 35 | } 36 | } 37 | } 38 | 39 | /// Dispatches `dispose` to all disposables contained inside bag. 40 | func disposeAll(in bag: Bag) { 41 | if bag._onlyFastPath { 42 | bag._value0?.dispose() 43 | return 44 | } 45 | 46 | let value0 = bag._value0 47 | let dictionary = bag._dictionary 48 | 49 | if let value0 = value0 { 50 | value0.dispose() 51 | } 52 | 53 | if let dictionary = dictionary { 54 | for element in dictionary.values { 55 | element.dispose() 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Extensions/String+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension String { 12 | /// This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)` 13 | func lastIndexOf(_ character: Character) -> Index? { 14 | var index = endIndex 15 | while index > startIndex { 16 | index = self.index(before: index) 17 | if self[index] == character { 18 | return index 19 | } 20 | } 21 | 22 | return nil 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ImmediateSchedulerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 5/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents an object that immediately schedules units of work. 12 | public protocol ImmediateSchedulerType { 13 | /** 14 | Schedules an action to be executed immediatelly. 15 | 16 | - parameter state: State passed to the action to be executed. 17 | - parameter action: Action to be executed. 18 | - returns: The disposable object used to cancel the scheduled action (best effort). 19 | */ 20 | func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable 21 | } 22 | 23 | extension ImmediateSchedulerType { 24 | /** 25 | Schedules an action to be executed recursively. 26 | 27 | - parameter state: State passed to the action to be executed. 28 | - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state. 29 | - returns: The disposable object used to cancel the scheduled action (best effort). 30 | */ 31 | public func scheduleRecursive(_ state: State, action: @escaping (_ state: State, _ recurse: (State) -> ()) -> ()) -> Disposable { 32 | let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self) 33 | 34 | recursiveScheduler.schedule(state) 35 | 36 | return Disposables.create(with: recursiveScheduler.dispose) 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// A type-erased `ObservableType`. 12 | /// 13 | /// It represents a push style sequence. 14 | public class Observable : ObservableType { 15 | /// Type of elements in sequence. 16 | public typealias E = Element 17 | 18 | init() { 19 | #if TRACE_RESOURCES 20 | let _ = Resources.incrementTotal() 21 | #endif 22 | } 23 | 24 | public func subscribe(_ observer: O) -> Disposable where O.E == E { 25 | abstractMethod() 26 | } 27 | 28 | public func asObservable() -> Observable { 29 | return self 30 | } 31 | 32 | deinit { 33 | #if TRACE_RESOURCES 34 | let _ = Resources.decrementTotal() 35 | #endif 36 | } 37 | 38 | // this is kind of ugly I know :( 39 | // Swift compiler reports "Not supported yet" when trying to override protocol extensions, so ¯\_(ツ)_/¯ 40 | 41 | /// Optimizations for map operator 42 | internal func composeMap(_ selector: @escaping (Element) throws -> R) -> Observable { 43 | return Map(source: self, transform: selector) 44 | } 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Type that can be converted to observable sequence (`Observer`). 12 | public protocol ObservableConvertibleType { 13 | /// Type of elements in sequence. 14 | associatedtype E 15 | 16 | /// Converts `self` to `Observable` sequence. 17 | /// 18 | /// - returns: Observable sequence that represents `self`. 19 | func asObservable() -> Observable 20 | } 21 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/AddRef.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AddRef.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 30/10/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class AddRefSink : Sink, ObserverType { 12 | typealias Element = O.E 13 | 14 | override init(observer: O, cancel: Cancelable) { 15 | super.init(observer: observer, cancel: cancel) 16 | } 17 | 18 | func on(_ event: Event) { 19 | switch event { 20 | case .next(_): 21 | forwardOn(event) 22 | case .completed, .error(_): 23 | forwardOn(event) 24 | dispose() 25 | } 26 | } 27 | } 28 | 29 | class AddRef : Producer { 30 | typealias EventHandler = (Event) throws -> Void 31 | 32 | private let _source: Observable 33 | private let _refCount: RefCountDisposable 34 | 35 | init(source: Observable, refCount: RefCountDisposable) { 36 | _source = source 37 | _refCount = refCount 38 | } 39 | 40 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element { 41 | let releaseDisposable = _refCount.retain() 42 | let sink = AddRefSink(observer: observer, cancel: cancel) 43 | let subscription = Disposables.create(releaseDisposable, _source.subscribeSafe(sink)) 44 | 45 | return (sink: sink, subscription: subscription) 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/AnonymousObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObservable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class AnonymousObservableSink : Sink, ObserverType { 12 | typealias E = O.E 13 | typealias Parent = AnonymousObservable 14 | 15 | // state 16 | private var _isStopped: AtomicInt = 0 17 | 18 | override init(observer: O, cancel: Cancelable) { 19 | super.init(observer: observer, cancel: cancel) 20 | } 21 | 22 | func on(_ event: Event) { 23 | switch event { 24 | case .next: 25 | if _isStopped == 1 { 26 | return 27 | } 28 | forwardOn(event) 29 | case .error, .completed: 30 | if AtomicCompareAndSwap(0, 1, &_isStopped) { 31 | forwardOn(event) 32 | dispose() 33 | } 34 | } 35 | } 36 | 37 | func run(_ parent: Parent) -> Disposable { 38 | return parent._subscribeHandler(AnyObserver(self)) 39 | } 40 | } 41 | 42 | class AnonymousObservable : Producer { 43 | typealias SubscribeHandler = (AnyObserver) -> Disposable 44 | 45 | let _subscribeHandler: SubscribeHandler 46 | 47 | init(_ subscribeHandler: @escaping SubscribeHandler) { 48 | _subscribeHandler = subscribeHandler 49 | } 50 | 51 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element { 52 | let sink = AnonymousObservableSink(observer: observer, cancel: cancel) 53 | let subscription = sink.run(self) 54 | return (sink: sink, subscription: subscription) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/DelaySubscription.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DelaySubscription.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class DelaySubscriptionSink 12 | : Sink, ObserverType { 13 | typealias E = O.E 14 | typealias Parent = DelaySubscription 15 | 16 | private let _parent: Parent 17 | 18 | init(parent: Parent, observer: O, cancel: Cancelable) { 19 | _parent = parent 20 | super.init(observer: observer, cancel: cancel) 21 | } 22 | 23 | func on(_ event: Event) { 24 | forwardOn(event) 25 | if event.isStopEvent { 26 | dispose() 27 | } 28 | } 29 | 30 | } 31 | 32 | class DelaySubscription: Producer { 33 | private let _source: Observable 34 | private let _dueTime: RxTimeInterval 35 | private let _scheduler: SchedulerType 36 | 37 | init(source: Observable, dueTime: RxTimeInterval, scheduler: SchedulerType) { 38 | _source = source 39 | _dueTime = dueTime 40 | _scheduler = scheduler 41 | } 42 | 43 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element { 44 | let sink = DelaySubscriptionSink(parent: self, observer: observer, cancel: cancel) 45 | let subscription = _scheduler.scheduleRelative((), dueTime: _dueTime) { _ in 46 | return self._source.subscribe(sink) 47 | } 48 | 49 | return (sink: sink, subscription: subscription) 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 13 | observer.on(.completed) 14 | return Disposables.create() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: Swift.Error 13 | 14 | init(error: Swift.Error) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 19 | observer.on(.error(_error)) 20 | return Disposables.create() 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 13 | return Disposables.create() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/Repeat.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Repeat.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class RepeatElement : Producer { 12 | fileprivate let _element: Element 13 | fileprivate let _scheduler: ImmediateSchedulerType 14 | 15 | init(element: Element, scheduler: ImmediateSchedulerType) { 16 | _element = element 17 | _scheduler = scheduler 18 | } 19 | 20 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element { 21 | let sink = RepeatElementSink(parent: self, observer: observer, cancel: cancel) 22 | let subscription = sink.run() 23 | 24 | return (sink: sink, subscription: subscription) 25 | } 26 | } 27 | 28 | class RepeatElementSink : Sink { 29 | typealias Parent = RepeatElement 30 | 31 | private let _parent: Parent 32 | 33 | init(parent: Parent, observer: O, cancel: Cancelable) { 34 | _parent = parent 35 | super.init(observer: observer, cancel: cancel) 36 | } 37 | 38 | func run() -> Disposable { 39 | return _parent._scheduler.scheduleRecursive(_parent._element) { e, recurse in 40 | self.forwardOn(.next(e)) 41 | recurse(e) 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/Sequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sequence.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class ObservableSequenceSink : Sink where S.Iterator.Element == O.E { 12 | typealias Parent = ObservableSequence 13 | 14 | private let _parent: Parent 15 | 16 | init(parent: Parent, observer: O, cancel: Cancelable) { 17 | _parent = parent 18 | super.init(observer: observer, cancel: cancel) 19 | } 20 | 21 | func run() -> Disposable { 22 | return _parent._scheduler.scheduleRecursive((_parent._elements.makeIterator(), _parent._elements)) { (iterator, recurse) in 23 | var mutableIterator = iterator 24 | if let next = mutableIterator.0.next() { 25 | self.forwardOn(.next(next)) 26 | recurse(mutableIterator) 27 | } 28 | else { 29 | self.forwardOn(.completed) 30 | } 31 | } 32 | } 33 | } 34 | 35 | class ObservableSequence : Producer { 36 | fileprivate let _elements: S 37 | fileprivate let _scheduler: ImmediateSchedulerType 38 | 39 | init(elements: S, scheduler: ImmediateSchedulerType) { 40 | _elements = elements 41 | _scheduler = scheduler 42 | } 43 | 44 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == E { 45 | let sink = ObservableSequenceSink(parent: self, observer: observer, cancel: cancel) 46 | let subscription = sink.run() 47 | return (sink: sink, subscription: subscription) 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/Sink.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sink.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Sink : Disposable { 12 | fileprivate let _observer: O 13 | fileprivate let _cancel: Cancelable 14 | fileprivate var _disposed: Bool 15 | 16 | init(observer: O, cancel: Cancelable) { 17 | #if TRACE_RESOURCES 18 | let _ = Resources.incrementTotal() 19 | #endif 20 | _observer = observer 21 | _cancel = cancel 22 | _disposed = false 23 | } 24 | 25 | final func forwardOn(_ event: Event) { 26 | if _disposed { 27 | return 28 | } 29 | _observer.on(event) 30 | } 31 | 32 | final func forwarder() -> SinkForward { 33 | return SinkForward(forward: self) 34 | } 35 | 36 | var disposed: Bool { 37 | return _disposed 38 | } 39 | 40 | func dispose() { 41 | _disposed = true 42 | _cancel.dispose() 43 | } 44 | 45 | deinit { 46 | #if TRACE_RESOURCES 47 | let _ = Resources.decrementTotal() 48 | #endif 49 | } 50 | } 51 | 52 | class SinkForward: ObserverType { 53 | typealias E = O.E 54 | 55 | private let _forward: Sink 56 | 57 | init(forward: Sink) { 58 | _forward = forward 59 | } 60 | 61 | func on(_ event: Event) { 62 | switch event { 63 | case .next: 64 | _forward._observer.on(event) 65 | case .error, .completed: 66 | _forward._observer.on(event) 67 | _forward._cancel.dispose() 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/StartWith.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StartWith.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class StartWith: Producer { 12 | let elements: [Element] 13 | let source: Observable 14 | 15 | init(source: Observable, elements: [Element]) { 16 | self.source = source 17 | self.elements = elements 18 | super.init() 19 | } 20 | 21 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element { 22 | for e in elements { 23 | observer.on(.next(e)) 24 | } 25 | 26 | return (sink: Disposables.create(), subscription: source.subscribe(observer)) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Implementations/ToArray.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ToArray.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 20/10/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class ToArraySink : Sink, ObserverType where O.E == [SourceType] { 12 | typealias Parent = ToArray 13 | 14 | let _parent: Parent 15 | var _list = Array() 16 | 17 | init(parent: Parent, observer: O, cancel: Cancelable) { 18 | _parent = parent 19 | 20 | super.init(observer: observer, cancel: cancel) 21 | } 22 | 23 | func on(_ event: Event) { 24 | switch event { 25 | case .next(let value): 26 | self._list.append(value) 27 | case .error(let e): 28 | forwardOn(.error(e)) 29 | self.dispose() 30 | case .completed: 31 | forwardOn(.next(_list)) 32 | forwardOn(.completed) 33 | self.dispose() 34 | } 35 | } 36 | } 37 | 38 | class ToArray : Producer<[SourceType]> { 39 | let _source: Observable 40 | 41 | init(source: Observable) { 42 | _source = source 43 | } 44 | 45 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == [SourceType] { 46 | let sink = ToArraySink(parent: self, observer: observer, cancel: cancel) 47 | let subscription = _source.subscribe(sink) 48 | return (sink: sink, subscription: subscription) 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Observable+Debug.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable+Debug.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 5/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | // MARK: debug 12 | 13 | extension ObservableType { 14 | 15 | /** 16 | Prints received events for all observers on standard output. 17 | 18 | - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html) 19 | 20 | - parameter identifier: Identifier that is printed together with event description to standard output. 21 | - parameter trimOutput: Should output be trimmed to max 40 characters. 22 | - returns: An observable sequence whose events are printed to standard output. 23 | */ 24 | public func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function) 25 | -> Observable { 26 | return Debug(source: self, identifier: identifier, trimOutput: trimOutput, file: file, line: line, function: function) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ObserverType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Supports push-style iteration over an observable sequence. 12 | public protocol ObserverType { 13 | /// The type of elements in sequence that observer can observe. 14 | associatedtype E 15 | 16 | /// Notify observer about sequence event. 17 | /// 18 | /// - parameter event: Event that occured. 19 | func on(_ event: Event) 20 | } 21 | 22 | /// Convenience API extensions to provide alternate next, error, completed events 23 | extension ObserverType { 24 | 25 | /// Convenience method equivalent to `on(.next(element: E))` 26 | /// 27 | /// - parameter element: Next element to send to observer(s) 28 | public final func onNext(_ element: E) { 29 | on(.next(element)) 30 | } 31 | 32 | /// Convenience method equivalent to `on(.completed)` 33 | public final func onCompleted() { 34 | on(.completed) 35 | } 36 | 37 | /// Convenience method equivalent to `on(.error(Swift.Error))` 38 | /// - parameter error: Swift.Error to send to observer(s) 39 | public final func onError(_ error: Swift.Error) { 40 | on(.error(error)) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObserver.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class AnonymousObserver : ObserverBase { 12 | typealias Element = ElementType 13 | 14 | typealias EventHandler = (Event) -> Void 15 | 16 | private let _eventHandler : EventHandler 17 | 18 | init(_ eventHandler: @escaping EventHandler) { 19 | #if TRACE_RESOURCES 20 | let _ = Resources.incrementTotal() 21 | #endif 22 | _eventHandler = eventHandler 23 | } 24 | 25 | override func onCore(_ event: Event) { 26 | return _eventHandler(event) 27 | } 28 | 29 | #if TRACE_RESOURCES 30 | deinit { 31 | let _ = Resources.decrementTotal() 32 | } 33 | #endif 34 | } 35 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observers/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class ObserverBase : Disposable, ObserverType { 12 | typealias E = ElementType 13 | 14 | private var _isStopped: AtomicInt = 0 15 | 16 | func on(_ event: Event) { 17 | switch event { 18 | case .next: 19 | if _isStopped == 0 { 20 | onCore(event) 21 | } 22 | case .error, .completed: 23 | 24 | if !AtomicCompareAndSwap(0, 1, &_isStopped) { 25 | return 26 | } 27 | 28 | onCore(event) 29 | } 30 | } 31 | 32 | func onCore(_ event: Event) { 33 | abstractMethod() 34 | } 35 | 36 | func dispose() { 37 | _ = AtomicCompareAndSwap(0, 1, &_isStopped) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxMutableBox.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 5/22/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Creates mutable reference wrapper for any type. 12 | class RxMutableBox : CustomDebugStringConvertible { 13 | /// Wrapped value 14 | var value : T 15 | 16 | /// Creates reference wrapper for `value`. 17 | /// 18 | /// - parameter value: Value to wrap. 19 | init (_ value: T) { 20 | self.value = value 21 | } 22 | } 23 | 24 | extension RxMutableBox { 25 | /// - returns: Box description. 26 | var debugDescription: String { 27 | return "MutatingBox(\(self.value))" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HistoricalScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/27/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` for relative time. 12 | public class HistoricalScheduler : VirtualTimeScheduler { 13 | 14 | /** 15 | Creates a new historical scheduler with initial clock value. 16 | 17 | - parameter initialClock: Initial value for virtual clock. 18 | */ 19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) { 20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/ImmediateScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ImmediateScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents an object that schedules units of work to run immediately on the current thread. 12 | private class ImmediateScheduler : ImmediateSchedulerType { 13 | 14 | private let _asyncLock = AsyncLock() 15 | 16 | /** 17 | Schedules an action to be executed immediatelly. 18 | 19 | In case `schedule` is called recursively from inside of `action` callback, scheduled `action` will be enqueued 20 | and executed after current `action`. (`AsyncLock` behavior) 21 | 22 | - parameter state: State passed to the action to be executed. 23 | - parameter action: Action to be executed. 24 | - returns: The disposable object used to cancel the scheduled action (best effort). 25 | */ 26 | func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable { 27 | let disposable = SingleAssignmentDisposable() 28 | _asyncLock.invoke(AnonymousInvocable { 29 | if disposable.isDisposed { 30 | return 31 | } 32 | disposable.setDisposable(action(state)) 33 | }) 34 | 35 | return disposable 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: @escaping () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(_ value: Value) 19 | } 20 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct ScheduledItem 12 | : ScheduledItemType 13 | , InvocableType { 14 | typealias Action = (T) -> Disposable 15 | 16 | private let _action: Action 17 | private let _state: T 18 | 19 | private let _disposable = SingleAssignmentDisposable() 20 | 21 | var isDisposed: Bool { 22 | return _disposable.isDisposed 23 | } 24 | 25 | init(action: @escaping Action, state: T) { 26 | _action = action 27 | _state = state 28 | } 29 | 30 | func invoke() { 31 | _disposable.setDisposable(_action(_state)) 32 | } 33 | 34 | func dispose() { 35 | _disposable.dispose() 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Subjects/SubjectType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubjectType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Represents an object that is both an observable sequence as well as an observer. 12 | public protocol SubjectType : ObservableType { 13 | /// The type of the observer that represents this subject. 14 | /// 15 | /// Usually this type is type of subject itself, but it doesn't have to be. 16 | associatedtype SubjectObserverType : ObserverType 17 | 18 | /// Returns observer interface for subject. 19 | /// 20 | /// - returns: Observer interface for subject. 21 | func asObserver() -> SubjectObserverType 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Subjects/Variable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Variable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Variable is a wrapper for `BehaviorSubject`. 12 | /// 13 | /// Unlike `BehaviorSubject` it can't terminate with error, and when variable is deallocated 14 | /// it will complete it's observable sequence (`asObservable`). 15 | public class Variable { 16 | 17 | public typealias E = Element 18 | 19 | private let _subject: BehaviorSubject 20 | 21 | private var _lock = SpinLock() 22 | 23 | // state 24 | private var _value: E 25 | 26 | /// Gets or sets current value of variable. 27 | /// 28 | /// Whenever a new value is set, all the observers are notified of the change. 29 | /// 30 | /// Even if the newly set value is same as the old value, observers are still notified for change. 31 | public var value: E { 32 | get { 33 | _lock.lock(); defer { _lock.unlock() } 34 | return _value 35 | } 36 | set(newValue) { 37 | _lock.lock() 38 | _value = newValue 39 | _lock.unlock() 40 | 41 | _subject.on(.next(newValue)) 42 | } 43 | } 44 | 45 | /// Initializes variable with initial value. 46 | /// 47 | /// - parameter value: Initial variable value. 48 | public init(_ value: Element) { 49 | _value = value 50 | _subject = BehaviorSubject(value: value) 51 | } 52 | 53 | /// - returns: Canonical interface for push style sequence 54 | public func asObservable() -> Observable { 55 | return _subject 56 | } 57 | 58 | deinit { 59 | _subject.on(.completed) 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/catchErrorJustComplete.swift: -------------------------------------------------------------------------------- 1 | // 2 | // catchErrorJustComplete.swift 3 | // RxSwiftExtDemo 4 | // 5 | // Created by Florent Pillet on 21/05/16. 6 | // Copyright © 2016 RxSwift Community. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | 12 | extension ObservableType { 13 | /** 14 | Dismiss errors and complete the sequence instead 15 | 16 | - returns: An observable sequence that never errors and completes when an error occurs in the underlying sequence 17 | */ 18 | public func catchErrorJustComplete() -> Observable { 19 | return catchError { _ in 20 | return Observable.empty() 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/ignore.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ignore.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Florent Pillet on 10/04/16. 6 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension ObservableType where E : Equatable { 13 | 14 | 15 | public func ignore(_ valuesToIgnore: E ...) -> Observable { 16 | return self.asObservable().filter { !valuesToIgnore.contains($0) } 17 | } 18 | 19 | 20 | public func ignore(_ valuesToIgnore : S) -> Observable where S.Iterator.Element == E { 21 | return self.asObservable().filter { !valuesToIgnore.contains($0) } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/ignoreErrors.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ignoreErrors.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Florent Pillet on 18/05/16. 6 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ObservableType { 12 | /** 13 | Unconditionally ignore all errors produced by the source observable, effectively producing a sequence 14 | that never fails (any error will simply have no effect on the sequence). 15 | 16 | - returns: An observable sequence that never fails 17 | - seealso: `retry` operator 18 | */ 19 | 20 | public func ignoreErrors() -> Observable { 21 | return retry() 22 | } 23 | 24 | /** 25 | Conditionally ignore errors produced by the source observable 26 | 27 | - parameter predicate a predicate called when an error occurs and returns `true` to ignore the error (continuing), `false` to terminate the sequence with the given error. 28 | - returns: An observable sequence that errors only when `predicate` returns `false` 29 | */ 30 | 31 | public func ignoreErrors(_ predicate : @escaping (Error) -> Bool) -> Observable { 32 | return retryWhen { 33 | return $0.flatMap { error -> Observable in 34 | return predicate(error) ? Observable.just(true) : Observable.error(error) 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/ignoreWhen.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ignoreWhen.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Florent Pillet on 14/04/16. 6 | // Copyright © 2016 RxSwift Community. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension ObservableType { 13 | 14 | /** 15 | Ignores the elements of an observable sequence based on a predicate. 16 | 17 | - seealso: [filter operator on reactivex.io](http://reactivex.io/documentation/operators/filter.html) 18 | - seealso: [ignoreElements operator on reactivex.io](http://reactivex.io/documentation/operators/ignoreelements.html) 19 | 20 | - parameter predicate: A function to test each source element for a condition. 21 | - returns: An observable sequence that contains elements from the input sequence except those that satisfy the condition. 22 | */ 23 | 24 | public func ignoreWhen(_ predicate: @escaping (E) throws -> Bool) -> Observable { 25 | return self.asObservable().filter { try !predicate($0) } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/mapTo.swift: -------------------------------------------------------------------------------- 1 | // 2 | // mapTo.swift 3 | // RxSwiftExtDemo 4 | // 5 | // Created by Marin Todorov on 4/12/16. 6 | // Copyright © 2016 RxSwift Community. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension ObservableType { 13 | 14 | /** 15 | Returns an observable sequence containing as many elements as its input but all of them are the constant provided as a parameter 16 | 17 | - parameter value: A constant that each element of the input sequence is being replaced with 18 | - returns: An observable sequence containing the values `value` provided as a parameter 19 | */ 20 | 21 | public func mapTo(_ value: R) -> Observable { 22 | return map {_ in value} 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/not.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ignore.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Thane Gill 18/04/16. 6 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension ObservableType where E == Bool { 13 | /// Boolean not operator 14 | public func not() -> Observable { 15 | return self.map(!) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/once.swift: -------------------------------------------------------------------------------- 1 | // 2 | // once.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Florent Pillet on 12/04/16. 6 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension Observable { 13 | 14 | /** 15 | Returns an observable sequence that contains a single element. This element will be delivered to the first observer 16 | that subscribes. Further subscriptions to the same observable will get an empty sequence. 17 | 18 | In most cases, you want to use `Observable.just()`. This one is really for specific cases where you need to guarantee 19 | unique delivery of a value. 20 | 21 | - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html) 22 | 23 | - parameter element: Single element in the resulting observable sequence. 24 | - returns: An observable sequence containing the single specified element delivered once. 25 | */ 26 | 27 | public static func once(_ element: E) -> Observable { 28 | var delivered : UInt32 = 0 29 | return create { observer in 30 | let wasDelivered = OSAtomicOr32OrigBarrier(1, &delivered) 31 | if wasDelivered == 0 { 32 | observer.onNext(element) 33 | } 34 | observer.onCompleted() 35 | return Disposables.create() 36 | } 37 | } 38 | 39 | } 40 | 41 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/pausable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // pausable.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Jesse Farless on 12/09/16. 6 | // Copyright © 2016 RxSwift Community. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension ObservableType { 13 | /** 14 | Pauses the elements of the source observable sequence based on the latest element from the second observable sequence. 15 | 16 | Elements are ignored unless the second sequence has most recently emitted `true`. 17 | 18 | - seealso: [pausable operator on reactivex.io](http://reactivex.io/documentation/operators/backpressure.html) 19 | 20 | - parameter pauser: The observable sequence used to pause the source observable sequence. 21 | - returns: The observable sequence which is paused based upon the pauser observable sequence. 22 | */ 23 | 24 | public func pausable (_ pauser: P) -> Observable where P.E == Bool { 25 | return withLatestFrom(pauser) { element, paused in 26 | (element, paused) 27 | }.filter { element, paused in 28 | paused 29 | }.map { element, paused in 30 | element 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/unwrap.swift: -------------------------------------------------------------------------------- 1 | // 2 | // unwrap.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Marin Todorov on 4/7/16. 6 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | public protocol Optionable 13 | { 14 | associatedtype WrappedType 15 | func unwrap() -> WrappedType 16 | func isEmpty() -> Bool 17 | } 18 | 19 | extension Optional : Optionable 20 | { 21 | public typealias WrappedType = Wrapped 22 | 23 | /** 24 | Force unwraps the contained value and returns it. Will crash if there's no value stored. 25 | 26 | - returns: Value of the contained type 27 | */ 28 | public func unwrap() -> WrappedType { 29 | return self! 30 | } 31 | 32 | /** 33 | Returns `true` if the Optional element is `nil` (if it does not contain a value) or `false` if the element *does* contain a value 34 | 35 | - returns: `true` if the Optional element is `nil`; false if it *does* have a value 36 | */ 37 | public func isEmpty() -> Bool { 38 | return self == nil 39 | } 40 | } 41 | 42 | extension ObservableType where E : Optionable { 43 | 44 | /** 45 | Takes a sequence of optional elements and returns a sequence of non-optional elements, filtering out any nil values. 46 | 47 | - returns: An observable sequence of non-optional elements 48 | */ 49 | 50 | public func unwrap() -> Observable { 51 | return self 52 | .filter { value in 53 | return !value.isEmpty() 54 | } 55 | .map { value -> E.WrappedType in 56 | value.unwrap() 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Pods/RxTest/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/RxTest/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Sequence that repeats `repeatedValue` infinite number of times. 12 | struct InfiniteSequence : Sequence { 13 | typealias Element = E 14 | typealias Iterator = AnyIterator 15 | 16 | private let _repeatedValue: E 17 | 18 | init(repeatedValue: E) { 19 | _repeatedValue = repeatedValue 20 | } 21 | 22 | func makeIterator() -> Iterator { 23 | let repeatedValue = _repeatedValue 24 | return AnyIterator { 25 | return repeatedValue 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxTest/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Dispatch 11 | 12 | extension DispatchQueue { 13 | private static var token: DispatchSpecificKey<()> = { 14 | let key = DispatchSpecificKey<()>() 15 | DispatchQueue.main.setSpecific(key: key, value: ()) 16 | return key 17 | }() 18 | 19 | static var isMain: Bool { 20 | return DispatchQueue.getSpecific(key: token) != nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxTest/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | typealias AtomicInt = Int32 15 | 16 | let AtomicCompareAndSwap = OSAtomicCompareAndSwap32Barrier 17 | let AtomicIncrement = OSAtomicIncrement32Barrier 18 | let AtomicDecrement = OSAtomicDecrement32Barrier 19 | 20 | extension Thread { 21 | 22 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String 23 | ) { 24 | let currentThread = Thread.current 25 | let threadDictionary = currentThread.threadDictionary 26 | 27 | if let newValue = value { 28 | threadDictionary[key] = newValue 29 | } 30 | else { 31 | threadDictionary[key] = nil 32 | } 33 | 34 | } 35 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 36 | let currentThread = Thread.current 37 | let threadDictionary = currentThread.threadDictionary 38 | 39 | return threadDictionary[key] as? T 40 | } 41 | } 42 | 43 | extension AtomicInt { 44 | func valueSnapshot() -> Int32 { 45 | return self 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/Any+Equatable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Any+Equatable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// A way to use built in XCTest methods with objects that are partially equatable. 12 | /// 13 | /// If this can be done simpler, PRs are welcome :) 14 | struct AnyEquatable 15 | : Equatable { 16 | typealias Comparer = (Target, Target) -> Bool 17 | 18 | let _target: Target 19 | let _comparer: Comparer 20 | 21 | init(target: Target, comparer: @escaping Comparer) { 22 | _target = target 23 | _comparer = comparer 24 | } 25 | } 26 | 27 | func == (lhs: AnyEquatable, rhs: AnyEquatable) -> Bool { 28 | return lhs._comparer(lhs._target, rhs._target) 29 | } 30 | 31 | extension AnyEquatable 32 | : CustomDebugStringConvertible 33 | , CustomStringConvertible { 34 | var description: String { 35 | return "\(_target)" 36 | } 37 | 38 | var debugDescription: String { 39 | return "\(_target)" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/ColdObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ColdObservable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 3/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// A representation of cold observable sequence. 12 | /// 13 | /// Recorded events are replayed after subscription once per subscriber. 14 | /// 15 | /// Event times represent relative offset to subscription time. 16 | class ColdObservable 17 | : TestableObservable { 18 | 19 | override init(testScheduler: TestScheduler, recordedEvents: [Recorded>]) { 20 | super.init(testScheduler: testScheduler, recordedEvents: recordedEvents) 21 | } 22 | 23 | /// Subscribes `observer` to receive events for this sequence. 24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 25 | subscriptions.append(Subscription(testScheduler.clock)) 26 | 27 | let i = self.subscriptions.count - 1 28 | 29 | for recordedEvent in recordedEvents { 30 | _ = testScheduler.scheduleRelativeVirtual((), dueTime: recordedEvent.time, action: { (_) in 31 | observer.on(recordedEvent.value) 32 | return Disposables.create() 33 | }) 34 | } 35 | 36 | return Disposables.create { 37 | let existing = self.subscriptions[i] 38 | self.subscriptions[i] = Subscription(existing.subscribe, self.testScheduler.clock) 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/Event+Equatable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Event+Equatable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /// Compares two events. They are equal if they are both the same member of `Event` enumeration. 13 | /// 14 | /// In case `Error` events are being compared, they are equal in case their `NSError` representations are equal (domain and code) 15 | /// and their string representations are equal. 16 | public func == (lhs: Event, rhs: Event) -> Bool { 17 | switch (lhs, rhs) { 18 | case (.completed, .completed): return true 19 | case (.error(let e1), .error(let e2)): 20 | #if os(Linux) 21 | return "\(e1)" == "\(e2)" 22 | #else 23 | let error1 = e1 as NSError 24 | let error2 = e2 as NSError 25 | 26 | return error1.domain == error2.domain 27 | && error1.code == error2.code 28 | && "\(e1)" == "\(e2)" 29 | #endif 30 | case (.next(let v1), .next(let v2)): return v1 == v2 31 | default: return false 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/Recorded.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Recorded.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 2/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | import Swift 12 | 13 | /// Record of a value including the virtual time it was produced on. 14 | public struct Recorded 15 | : CustomDebugStringConvertible { 16 | 17 | /// Gets the virtual time the value was produced on. 18 | public let time: TestTime 19 | 20 | /// Gets the recorded value. 21 | public let value: Value 22 | 23 | public init(time: TestTime, value: Value) { 24 | self.time = time 25 | self.value = value 26 | } 27 | } 28 | 29 | extension Recorded { 30 | /// A textual representation of `self`, suitable for debugging. 31 | public var debugDescription: String { 32 | return "\(value) @ \(time)" 33 | } 34 | } 35 | 36 | public func == (lhs: Recorded, rhs: Recorded) -> Bool { 37 | return lhs.time == rhs.time && lhs.value == rhs.value 38 | } 39 | 40 | public func == (lhs: Recorded>, rhs: Recorded>) -> Bool { 41 | return lhs.time == rhs.time && lhs.value == rhs.value 42 | } 43 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTests.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Virtual time type. 12 | public typealias TestTime = Int 13 | 14 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/TestableObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestableObservable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /// Observable sequence that records subscription lifetimes and timestamped events sent to observers. 13 | public class TestableObservable 14 | : ObservableType { 15 | public typealias E = Element 16 | /// Subscriptions recorded during observable lifetime. 17 | public internal(set) var subscriptions: [Subscription] 18 | 19 | /// List of events to replay for all subscribers. 20 | /// 21 | /// Event times represent absolute `TestScheduler` time. 22 | public internal(set) var recordedEvents: [Recorded>] 23 | 24 | /// Parent test scheduler. 25 | internal let testScheduler: TestScheduler 26 | 27 | init(testScheduler: TestScheduler, recordedEvents: [Recorded>]) { 28 | self.testScheduler = testScheduler 29 | self.recordedEvents = recordedEvents 30 | self.subscriptions = [] 31 | } 32 | 33 | public func subscribe(_ observer: O) -> Disposable where O.E == Element { 34 | fatalError("Abstract method") 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/TestableObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestableObserver.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /// Observer that records events together with virtual time when they were received. 13 | public class TestableObserver 14 | : ObserverType { 15 | public typealias Element = ElementType 16 | 17 | fileprivate let _scheduler: TestScheduler 18 | 19 | /// Recorded events. 20 | public fileprivate(set) var events = [Recorded>]() 21 | 22 | init(scheduler: TestScheduler) { 23 | _scheduler = scheduler 24 | } 25 | 26 | /// Notify observer about sequence event. 27 | /// 28 | /// - parameter event: Event that occured. 29 | public func on(_ event: Event) { 30 | events.append(Recorded(time: _scheduler.clock, value: event)) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double ActionVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Action 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.2.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MockUIAlertController : NSObject 3 | @end 4 | @implementation PodsDummy_MockUIAlertController 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "QCOMockAlertVerifier.h" 6 | #import "QCOMockPopoverPresentationController.h" 7 | 8 | FOUNDATION_EXPORT double MockUIAlertControllerVersionNumber; 9 | FOUNDATION_EXPORT const unsigned char MockUIAlertControllerVersionString[]; 10 | 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController.modulemap: -------------------------------------------------------------------------------- 1 | framework module MockUIAlertController { 2 | umbrella header "MockUIAlertController-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_NSObject_Rx : NSObject 3 | @end 4 | @implementation PodsDummy_NSObject_Rx 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double NSObject_RxVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char NSObject_RxVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx.modulemap: -------------------------------------------------------------------------------- 1 | framework module NSObject_Rx { 2 | umbrella header "NSObject+Rx-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ReactiveAlertAndActionSheet : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ReactiveAlertAndActionSheet 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_ReactiveAlertAndActionSheetVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_ReactiveAlertAndActionSheetVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "Action" -framework "NSObject_Rx" -framework "RxCocoa" -framework "RxSwift" -framework "RxSwiftExt" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ReactiveAlertAndActionSheet { 2 | umbrella header "Pods-ReactiveAlertAndActionSheet-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "Action" -framework "NSObject_Rx" -framework "RxCocoa" -framework "RxSwift" -framework "RxSwiftExt" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ReactiveAlertAndActionSheetTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ReactiveAlertAndActionSheetTests 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_ReactiveAlertAndActionSheetTestsVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_ReactiveAlertAndActionSheetTestsVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController" "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxTest" "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController/MockUIAlertController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking/RxBlocking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxTest/RxTest.framework/Headers" $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "MockUIAlertController" -framework "RxBlocking" -framework "RxSwift" -framework "RxTest" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ReactiveAlertAndActionSheetTests { 2 | umbrella header "Pods-ReactiveAlertAndActionSheetTests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController" "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxTest" "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController/MockUIAlertController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking/RxBlocking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxTest/RxTest.framework/Headers" $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "MockUIAlertController" -framework "RxBlocking" -framework "RxSwift" -framework "RxTest" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxBlocking : NSObject 3 | @end 4 | @implementation PodsDummy_RxBlocking 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxBlockingVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxBlockingVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxBlocking { 2 | umbrella header "RxBlocking-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxBlocking 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "RxCocoa.h" 6 | #import "RxCocoaRuntime.h" 7 | #import "_RX.h" 8 | #import "_RXDelegateProxy.h" 9 | #import "_RXKVOObserver.h" 10 | #import "_RXObjCRuntime.h" 11 | 12 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 13 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 14 | 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwiftExt : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwiftExt 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxSwiftExtVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxSwiftExtVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwiftExt { 2 | umbrella header "RxSwiftExt-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxTest : NSObject 3 | @end 4 | @implementation PodsDummy_RxTest 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxTestVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxTestVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxTest { 2 | umbrella header "RxTest-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxTest 2 | ENABLE_BITCODE = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 6 | OTHER_LDFLAGS = -framework "XCTest" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT} 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/xcuserdata/Adam.xcuserdatad/xcschemes/All in GalleryReaderTests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 29 | 30 | 31 | 33 | 34 | 36 | 37 | 38 | 39 | 40 | 41 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/xcuserdata/Adam.xcuserdatad/xcschemes/All in ImageReceiverTests.swift.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 29 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/xcuserdata/Adam.xcuserdatad/xcschemes/All tests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 29 | 30 | 31 | 32 | 33 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcworkspace/xcuserdata/Adam.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcworkspace/xcuserdata/Adam.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Action+ActionType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | import Action 9 | 10 | protocol ActionType { 11 | associatedtype InputType 12 | associatedtype ElementType 13 | 14 | func execute(_ value: InputType) -> Observable 15 | } 16 | 17 | extension ActionType where InputType == Void { 18 | func execute() -> Observable { 19 | return execute(()) 20 | } 21 | } 22 | 23 | extension Action: ActionType { 24 | typealias InputType = Input 25 | typealias ElementType = Element 26 | } 27 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 23.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | window = UIWindow(frame: UIScreen.main.bounds) 19 | window?.rootViewController = AvatarViewController() 20 | window?.makeKeyAndVisible() 21 | return true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Disposable+DisposedBy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | 9 | /** 10 | * `disposed(by bag: DisposeBag)` will be used in newest release of RxSwift ;) 11 | */ 12 | extension Disposable { 13 | public func disposed(by bag: DisposeBag) { 14 | bag.insert(self) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/HavingNib.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HavingNib.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 23.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | protocol HavingNib { 13 | static var nibName: String { get } 14 | } 15 | 16 | extension HavingNib where Self: UIView { 17 | static var nib: UINib { 18 | return UINib(nibName: nibName, bundle: nil) 19 | } 20 | 21 | static func fromNib(translatesAutoresizingMaskIntoConstraints: Bool = true) -> Self { 22 | guard let view = (nib.instantiate(withOwner: nil, options: nil).first { $0 is Self }) as? Self else { 23 | fatalError("\(Self.self) doesn't have a nib with name: \(nibName)") 24 | } 25 | view.translatesAutoresizingMaskIntoConstraints = translatesAutoresizingMaskIntoConstraints 26 | return view 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/ImageSources/LastImageTakenImageSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import UIKit 8 | import RxSwift 9 | 10 | struct LastImageTakenImageSource: ImageSource { 11 | let description = "Use last photo taken" 12 | private let gallery: GalleryReading 13 | 14 | init(gallery: GalleryReading = GalleryReader()) { 15 | self.gallery = gallery 16 | } 17 | 18 | var image: Observable { 19 | return gallery.lastPhotoTaken 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/ImageSources/LibraryImageSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LibraryImageSource.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 29.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | import RxSwift 12 | 13 | struct LibraryImageSource: ImageSource { 14 | let description = "Choose image from library" 15 | 16 | let imagePickerInteractor: ImagePickerInteractor 17 | init(imagePickerInteractor: ImagePickerInteractor) { 18 | self.imagePickerInteractor = imagePickerInteractor 19 | } 20 | 21 | var image: Observable { 22 | return imagePickerInteractor.chooseImageFromLibrary() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPhotoLibraryUsageDescription 6 | Hello, I need an access to photos ;) 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/PhotosManagerAdapter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PhotosManaging.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 28.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Photos 11 | 12 | protocol PhotosManaging { 13 | var authorizationStatus: PHAuthorizationStatus { get } 14 | func requestImage(for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: @escaping (UIImage?, [AnyHashable : Any]?) -> Swift.Void) -> PHImageRequestID 15 | func cancelImageRequest(_ requestId: PHImageRequestID) 16 | func requestAuthorization(_ handler: @escaping (PHAuthorizationStatus) -> Void) 17 | } 18 | 19 | final class PhotosManagerAdapter: PhotosManaging { 20 | func requestImage(for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: @escaping (UIImage?, [AnyHashable : Any]?) -> Void) -> PHImageRequestID { 21 | return PHImageManager.default().requestImage(for: asset, targetSize: targetSize, contentMode: contentMode, options: options, resultHandler: resultHandler) 22 | } 23 | 24 | func cancelImageRequest(_ requestId: PHImageRequestID) { 25 | PHImageManager.default().cancelImageRequest(requestId) 26 | } 27 | 28 | var authorizationStatus: PHAuthorizationStatus { 29 | return PHPhotoLibrary.authorizationStatus() 30 | } 31 | 32 | func requestAuthorization(_ handler: @escaping (PHAuthorizationStatus) -> Void) { 33 | return PHPhotoLibrary.requestAuthorization { handler($0) } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Result.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | 8 | enum Result { 9 | case success(T) 10 | case failure(Swift.Error) 11 | } 12 | 13 | extension Result { 14 | init(value: T) { 15 | self = .success(value) 16 | } 17 | 18 | init(error: Swift.Error) { 19 | self = .failure(error) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/ViewControllerPresenting.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 25.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import UIKit 8 | 9 | protocol ViewControllerPresenting: class { 10 | func present(_ viewController: UIViewController) 11 | func dismiss(_ viewController: UIViewController) 12 | } 13 | 14 | extension UIViewController: ViewControllerPresenting { 15 | func present(_ viewController: UIViewController) { 16 | present(viewController, animated: true, completion: nil) 17 | } 18 | 19 | func dismiss(_ viewController: UIViewController) { 20 | viewController.dismiss(animated: true, completion: nil) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheetTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheetTests/ReactiveAlertAndActionSheetTests-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | --------------------------------------------------------------------------------
(_ pauser: P) -> Observable where P.E == Bool { 25 | return withLatestFrom(pauser) { element, paused in 26 | (element, paused) 27 | }.filter { element, paused in 28 | paused 29 | }.map { element, paused in 30 | element 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Pods/RxSwiftExt/Source/unwrap.swift: -------------------------------------------------------------------------------- 1 | // 2 | // unwrap.swift 3 | // RxSwiftExt 4 | // 5 | // Created by Marin Todorov on 4/7/16. 6 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | public protocol Optionable 13 | { 14 | associatedtype WrappedType 15 | func unwrap() -> WrappedType 16 | func isEmpty() -> Bool 17 | } 18 | 19 | extension Optional : Optionable 20 | { 21 | public typealias WrappedType = Wrapped 22 | 23 | /** 24 | Force unwraps the contained value and returns it. Will crash if there's no value stored. 25 | 26 | - returns: Value of the contained type 27 | */ 28 | public func unwrap() -> WrappedType { 29 | return self! 30 | } 31 | 32 | /** 33 | Returns `true` if the Optional element is `nil` (if it does not contain a value) or `false` if the element *does* contain a value 34 | 35 | - returns: `true` if the Optional element is `nil`; false if it *does* have a value 36 | */ 37 | public func isEmpty() -> Bool { 38 | return self == nil 39 | } 40 | } 41 | 42 | extension ObservableType where E : Optionable { 43 | 44 | /** 45 | Takes a sequence of optional elements and returns a sequence of non-optional elements, filtering out any nil values. 46 | 47 | - returns: An observable sequence of non-optional elements 48 | */ 49 | 50 | public func unwrap() -> Observable { 51 | return self 52 | .filter { value in 53 | return !value.isEmpty() 54 | } 55 | .map { value -> E.WrappedType in 56 | value.unwrap() 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Pods/RxTest/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/RxTest/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Sequence that repeats `repeatedValue` infinite number of times. 12 | struct InfiniteSequence : Sequence { 13 | typealias Element = E 14 | typealias Iterator = AnyIterator 15 | 16 | private let _repeatedValue: E 17 | 18 | init(repeatedValue: E) { 19 | _repeatedValue = repeatedValue 20 | } 21 | 22 | func makeIterator() -> Iterator { 23 | let repeatedValue = _repeatedValue 24 | return AnyIterator { 25 | return repeatedValue 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Pods/RxTest/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Dispatch 11 | 12 | extension DispatchQueue { 13 | private static var token: DispatchSpecificKey<()> = { 14 | let key = DispatchSpecificKey<()>() 15 | DispatchQueue.main.setSpecific(key: key, value: ()) 16 | return key 17 | }() 18 | 19 | static var isMain: Bool { 20 | return DispatchQueue.getSpecific(key: token) != nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxTest/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | typealias AtomicInt = Int32 15 | 16 | let AtomicCompareAndSwap = OSAtomicCompareAndSwap32Barrier 17 | let AtomicIncrement = OSAtomicIncrement32Barrier 18 | let AtomicDecrement = OSAtomicDecrement32Barrier 19 | 20 | extension Thread { 21 | 22 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String 23 | ) { 24 | let currentThread = Thread.current 25 | let threadDictionary = currentThread.threadDictionary 26 | 27 | if let newValue = value { 28 | threadDictionary[key] = newValue 29 | } 30 | else { 31 | threadDictionary[key] = nil 32 | } 33 | 34 | } 35 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 36 | let currentThread = Thread.current 37 | let threadDictionary = currentThread.threadDictionary 38 | 39 | return threadDictionary[key] as? T 40 | } 41 | } 42 | 43 | extension AtomicInt { 44 | func valueSnapshot() -> Int32 { 45 | return self 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/Any+Equatable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Any+Equatable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// A way to use built in XCTest methods with objects that are partially equatable. 12 | /// 13 | /// If this can be done simpler, PRs are welcome :) 14 | struct AnyEquatable 15 | : Equatable { 16 | typealias Comparer = (Target, Target) -> Bool 17 | 18 | let _target: Target 19 | let _comparer: Comparer 20 | 21 | init(target: Target, comparer: @escaping Comparer) { 22 | _target = target 23 | _comparer = comparer 24 | } 25 | } 26 | 27 | func == (lhs: AnyEquatable, rhs: AnyEquatable) -> Bool { 28 | return lhs._comparer(lhs._target, rhs._target) 29 | } 30 | 31 | extension AnyEquatable 32 | : CustomDebugStringConvertible 33 | , CustomStringConvertible { 34 | var description: String { 35 | return "\(_target)" 36 | } 37 | 38 | var debugDescription: String { 39 | return "\(_target)" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/ColdObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ColdObservable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 3/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// A representation of cold observable sequence. 12 | /// 13 | /// Recorded events are replayed after subscription once per subscriber. 14 | /// 15 | /// Event times represent relative offset to subscription time. 16 | class ColdObservable 17 | : TestableObservable { 18 | 19 | override init(testScheduler: TestScheduler, recordedEvents: [Recorded>]) { 20 | super.init(testScheduler: testScheduler, recordedEvents: recordedEvents) 21 | } 22 | 23 | /// Subscribes `observer` to receive events for this sequence. 24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 25 | subscriptions.append(Subscription(testScheduler.clock)) 26 | 27 | let i = self.subscriptions.count - 1 28 | 29 | for recordedEvent in recordedEvents { 30 | _ = testScheduler.scheduleRelativeVirtual((), dueTime: recordedEvent.time, action: { (_) in 31 | observer.on(recordedEvent.value) 32 | return Disposables.create() 33 | }) 34 | } 35 | 36 | return Disposables.create { 37 | let existing = self.subscriptions[i] 38 | self.subscriptions[i] = Subscription(existing.subscribe, self.testScheduler.clock) 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/Event+Equatable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Event+Equatable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /// Compares two events. They are equal if they are both the same member of `Event` enumeration. 13 | /// 14 | /// In case `Error` events are being compared, they are equal in case their `NSError` representations are equal (domain and code) 15 | /// and their string representations are equal. 16 | public func == (lhs: Event, rhs: Event) -> Bool { 17 | switch (lhs, rhs) { 18 | case (.completed, .completed): return true 19 | case (.error(let e1), .error(let e2)): 20 | #if os(Linux) 21 | return "\(e1)" == "\(e2)" 22 | #else 23 | let error1 = e1 as NSError 24 | let error2 = e2 as NSError 25 | 26 | return error1.domain == error2.domain 27 | && error1.code == error2.code 28 | && "\(e1)" == "\(e2)" 29 | #endif 30 | case (.next(let v1), .next(let v2)): return v1 == v2 31 | default: return false 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/Recorded.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Recorded.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 2/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | import Swift 12 | 13 | /// Record of a value including the virtual time it was produced on. 14 | public struct Recorded 15 | : CustomDebugStringConvertible { 16 | 17 | /// Gets the virtual time the value was produced on. 18 | public let time: TestTime 19 | 20 | /// Gets the recorded value. 21 | public let value: Value 22 | 23 | public init(time: TestTime, value: Value) { 24 | self.time = time 25 | self.value = value 26 | } 27 | } 28 | 29 | extension Recorded { 30 | /// A textual representation of `self`, suitable for debugging. 31 | public var debugDescription: String { 32 | return "\(value) @ \(time)" 33 | } 34 | } 35 | 36 | public func == (lhs: Recorded, rhs: Recorded) -> Bool { 37 | return lhs.time == rhs.time && lhs.value == rhs.value 38 | } 39 | 40 | public func == (lhs: Recorded>, rhs: Recorded>) -> Bool { 41 | return lhs.time == rhs.time && lhs.value == rhs.value 42 | } 43 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTests.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Virtual time type. 12 | public typealias TestTime = Int 13 | 14 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/TestableObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestableObservable.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /// Observable sequence that records subscription lifetimes and timestamped events sent to observers. 13 | public class TestableObservable 14 | : ObservableType { 15 | public typealias E = Element 16 | /// Subscriptions recorded during observable lifetime. 17 | public internal(set) var subscriptions: [Subscription] 18 | 19 | /// List of events to replay for all subscribers. 20 | /// 21 | /// Event times represent absolute `TestScheduler` time. 22 | public internal(set) var recordedEvents: [Recorded>] 23 | 24 | /// Parent test scheduler. 25 | internal let testScheduler: TestScheduler 26 | 27 | init(testScheduler: TestScheduler, recordedEvents: [Recorded>]) { 28 | self.testScheduler = testScheduler 29 | self.recordedEvents = recordedEvents 30 | self.subscriptions = [] 31 | } 32 | 33 | public func subscribe(_ observer: O) -> Disposable where O.E == Element { 34 | fatalError("Abstract method") 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Pods/RxTest/RxTest/TestableObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestableObserver.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /// Observer that records events together with virtual time when they were received. 13 | public class TestableObserver 14 | : ObserverType { 15 | public typealias Element = ElementType 16 | 17 | fileprivate let _scheduler: TestScheduler 18 | 19 | /// Recorded events. 20 | public fileprivate(set) var events = [Recorded>]() 21 | 22 | init(scheduler: TestScheduler) { 23 | _scheduler = scheduler 24 | } 25 | 26 | /// Notify observer about sequence event. 27 | /// 28 | /// - parameter event: Event that occured. 29 | public func on(_ event: Event) { 30 | events.append(Recorded(time: _scheduler.clock, value: event)) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double ActionVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Action.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Action 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Action/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.2.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MockUIAlertController : NSObject 3 | @end 4 | @implementation PodsDummy_MockUIAlertController 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "QCOMockAlertVerifier.h" 6 | #import "QCOMockPopoverPresentationController.h" 7 | 8 | FOUNDATION_EXPORT double MockUIAlertControllerVersionNumber; 9 | FOUNDATION_EXPORT const unsigned char MockUIAlertControllerVersionString[]; 10 | 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController.modulemap: -------------------------------------------------------------------------------- 1 | framework module MockUIAlertController { 2 | umbrella header "MockUIAlertController-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MockUIAlertController/MockUIAlertController.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_NSObject_Rx : NSObject 3 | @end 4 | @implementation PodsDummy_NSObject_Rx 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double NSObject_RxVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char NSObject_RxVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx.modulemap: -------------------------------------------------------------------------------- 1 | framework module NSObject_Rx { 2 | umbrella header "NSObject+Rx-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/NSObject+Rx/NSObject+Rx.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ReactiveAlertAndActionSheet : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ReactiveAlertAndActionSheet 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_ReactiveAlertAndActionSheetVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_ReactiveAlertAndActionSheetVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "Action" -framework "NSObject_Rx" -framework "RxCocoa" -framework "RxSwift" -framework "RxSwiftExt" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ReactiveAlertAndActionSheet { 2 | umbrella header "Pods-ReactiveAlertAndActionSheet-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheet/Pods-ReactiveAlertAndActionSheet.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "Action" -framework "NSObject_Rx" -framework "RxCocoa" -framework "RxSwift" -framework "RxSwiftExt" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ReactiveAlertAndActionSheetTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ReactiveAlertAndActionSheetTests 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_ReactiveAlertAndActionSheetTestsVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_ReactiveAlertAndActionSheetTestsVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController" "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxTest" "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController/MockUIAlertController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking/RxBlocking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxTest/RxTest.framework/Headers" $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "MockUIAlertController" -framework "RxBlocking" -framework "RxSwift" -framework "RxTest" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ReactiveAlertAndActionSheetTests { 2 | umbrella header "Pods-ReactiveAlertAndActionSheetTests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ReactiveAlertAndActionSheetTests/Pods-ReactiveAlertAndActionSheetTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController" "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxTest" "$PODS_CONFIGURATION_BUILD_DIR/Action" "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx" "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/MockUIAlertController/MockUIAlertController.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxBlocking/RxBlocking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxTest/RxTest.framework/Headers" $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Action/Action.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NSObject+Rx/NSObject_Rx.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxCocoa/RxCocoa.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwift/RxSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt/RxSwiftExt.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "MockUIAlertController" -framework "RxBlocking" -framework "RxSwift" -framework "RxTest" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxBlocking : NSObject 3 | @end 4 | @implementation PodsDummy_RxBlocking 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxBlockingVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxBlockingVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxBlocking { 2 | umbrella header "RxBlocking-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxBlocking/RxBlocking.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxBlocking 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "RxCocoa.h" 6 | #import "RxCocoaRuntime.h" 7 | #import "_RX.h" 8 | #import "_RXDelegateProxy.h" 9 | #import "_RXKVOObserver.h" 10 | #import "_RXObjCRuntime.h" 11 | 12 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 13 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 14 | 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwiftExt : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwiftExt 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxSwiftExtVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxSwiftExtVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwiftExt { 2 | umbrella header "RxSwiftExt-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwiftExt/RxSwiftExt.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwiftExt 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxTest : NSObject 3 | @end 4 | @implementation PodsDummy_RxTest 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double RxTestVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char RxTestVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxTest { 2 | umbrella header "RxTest-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxTest/RxTest.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxTest 2 | ENABLE_BITCODE = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 6 | OTHER_LDFLAGS = -framework "XCTest" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT} 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/xcuserdata/Adam.xcuserdatad/xcschemes/All in GalleryReaderTests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 29 | 30 | 31 | 33 | 34 | 36 | 37 | 38 | 39 | 40 | 41 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/xcuserdata/Adam.xcuserdatad/xcschemes/All in ImageReceiverTests.swift.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 29 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcodeproj/xcuserdata/Adam.xcuserdatad/xcschemes/All tests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 29 | 30 | 31 | 32 | 33 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcworkspace/xcuserdata/Adam.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet.xcworkspace/xcuserdata/Adam.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Action+ActionType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | import Action 9 | 10 | protocol ActionType { 11 | associatedtype InputType 12 | associatedtype ElementType 13 | 14 | func execute(_ value: InputType) -> Observable 15 | } 16 | 17 | extension ActionType where InputType == Void { 18 | func execute() -> Observable { 19 | return execute(()) 20 | } 21 | } 22 | 23 | extension Action: ActionType { 24 | typealias InputType = Input 25 | typealias ElementType = Element 26 | } 27 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 23.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | window = UIWindow(frame: UIScreen.main.bounds) 19 | window?.rootViewController = AvatarViewController() 20 | window?.makeKeyAndVisible() 21 | return true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Disposable+DisposedBy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | 9 | /** 10 | * `disposed(by bag: DisposeBag)` will be used in newest release of RxSwift ;) 11 | */ 12 | extension Disposable { 13 | public func disposed(by bag: DisposeBag) { 14 | bag.insert(self) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/HavingNib.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HavingNib.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 23.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | protocol HavingNib { 13 | static var nibName: String { get } 14 | } 15 | 16 | extension HavingNib where Self: UIView { 17 | static var nib: UINib { 18 | return UINib(nibName: nibName, bundle: nil) 19 | } 20 | 21 | static func fromNib(translatesAutoresizingMaskIntoConstraints: Bool = true) -> Self { 22 | guard let view = (nib.instantiate(withOwner: nil, options: nil).first { $0 is Self }) as? Self else { 23 | fatalError("\(Self.self) doesn't have a nib with name: \(nibName)") 24 | } 25 | view.translatesAutoresizingMaskIntoConstraints = translatesAutoresizingMaskIntoConstraints 26 | return view 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/ImageSources/LastImageTakenImageSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import UIKit 8 | import RxSwift 9 | 10 | struct LastImageTakenImageSource: ImageSource { 11 | let description = "Use last photo taken" 12 | private let gallery: GalleryReading 13 | 14 | init(gallery: GalleryReading = GalleryReader()) { 15 | self.gallery = gallery 16 | } 17 | 18 | var image: Observable { 19 | return gallery.lastPhotoTaken 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/ImageSources/LibraryImageSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LibraryImageSource.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 29.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | import RxSwift 12 | 13 | struct LibraryImageSource: ImageSource { 14 | let description = "Choose image from library" 15 | 16 | let imagePickerInteractor: ImagePickerInteractor 17 | init(imagePickerInteractor: ImagePickerInteractor) { 18 | self.imagePickerInteractor = imagePickerInteractor 19 | } 20 | 21 | var image: Observable { 22 | return imagePickerInteractor.chooseImageFromLibrary() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPhotoLibraryUsageDescription 6 | Hello, I need an access to photos ;) 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/PhotosManagerAdapter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PhotosManaging.swift 3 | // ReactiveAlertAndActionSheet 4 | // 5 | // Created by Adam Borek on 28.01.2017. 6 | // Copyright © 2017 Adam Borek. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Photos 11 | 12 | protocol PhotosManaging { 13 | var authorizationStatus: PHAuthorizationStatus { get } 14 | func requestImage(for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: @escaping (UIImage?, [AnyHashable : Any]?) -> Swift.Void) -> PHImageRequestID 15 | func cancelImageRequest(_ requestId: PHImageRequestID) 16 | func requestAuthorization(_ handler: @escaping (PHAuthorizationStatus) -> Void) 17 | } 18 | 19 | final class PhotosManagerAdapter: PhotosManaging { 20 | func requestImage(for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: @escaping (UIImage?, [AnyHashable : Any]?) -> Void) -> PHImageRequestID { 21 | return PHImageManager.default().requestImage(for: asset, targetSize: targetSize, contentMode: contentMode, options: options, resultHandler: resultHandler) 22 | } 23 | 24 | func cancelImageRequest(_ requestId: PHImageRequestID) { 25 | PHImageManager.default().cancelImageRequest(requestId) 26 | } 27 | 28 | var authorizationStatus: PHAuthorizationStatus { 29 | return PHPhotoLibrary.authorizationStatus() 30 | } 31 | 32 | func requestAuthorization(_ handler: @escaping (PHAuthorizationStatus) -> Void) { 33 | return PHPhotoLibrary.requestAuthorization { handler($0) } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/Result.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 28.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | 8 | enum Result { 9 | case success(T) 10 | case failure(Swift.Error) 11 | } 12 | 13 | extension Result { 14 | init(value: T) { 15 | self = .success(value) 16 | } 17 | 18 | init(error: Swift.Error) { 19 | self = .failure(error) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheet/ViewControllerPresenting.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Adam Borek on 25.01.2017. 3 | // Copyright (c) 2017 Adam Borek. All rights reserved. 4 | // 5 | 6 | import Foundation 7 | import UIKit 8 | 9 | protocol ViewControllerPresenting: class { 10 | func present(_ viewController: UIViewController) 11 | func dismiss(_ viewController: UIViewController) 12 | } 13 | 14 | extension UIViewController: ViewControllerPresenting { 15 | func present(_ viewController: UIViewController) { 16 | present(viewController, animated: true, completion: nil) 17 | } 18 | 19 | func dismiss(_ viewController: UIViewController) { 20 | viewController.dismiss(animated: true, completion: nil) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheetTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /ReactiveAlertAndActionSheetTests/ReactiveAlertAndActionSheetTests-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | --------------------------------------------------------------------------------