From f2f6e628f9abb92c9055c07458018bf2a44bbb49 Mon Sep 17 00:00:00 2001 From: Anton Popkov Date: Thu, 12 Oct 2017 16:12:57 +0300 Subject: [PATCH] Move configure separator method from TableDirector extension to Array extension --- LeadKit.xcodeproj/project.pbxproj | 12 ++++----- ... => Array+SeparatorRowBoxExtensions.swift} | 21 +++++++++++++++ .../TableDirector+Extensions.swift | 27 ------------------- 3 files changed, 27 insertions(+), 33 deletions(-) rename Sources/Extensions/Array/{Array+AnyBaseTableRowExtensions.swift => Array+SeparatorRowBoxExtensions.swift} (57%) diff --git a/LeadKit.xcodeproj/project.pbxproj b/LeadKit.xcodeproj/project.pbxproj index 39d3719f..214db442 100644 --- a/LeadKit.xcodeproj/project.pbxproj +++ b/LeadKit.xcodeproj/project.pbxproj @@ -386,8 +386,8 @@ 82F8BB181F5DDED100C1061B /* Single+DeferredJust.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82F8BB171F5DDED100C1061B /* Single+DeferredJust.swift */; }; A658E54D1F8CD7790093527A /* TableRow+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658E54C1F8CD7790093527A /* TableRow+Extensions.swift */; }; A658E54E1F8CD7790093527A /* TableRow+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658E54C1F8CD7790093527A /* TableRow+Extensions.swift */; }; - A658E5501F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658E54F1F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift */; }; - A658E5511F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658E54F1F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift */; }; + A658E5501F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658E54F1F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift */; }; + A658E5511F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A658E54F1F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift */; }; A6C9A4FA1F8BBCF2009311CC /* EmptyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AF3B371F8B956F00CDB971 /* EmptyCell.swift */; }; A6C9A4FB1F8BBCF2009311CC /* EmptyCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AF3B361F8B956E00CDB971 /* EmptyCellViewModel.swift */; }; A6C9A5041F8BC78F009311CC /* CellSeparatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6E0DDEE1F8A6C57002CA74E /* CellSeparatorType.swift */; }; @@ -601,7 +601,7 @@ 95E457F1241D136396FC2420 /* Pods_LeadKitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LeadKitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9966FB938D114F79F71AE037 /* Pods-LeadKit-LeadKit iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LeadKit-LeadKit iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-LeadKit-LeadKit iOS/Pods-LeadKit-LeadKit iOS.release.xcconfig"; sourceTree = ""; }; A658E54C1F8CD7790093527A /* TableRow+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TableRow+Extensions.swift"; sourceTree = ""; }; - A658E54F1F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+AnyBaseTableRowExtensions.swift"; sourceTree = ""; }; + A658E54F1F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+SeparatorRowBoxExtensions.swift"; sourceTree = ""; }; A66428A51F8A653500C6308D /* SeparatorCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeparatorCellViewModel.swift; sourceTree = ""; }; A66428A61F8A653600C6308D /* SeparatorCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeparatorCell.swift; sourceTree = ""; }; A66428A71F8A654600C6308D /* EmptyCellRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyCellRow.swift; sourceTree = ""; }; @@ -1368,7 +1368,7 @@ isa = PBXGroup; children = ( EFBE57CF1EC35EF20040E00A /* Array+Extensions.swift */, - A658E54F1F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift */, + A658E54F1F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift */, ); path = Array; sourceTree = ""; @@ -2154,7 +2154,7 @@ 671463041EB3396E00EAB194 /* UIView+LoadingIndicator.swift in Sources */, EFBE57D61EC3603E0040E00A /* UIAlertController+Extensions.swift in Sources */, 671463701EB3396E00EAB194 /* ApiRequestParameters.swift in Sources */, - A658E5501F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift in Sources */, + A658E5501F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift in Sources */, 671462EC1EB3396E00EAB194 /* UIImage+Extensions.swift in Sources */, A6E0DDF11F8A6C80002CA74E /* SeparatorConfiguration.swift in Sources */, 6714636C1EB3396E00EAB194 /* XibNameProtocol.swift in Sources */, @@ -2220,7 +2220,7 @@ 671463B81EB34B1E00EAB194 /* StubCursor.swift in Sources */, A658E54E1F8CD7790093527A /* TableRow+Extensions.swift in Sources */, A6E0DDE41F8A696F002CA74E /* SeparatorCellViewModel.swift in Sources */, - A658E5511F8CD9350093527A /* Array+AnyBaseTableRowExtensions.swift in Sources */, + A658E5511F8CD9350093527A /* Array+SeparatorRowBoxExtensions.swift in Sources */, 671463BB1EB34B1E00EAB194 /* CursorTests.swift in Sources */, A6F32C101F6EBE9600AC08EE /* StringExtensionTests.swift in Sources */, 671463C11EB34B1E00EAB194 /* MappableUserDefaultsTests.swift in Sources */, diff --git a/Sources/Extensions/Array/Array+AnyBaseTableRowExtensions.swift b/Sources/Extensions/Array/Array+SeparatorRowBoxExtensions.swift similarity index 57% rename from Sources/Extensions/Array/Array+AnyBaseTableRowExtensions.swift rename to Sources/Extensions/Array/Array+SeparatorRowBoxExtensions.swift index 4f5228ff..4773a8f7 100644 --- a/Sources/Extensions/Array/Array+AnyBaseTableRowExtensions.swift +++ b/Sources/Extensions/Array/Array+SeparatorRowBoxExtensions.swift @@ -29,4 +29,25 @@ public extension Array where Element == SeparatorRowBox { return map { $0.row } } + /// Configure separators for bunch of rows in array + /// - parameter rows: Rows for configuration + /// - parameter extreme: Configuration that will be used for extreme values, for first or last row + /// - parameter middle: Configuration for intermediate rows + func configureSeparators(extreme extremeSeparatorConfiguration: SeparatorConfiguration, + middle middleSeparatorConfiguration: SeparatorConfiguration) { + + if isEmpty { + return + } + + switch count { + case 1: + first?.viewModel.set(separatorType: .full(extremeSeparatorConfiguration, extremeSeparatorConfiguration)) + default: + forEach { $0.viewModel.set(separatorType: .full(middleSeparatorConfiguration, middleSeparatorConfiguration))} + first?.viewModel.set(separatorType: .top(extremeSeparatorConfiguration)) + last?.viewModel.set(separatorType: .bottom(extremeSeparatorConfiguration)) + } + } + } diff --git a/Sources/Extensions/TableDirector/TableDirector+Extensions.swift b/Sources/Extensions/TableDirector/TableDirector+Extensions.swift index b998eaed..bc00d2aa 100644 --- a/Sources/Extensions/TableDirector/TableDirector+Extensions.swift +++ b/Sources/Extensions/TableDirector/TableDirector+Extensions.swift @@ -112,30 +112,3 @@ public extension TableDirector { } } - -// MARK: - Separator Configuration - -public extension TableDirector { - - /// Configure separators for bunch of rows in array - /// - parameter rows: Rows for configuration - /// - parameter extreme: Configuration that will be used for extreme values, for first or last row - /// - parameter middle: Configuration for intermediate rows - func configure(rows: [SeparatorRowBox], - extreme extremeSeparatorConfiguration: SeparatorConfiguration, - middle middleSeparatorConfiguration: SeparatorConfiguration) { - - if rows.isEmpty { - return - } - - switch rows.count { - case 1: - rows.first?.viewModel.set(separatorType: .full(extremeSeparatorConfiguration, extremeSeparatorConfiguration)) - default: - rows.forEach { $0.viewModel.set(separatorType: .full(middleSeparatorConfiguration, middleSeparatorConfiguration))} - rows.first?.viewModel.set(separatorType: .top(extremeSeparatorConfiguration)) - rows.last?.viewModel.set(separatorType: .bottom(extremeSeparatorConfiguration)) - } - } -}