Rx DataSourceProtocol conformance

This commit is contained in:
Ivan Smolin 2017-12-06 14:17:26 +03:00
parent b5f36019ae
commit 99ef62dfea
3 changed files with 19 additions and 53 deletions

View File

@ -278,10 +278,6 @@
6740D5D31FABDA46006BB7C0 /* DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D11FABDA46006BB7C0 /* DataSourceProtocol.swift */; };
6740D5D41FABDA46006BB7C0 /* DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D11FABDA46006BB7C0 /* DataSourceProtocol.swift */; };
6740D5D51FABDA47006BB7C0 /* DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D11FABDA46006BB7C0 /* DataSourceProtocol.swift */; };
6740D5D71FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D61FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift */; };
6740D5D81FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D61FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift */; };
6740D5D91FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D61FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift */; };
6740D5DA1FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6740D5D61FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift */; };
674AF55C1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674AF55B1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift */; };
674AF55D1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674AF55B1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift */; };
674AF55E1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674AF55B1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift */; };
@ -324,6 +320,7 @@
67A1FF941EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67A1FF931EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift */; };
67A1FF951EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67A1FF931EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift */; };
67A1FF971EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67A1FF931EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift */; };
67B5A34C1FD8074800F36C36 /* Rx+DataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67B5A34B1FD8074800F36C36 /* Rx+DataSourceProtocol.swift */; };
67CB1BF21FAB78770089D1B1 /* PaginationWrappable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67CB1BF11FAB78770089D1B1 /* PaginationWrappable.swift */; };
67CB1BF61FAB78DC0089D1B1 /* AnyPaginationWrappableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67CB1BF51FAB78DC0089D1B1 /* AnyPaginationWrappableView.swift */; };
67CB1BFA1FAB79530089D1B1 /* UITableView+PaginationWrappable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67CB1BF91FAB79530089D1B1 /* UITableView+PaginationWrappable.swift */; };
@ -346,10 +343,6 @@
67F139FC1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F139FA1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift */; };
67F139FD1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F139FA1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift */; };
67F139FE1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F139FA1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift */; };
67F13A021FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A011FAB5024008175B4 /* SharedSequence+FilterEmpty.swift */; };
67F13A031FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A011FAB5024008175B4 /* SharedSequence+FilterEmpty.swift */; };
67F13A041FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A011FAB5024008175B4 /* SharedSequence+FilterEmpty.swift */; };
67F13A051FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A011FAB5024008175B4 /* SharedSequence+FilterEmpty.swift */; };
67F13A081FAB50BB008175B4 /* Single+CursorExhausted.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A071FAB50BB008175B4 /* Single+CursorExhausted.swift */; };
67F13A151FAB5A87008175B4 /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A141FAB5A87008175B4 /* LoadingState.swift */; };
67F13A161FAB5A87008175B4 /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F13A141FAB5A87008175B4 /* LoadingState.swift */; };
@ -566,7 +559,6 @@
67186B411EB24AA000CFAFFB /* iOS.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = iOS.playground; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
67186C1A1EB24B7800CFAFFB /* Info-iOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = "<group>"; };
6740D5D11FABDA46006BB7C0 /* DataSourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataSourceProtocol.swift; sourceTree = "<group>"; };
6740D5D61FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Single+DataSourceProtocol.swift"; sourceTree = "<group>"; };
674AF55B1EC45B1600038A8F /* UIActivityIndicatorView+LoadingIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIActivityIndicatorView+LoadingIndicator.swift"; sourceTree = "<group>"; };
6771DFD71EE99EBA002DCDAE /* DateFormattingService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateFormattingService.swift; sourceTree = "<group>"; };
6771DFDD1EE99F6F002DCDAE /* DateFormattingArguments.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateFormattingArguments.swift; sourceTree = "<group>"; };
@ -590,6 +582,7 @@
679C77D61F98F7A60094BE10 /* UIAlertController+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIAlertController+Extensions.swift"; sourceTree = "<group>"; };
67A1FF8E1EBCA09B00D6C89F /* UIImage+Spinner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Spinner.swift"; sourceTree = "<group>"; };
67A1FF931EBCA65E00D6C89F /* CABasicAnimation+Rotation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CABasicAnimation+Rotation.swift"; sourceTree = "<group>"; };
67B5A34B1FD8074800F36C36 /* Rx+DataSourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Rx+DataSourceProtocol.swift"; sourceTree = "<group>"; };
67CB1BF11FAB78770089D1B1 /* PaginationWrappable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaginationWrappable.swift; sourceTree = "<group>"; };
67CB1BF51FAB78DC0089D1B1 /* AnyPaginationWrappableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyPaginationWrappableView.swift; sourceTree = "<group>"; };
67CB1BF91FAB79530089D1B1 /* UITableView+PaginationWrappable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+PaginationWrappable.swift"; sourceTree = "<group>"; };
@ -599,7 +592,6 @@
67CB1C091FAB7B4D0089D1B1 /* PaginationWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaginationWrapper.swift; sourceTree = "<group>"; };
67F139F41FAB4F22008175B4 /* TotalCountCursor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalCountCursor.swift; sourceTree = "<group>"; };
67F139FA1FAB4F7E008175B4 /* TotalCountCursorConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalCountCursorConfiguration.swift; sourceTree = "<group>"; };
67F13A011FAB5024008175B4 /* SharedSequence+FilterEmpty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SharedSequence+FilterEmpty.swift"; sourceTree = "<group>"; };
67F13A071FAB50BB008175B4 /* Single+CursorExhausted.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Single+CursorExhausted.swift"; sourceTree = "<group>"; };
67F13A141FAB5A87008175B4 /* LoadingState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingState.swift; sourceTree = "<group>"; };
67F13A191FAB5ABB008175B4 /* LoadingProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingProtocol.swift; sourceTree = "<group>"; };
@ -1262,6 +1254,7 @@
67F13A061FAB5098008175B4 /* PrimitiveSequence */,
67F13A001FAB5011008175B4 /* SharedSequence */,
671461F01EB3396E00EAB194 /* Observable */,
67B5A34B1FD8074800F36C36 /* Rx+DataSourceProtocol.swift */,
);
path = Rx;
sourceTree = "<group>";
@ -1269,7 +1262,6 @@
67F13A001FAB5011008175B4 /* SharedSequence */ = {
isa = PBXGroup;
children = (
67F13A011FAB5024008175B4 /* SharedSequence+FilterEmpty.swift */,
);
path = SharedSequence;
sourceTree = "<group>";
@ -1354,7 +1346,6 @@
children = (
67F13A071FAB50BB008175B4 /* Single+CursorExhausted.swift */,
82F8BB171F5DDED100C1061B /* Single+DeferredJust.swift */,
6740D5D61FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift */,
);
path = Single;
sourceTree = "<group>";
@ -2251,7 +2242,6 @@
671462EC1EB3396E00EAB194 /* UIImage+Extensions.swift in Sources */,
67F13A241FAB5B25008175B4 /* GeneralLoadingState.swift in Sources */,
A6E0DDF11F8A6C80002CA74E /* SeparatorConfiguration.swift in Sources */,
6740D5D71FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */,
6714636C1EB3396E00EAB194 /* XibNameProtocol.swift in Sources */,
6771DFEA1EEA7CB8002DCDAE /* DateFormattingService+MappingTransform.swift in Sources */,
671462A01EB3396E00EAB194 /* Double+Rounding.swift in Sources */,
@ -2283,7 +2273,6 @@
40F118471F8FEF97004AADAF /* AppearanceConfigurable.swift in Sources */,
671463181EB3396E00EAB194 /* UIWindow+Extensions.swift in Sources */,
671462541EB3396E00EAB194 /* App.swift in Sources */,
67F13A021FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */,
671463781EB3396E00EAB194 /* CALayerDrawingOperation.swift in Sources */,
6714632C1EB3396E00EAB194 /* ConfigurableController.swift in Sources */,
6714628C1EB3396E00EAB194 /* CGImage+Alpha.swift in Sources */,
@ -2295,6 +2284,7 @@
6714629C1EB3396E00EAB194 /* CursorType+Slice.swift in Sources */,
671463681EB3396E00EAB194 /* ConfigurableView.swift in Sources */,
67CB1C021FAB7A640089D1B1 /* PaginationWrapperDelegate.swift in Sources */,
67B5A34C1FD8074800F36C36 /* Rx+DataSourceProtocol.swift in Sources */,
6771DFE41EE9A00A002DCDAE /* DateFormattingArguments+DateFormatter.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -2344,7 +2334,6 @@
6714626A1EB3396E00EAB194 /* NetworkService.swift in Sources */,
671463421EB3396E00EAB194 /* ModuleConfigurator.swift in Sources */,
67F13A171FAB5A87008175B4 /* LoadingState.swift in Sources */,
6740D5D91FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */,
671462921EB3396E00EAB194 /* CGImage+Crop.swift in Sources */,
671463861EB3396E00EAB194 /* ResizeDrawingOperation.swift in Sources */,
671463921EB3396E00EAB194 /* TemplateDrawingOperation.swift in Sources */,
@ -2352,7 +2341,6 @@
671463321EB3396E00EAB194 /* CursorType.swift in Sources */,
6714624E1EB3396E00EAB194 /* MapCursor.swift in Sources */,
A676AE571F981130001F9214 /* ObservableMappable.swift in Sources */,
67F13A041FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */,
671463261EB3396E00EAB194 /* Any+TypeName.swift in Sources */,
67F13A451FAB6256008175B4 /* PaginationLoadingViewModel.swift in Sources */,
6714638A1EB3396E00EAB194 /* RoundDrawingOperation.swift in Sources */,
@ -2468,9 +2456,7 @@
6714626F1EB3396E00EAB194 /* XibView.swift in Sources */,
6714637F1EB3396E00EAB194 /* ImageDrawingOperation.swift in Sources */,
671463371EB3396E00EAB194 /* DrawingOperation.swift in Sources */,
67F13A051FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */,
67F13A221FAB5AE8008175B4 /* LoadingConfiguration.swift in Sources */,
6740D5DA1FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */,
671462731EB3396E00EAB194 /* CursorError.swift in Sources */,
6714639B1EB3396E00EAB194 /* AnyLoadingIndicator.swift in Sources */,
6771DFE11EE99F6F002DCDAE /* DateFormattingArguments.swift in Sources */,
@ -2578,12 +2564,10 @@
671463091EB3396E00EAB194 /* UIView+Rotation.swift in Sources */,
6714626D1EB3396E00EAB194 /* XibView.swift in Sources */,
67CB1C071FAB7AE00089D1B1 /* PaginationWrapperDelegate+DefaultImplementation.swift in Sources */,
67F13A031FAB5024008175B4 /* SharedSequence+FilterEmpty.swift in Sources */,
6714637D1EB3396E00EAB194 /* ImageDrawingOperation.swift in Sources */,
671463351EB3396E00EAB194 /* DrawingOperation.swift in Sources */,
67FDC2601FA310EA00C76A77 /* RequestError.swift in Sources */,
671462711EB3396E00EAB194 /* CursorError.swift in Sources */,
6740D5D81FABDBE3006BB7C0 /* Single+DataSourceProtocol.swift in Sources */,
67F13A161FAB5A87008175B4 /* LoadingState.swift in Sources */,
671463991EB3396E00EAB194 /* AnyLoadingIndicator.swift in Sources */,
671463A81EB340C000EAB194 /* UIViewController+ConfigurableController.swift in Sources */,

View File

@ -21,9 +21,22 @@
//
import RxSwift
import RxCocoa
extension Single: DataSourceProtocol {
extension Observable: DataSourceProtocol {
public typealias ResultType = ElementType
public typealias ResultType = Element
}
extension PrimitiveSequence: DataSourceProtocol {
public typealias ResultType = Element
}
extension SharedSequence: DataSourceProtocol {
public typealias ResultType = Element
}

View File

@ -1,31 +0,0 @@
//
// Copyright (c) 2017 Touch Instinct
//
// 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:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// 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.
//
import RxCocoa
public extension SharedSequence where Element: Collection {
func filterEmpty() -> SharedSequence<SharingStrategy, E> {
return filter { !$0.isEmpty }
}
}