From 40fe60af98138394e210672ccf31386c3ca0c951 Mon Sep 17 00:00:00 2001 From: Jesse Squires Date: Wed, 27 Mar 2019 10:44:01 -0700 Subject: [PATCH] [0.5.0] Swift 5, Xcode 10.2, prep release (#158) * Upgrade to Swift 5.0 * Upgrade to Xcode10.2 * Upgrade DifferenceKit 1.1.0 * Drop iOS 10 support * Regen docs * Update CHANGELOG * Update README --- .travis.yml | 10 +- CHANGELOG.md | 13 +- Podfile | 4 +- Podfile.lock | 18 +- Pods/DifferenceKit/LICENSE | 213 ++++- Pods/DifferenceKit/README.md | 39 +- Pods/DifferenceKit/Sources/Algorithm.swift | 23 +- Pods/DifferenceKit/Sources/Changeset.swift | 12 +- .../Sources/Extensions/UIKitExtension.swift | 12 +- .../Sources/StagedChangeset.swift | 2 + Pods/Manifest.lock | 18 +- Pods/Pods.xcodeproj/project.pbxproj | 868 ++++++++++-------- .../DifferenceKit/DifferenceKit-Info.plist | 2 +- .../DifferenceKit/DifferenceKit.xcconfig | 4 +- ...tiveListsExample-acknowledgements.markdown | 212 ++++- ...eactiveListsExample-acknowledgements.plist | 214 ++++- ...veLists-ReactiveListsExample-frameworks.sh | 28 +- ...eLists-ReactiveListsExample.debug.xcconfig | 7 +- ...ists-ReactiveListsExample.release.xcconfig | 7 +- ...ds-ReactiveLists-acknowledgements.markdown | 212 ++++- .../Pods-ReactiveLists-acknowledgements.plist | 214 ++++- .../Pods-ReactiveLists.debug.xcconfig | 7 +- .../Pods-ReactiveLists.release.xcconfig | 7 +- ...activeListsTests-acknowledgements.markdown | 212 ++++- ...-ReactiveListsTests-acknowledgements.plist | 214 ++++- .../Pods-ReactiveListsTests-frameworks.sh | 28 +- .../Pods-ReactiveListsTests.debug.xcconfig | 7 +- .../Pods-ReactiveListsTests.release.xcconfig | 7 +- README.md | 4 +- ReactiveLists.podspec | 8 +- ReactiveLists.xcodeproj/project.pbxproj | 42 +- .../xcshareddata/xcschemes/Example.xcscheme | 2 +- .../xcschemes/ReactiveLists.xcscheme | 2 +- docs/Classes.html | 2 +- docs/Classes/CollectionViewDriver.html | 4 +- docs/Classes/TableViewDriver.html | 4 +- .../TableViewDriver/TableRefreshContext.html | 2 +- docs/Enums.html | 2 +- docs/Enums/SupplementaryViewKind.html | 2 +- docs/Enums/ViewRegistrationMethod.html | 2 +- docs/Guides.html | 2 +- docs/Protocols.html | 2 +- docs/Protocols/CollectionCellViewModel.html | 10 +- .../CollectionSupplementaryViewModel.html | 6 +- docs/Protocols/DiffableViewModel.html | 4 +- docs/Protocols/ReusableCellProtocol.html | 4 +- .../ReusableCellViewModelProtocol.html | 4 +- ...eusableSupplementaryViewModelProtocol.html | 4 +- docs/Protocols/TableCellViewModel.html | 22 +- .../TableSectionHeaderFooterViewModel.html | 6 +- .../TableViewCellModelEditActions.html | 2 +- docs/Structs.html | 2 +- docs/Structs/AnyDiffableViewModel.html | 2 +- docs/Structs/CollectionSectionViewModel.html | 4 +- docs/Structs/CollectionViewModel.html | 8 +- docs/Structs/SupplementaryViewInfo.html | 2 +- docs/Structs/TableSectionViewModel.html | 4 +- docs/Structs/TableViewModel.html | 8 +- docs/Structs/ViewRegistrationInfo.html | 2 +- docs/Typealiases.html | 2 +- .../Contents/Resources/Documents/Classes.html | 2 +- .../Classes/CollectionViewDriver.html | 4 +- .../Documents/Classes/TableViewDriver.html | 4 +- .../TableViewDriver/TableRefreshContext.html | 2 +- .../Contents/Resources/Documents/Enums.html | 2 +- .../Enums/SupplementaryViewKind.html | 2 +- .../Enums/ViewRegistrationMethod.html | 2 +- .../Contents/Resources/Documents/Guides.html | 2 +- .../Resources/Documents/Protocols.html | 2 +- .../Protocols/CollectionCellViewModel.html | 10 +- .../CollectionSupplementaryViewModel.html | 6 +- .../Protocols/DiffableViewModel.html | 4 +- .../Protocols/ReusableCellProtocol.html | 4 +- .../ReusableCellViewModelProtocol.html | 4 +- ...eusableSupplementaryViewModelProtocol.html | 4 +- .../Protocols/TableCellViewModel.html | 22 +- .../TableSectionHeaderFooterViewModel.html | 6 +- .../TableViewCellModelEditActions.html | 2 +- .../Contents/Resources/Documents/Structs.html | 2 +- .../Structs/AnyDiffableViewModel.html | 2 +- .../Structs/CollectionSectionViewModel.html | 4 +- .../Structs/CollectionViewModel.html | 8 +- .../Structs/SupplementaryViewInfo.html | 2 +- .../Structs/TableSectionViewModel.html | 4 +- .../Documents/Structs/TableViewModel.html | 8 +- .../Structs/ViewRegistrationInfo.html | 2 +- .../Resources/Documents/Typealiases.html | 2 +- .../Resources/Documents/getting-started.html | 46 +- .../Contents/Resources/Documents/index.html | 18 +- .../Contents/Resources/Documents/vision.html | 2 +- .../Contents/Resources/docSet.dsidx | Bin 45056 -> 45056 bytes docs/docsets/ReactiveLists.tgz | Bin 78561 -> 75022 bytes docs/getting-started.html | 46 +- docs/index.html | 18 +- docs/undocumented.json | 2 +- docs/vision.html | 2 +- 96 files changed, 2253 insertions(+), 789 deletions(-) diff --git a/.travis.yml b/.travis.yml index e410841..3beef4e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,17 +12,13 @@ cache: env: global: - - LANG=en_US.UTF-8 - - WORKSPACE="ReactiveLists.xcworkspace" - - FRAMEWORK_SCHEME="ReactiveLists" - EXAMPLE_SCHEME="Example" matrix: - - DESTINATION="OS=10.3.1,name=iPhone 7" SCHEME="$FRAMEWORK_SCHEME" POD_LINT="YES" CODE_COVERAGE="NO" - - DESTINATION="OS=11.4,name=iPhone X" SCHEME="$FRAMEWORK_SCHEME" POD_LINT="NO" CODE_COVERAGE="YES" - - DESTINATION="OS=12.0,name=iPhone 6s" SCHEME="$FRAMEWORK_SCHEME" POD_LINT="NO" CODE_COVERAGE="NO" + - DESTINATION="OS=11.4,name=iPhone X" SCHEME="$FRAMEWORK_SCHEME" POD_LINT="YES" + - DESTINATION="OS=12.0,name=iPhone X" SCHEME="$FRAMEWORK_SCHEME" POD_LINT="NO" # Note: travis installs ruby dependencies using bundler automatically, when there's a Gemfile @@ -37,7 +33,7 @@ script: bundle exec pod lib lint; fi - - xcodebuild test -workspace "$WORKSPACE" -scheme "$FRAMEWORK_SCHEME" -sdk "iphonesimulator" -destination "$DESTINATION" -configuration Debug -enableCodeCoverage "$CODE_COVERAGE" ONLY_ACTIVE_ARCH=NO | bundle exec xcpretty -c + - xcodebuild test -workspace "$WORKSPACE" -scheme "$FRAMEWORK_SCHEME" -sdk "iphonesimulator" -destination "$DESTINATION" -configuration Debug -enableCodeCoverage YES ONLY_ACTIVE_ARCH=NO | bundle exec xcpretty -c - if [ $BUILD_EXAMPLE == "YES" ]; then xcodebuild build -workspace "$WORKSPACE" -scheme "$EXAMPLE_SCHEME" -sdk "iphonesimulator" -destination "$DESTINATION" ONLY_ACTIVE_ARCH=NO | bundle exec xcpretty -c; diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ea6848..fef5f60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,19 @@ The changelog for `ReactiveLists`. Also see the [releases](https://github.com/pl NEXT ---- +0.5.0 +----- + +This release closes the [0.5.0 milestone](https://github.com/plangrid/ReactiveLists/milestone/12?closed=1). + +### Breaking + +- Migrated to Swift 5.0 +- Dropped support for iOS 10. iOS 11 and above now required. + ### Changed -- Upgrades DifferenceKit to 1.0.0 ([#156](https://github.com/plangrid/ReactiveLists/pull/156), [@anayini](https://github.com/anayini)) + +- Upgraded to DifferenceKit to 1.1.0 0.4.0 ----- diff --git a/Podfile b/Podfile index 5e8c23a..e506f93 100644 --- a/Podfile +++ b/Podfile @@ -1,13 +1,13 @@ source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '10.0' +platform :ios, '11.0' use_frameworks! inhibit_all_warnings! target 'ReactiveLists' do project 'ReactiveLists.xcodeproj' - pod 'DifferenceKit', '1.0.0' + pod 'DifferenceKit', '1.1.0' pod 'SwiftLint', '0.30.1' target 'ReactiveListsExample' do diff --git a/Podfile.lock b/Podfile.lock index dac4bcf..036ac90 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,14 +1,14 @@ PODS: - - DifferenceKit (1.0.0): - - DifferenceKit/Core (= 1.0.0) - - DifferenceKit/UIKitExtension (= 1.0.0) - - DifferenceKit/Core (1.0.0) - - DifferenceKit/UIKitExtension (1.0.0): + - DifferenceKit (1.1.0): + - DifferenceKit/Core (= 1.1.0) + - DifferenceKit/UIKitExtension (= 1.1.0) + - DifferenceKit/Core (1.1.0) + - DifferenceKit/UIKitExtension (1.1.0): - DifferenceKit/Core - SwiftLint (0.30.1) DEPENDENCIES: - - DifferenceKit (= 1.0.0) + - DifferenceKit (= 1.1.0) - SwiftLint (= 0.30.1) SPEC REPOS: @@ -17,9 +17,9 @@ SPEC REPOS: - SwiftLint SPEC CHECKSUMS: - DifferenceKit: d501e37b866e98a8aaee0f61ceb02ad98e52b9c1 + DifferenceKit: 7726ceeff4ec3748788e4b01396861b283797440 SwiftLint: a54bf1fe12b55c68560eb2a7689dfc81458508f7 -PODFILE CHECKSUM: bfad59a1cf3109662a4bc67043009ea60c8542aa +PODFILE CHECKSUM: f4d525d7ba27317176274dd214708a367af86650 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.1 diff --git a/Pods/DifferenceKit/LICENSE b/Pods/DifferenceKit/LICENSE index d892df5..f49a4e1 100644 --- a/Pods/DifferenceKit/LICENSE +++ b/Pods/DifferenceKit/LICENSE @@ -1,22 +1,201 @@ -The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/Pods/DifferenceKit/README.md b/Pods/DifferenceKit/README.md index 01b53d7..e0da414 100644 --- a/Pods/DifferenceKit/README.md +++ b/Pods/DifferenceKit/README.md @@ -7,7 +7,7 @@ The algorithm is optimized based on the Paul Heckel's algorithm.

-Swift4 +Swift5 Release CocoaPods Carthage @@ -15,7 +15,7 @@ The algorithm is optimized based on the Paul Heckel's algorithm.
Build Status Platform -Lincense +Lincense

--- @@ -351,5 +351,38 @@ If your pull request including new function, please write test cases for it. --- +## Credit + +#### Bibliography +DifferenceKit was developed with reference to the following excellent materials. + +- [A technique for isolating differences between files](https://dl.acm.org/citation.cfm?id=359467) (by [Paul Heckel](https://dl.acm.org/author_page.cfm?id=81100051772)) +- [DifferenceAlgorithmComparison](https://github.com/horita-yuya/DifferenceAlgorithmComparison) (by [@horita-yuya](https://github.com/horita-yuya)) +- [RxDataSources](https://github.com/RxSwiftCommunity/RxDataSources) (by [@kzaher](https://github.com/kzaher), [RxSwift Community](https://github.com/RxSwiftCommunity)) + +#### OSS using DifferenceKit +The list of the awesome OSS which uses this library. They also help to understanding how to use DifferenceKit. + +- [Carbon](https://github.com/ra1028/Carbon) (by [@ra1028](https://github.com/ra1028)) +- [Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) (by [RocketChat](https://github.com/RocketChat)) +- [wire-ios](https://github.com/wireapp/wire-ios) (by [Wire Swiss GmbH](https://github.com/wireapp)) +- [ReactiveLists](https://github.com/plangrid/ReactiveLists) (by [PlanGrid](https://github.com/plangrid)) +- [ReduxMovieDB](https://github.com/cardoso/ReduxMovieDB) (by [@cardoso](https://github.com/cardoso)) +- [TetrisDiffingCompetition](https://github.com/skagedal/TetrisDiffingCompetition) (by [@skagedal](https://github.com/skagedal)) + +#### Other diffing libraries +I respect and ️❤️ all libraries involved in diffing. + +- [IGListKit](https://github.com/Instagram/IGListKit) (by [Instagram](https://github.com/Instagram)) +- [FlexibleDiff](https://github.com/RACCommunity/FlexibleDiff) (by [@andersio](https://github.com/andersio), [RACCommunity](https://github.com/RACCommunity)) +- [DeepDiff](https://github.com/onmyway133/DeepDiff) (by [@onmyway133](https://github.com/onmyway133)) +- [Changeset](https://github.com/osteslag/Changeset) (by [@osteslag](https://github.com/osteslag)) +- [Differ](https://github.com/tonyarnold/Differ) (by [@tonyarnold](https://github.com/tonyarnold)) +- [Diff.swift](https://github.com/wokalski/Diff.swift) (by [@wokalski](https://github.com/wokalski)) +- [Dwifft](https://github.com/jflinter/Dwifft) (by [@jflinter](https://github.com/jflinter)) +- [ListDiff](https://github.com/lxcid/ListDiff) (by [@lxcid](https://github.com/lxcid)) + +--- + ## License -DifferenceKit is released under the [MIT License](https://github.com/ra1028/DifferenceKit/blob/master/LICENSE). +DifferenceKit is released under the [Apache 2.0 License](https://github.com/ra1028/DifferenceKit/blob/master/LICENSE). diff --git a/Pods/DifferenceKit/Sources/Algorithm.swift b/Pods/DifferenceKit/Sources/Algorithm.swift index d9ee9a5..12c9a70 100644 --- a/Pods/DifferenceKit/Sources/Algorithm.swift +++ b/Pods/DifferenceKit/Sources/Algorithm.swift @@ -19,7 +19,7 @@ public extension StagedChangeset where Collection: RangeReplaceableCollection, C /// /// - Complexity: O(n) @inlinable - public init(source: Collection, target: Collection) { + init(source: Collection, target: Collection) { self.init(source: source, target: target, section: 0) } @@ -44,7 +44,7 @@ public extension StagedChangeset where Collection: RangeReplaceableCollection, C /// /// - Complexity: O(n) @inlinable - public init(source: Collection, target: Collection, section: Int) { + init(source: Collection, target: Collection, section: Int) { let sourceElements = ContiguousArray(source) let targetElements = ContiguousArray(target) @@ -151,7 +151,7 @@ public extension StagedChangeset where Collection: RangeReplaceableCollection, C /// /// - Complexity: O(n) @inlinable - public init(source: Collection, target: Collection) { + init(source: Collection, target: Collection) { typealias Section = Collection.Element typealias SectionIdentifier = Collection.Element.DifferenceIdentifier typealias Element = Collection.Element.Collection.Element @@ -327,7 +327,7 @@ public extension StagedChangeset where Collection: RangeReplaceableCollection, C for targetElementIndex in targetElements.indices { untrackedSourceIndex = untrackedSourceIndex.flatMap { index in - sourceElementTraces[sourceSectionIndex].suffix(from: index).index { !$0.isTracked } + sourceElementTraces[sourceSectionIndex].suffix(from: index).firstIndex { !$0.isTracked } } let targetElementPath = ElementPath(element: targetElementIndex, section: targetSectionIndex) @@ -537,7 +537,7 @@ internal func differentiate( // Record the updates/moves/insertions. for targetIndex in target.indices { untrackedSourceIndex = untrackedSourceIndex.flatMap { index in - sourceTraces.suffix(from: index).index { !$0.isTracked } + sourceTraces.suffix(from: index).firstIndex { !$0.isTracked } } if let sourceIndex = targetReferences[targetIndex] { @@ -654,26 +654,31 @@ internal final class IndicesReference { @usableFromInline internal struct TableKey: Hashable { @usableFromInline - internal let hashValue: Int + internal let pointeeHashValue: Int @usableFromInline internal let pointer: UnsafePointer @inlinable internal init(pointer: UnsafePointer) { - self.hashValue = pointer.pointee.hashValue + self.pointeeHashValue = pointer.pointee.hashValue self.pointer = pointer } @inlinable internal static func == (lhs: TableKey, rhs: TableKey) -> Bool { - return lhs.hashValue == rhs.hashValue + return lhs.pointeeHashValue == rhs.pointeeHashValue && (lhs.pointer.distance(to: rhs.pointer) == 0 || lhs.pointer.pointee == rhs.pointer.pointee) } + + @inlinable + internal func hash(into hasher: inout Hasher) { + hasher.combine(pointer.pointee) + } } internal extension MutableCollection where Element: MutableCollection, Index == Int, Element.Index == Int { @inlinable - internal subscript(path: ElementPath) -> Element.Element { + subscript(path: ElementPath) -> Element.Element { get { return self[path.section][path.element] } set { self[path.section][path.element] = newValue } } diff --git a/Pods/DifferenceKit/Sources/Changeset.swift b/Pods/DifferenceKit/Sources/Changeset.swift index 327429b..16e6561 100644 --- a/Pods/DifferenceKit/Sources/Changeset.swift +++ b/Pods/DifferenceKit/Sources/Changeset.swift @@ -65,7 +65,7 @@ public struct Changeset { public extension Changeset { /// The number of section changes. @inlinable - public var sectionChangeCount: Int { + var sectionChangeCount: Int { return sectionDeleted.count + sectionInserted.count + sectionUpdated.count @@ -74,7 +74,7 @@ public extension Changeset { /// The number of element changes. @inlinable - public var elementChangeCount: Int { + var elementChangeCount: Int { return elementDeleted.count + elementInserted.count + elementUpdated.count @@ -83,25 +83,25 @@ public extension Changeset { /// The number of all changes. @inlinable - public var changeCount: Int { + var changeCount: Int { return sectionChangeCount + elementChangeCount } /// A Boolean value indicating whether has section changes. @inlinable - public var hasSectionChanges: Bool { + var hasSectionChanges: Bool { return sectionChangeCount > 0 } /// A Boolean value indicating whether has element changes. @inlinable - public var hasElementChanges: Bool { + var hasElementChanges: Bool { return elementChangeCount > 0 } /// A Boolean value indicating whether has changes. @inlinable - public var hasChanges: Bool { + var hasChanges: Bool { return changeCount > 0 } } diff --git a/Pods/DifferenceKit/Sources/Extensions/UIKitExtension.swift b/Pods/DifferenceKit/Sources/Extensions/UIKitExtension.swift index e40f75d..3a1eab9 100644 --- a/Pods/DifferenceKit/Sources/Extensions/UIKitExtension.swift +++ b/Pods/DifferenceKit/Sources/Extensions/UIKitExtension.swift @@ -23,12 +23,12 @@ public extension UITableView { ) { reload( using: stagedChangeset, - deleteSectionsAnimation: animation, - insertSectionsAnimation: animation, - reloadSectionsAnimation: animation, - deleteRowsAnimation: animation, - insertRowsAnimation: animation, - reloadRowsAnimation: animation, + deleteSectionsAnimation: animation(), + insertSectionsAnimation: animation(), + reloadSectionsAnimation: animation(), + deleteRowsAnimation: animation(), + insertRowsAnimation: animation(), + reloadRowsAnimation: animation(), interrupt: interrupt, setData: setData ) diff --git a/Pods/DifferenceKit/Sources/StagedChangeset.swift b/Pods/DifferenceKit/Sources/StagedChangeset.swift index a917203..60db5d4 100644 --- a/Pods/DifferenceKit/Sources/StagedChangeset.swift +++ b/Pods/DifferenceKit/Sources/StagedChangeset.swift @@ -44,6 +44,8 @@ public struct StagedChangeset { } extension StagedChangeset: RandomAccessCollection, RangeReplaceableCollection, MutableCollection { + public typealias Element = Changeset + @inlinable public init() { self.init([]) diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index dac4bcf..036ac90 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,14 +1,14 @@ PODS: - - DifferenceKit (1.0.0): - - DifferenceKit/Core (= 1.0.0) - - DifferenceKit/UIKitExtension (= 1.0.0) - - DifferenceKit/Core (1.0.0) - - DifferenceKit/UIKitExtension (1.0.0): + - DifferenceKit (1.1.0): + - DifferenceKit/Core (= 1.1.0) + - DifferenceKit/UIKitExtension (= 1.1.0) + - DifferenceKit/Core (1.1.0) + - DifferenceKit/UIKitExtension (1.1.0): - DifferenceKit/Core - SwiftLint (0.30.1) DEPENDENCIES: - - DifferenceKit (= 1.0.0) + - DifferenceKit (= 1.1.0) - SwiftLint (= 0.30.1) SPEC REPOS: @@ -17,9 +17,9 @@ SPEC REPOS: - SwiftLint SPEC CHECKSUMS: - DifferenceKit: d501e37b866e98a8aaee0f61ceb02ad98e52b9c1 + DifferenceKit: 7726ceeff4ec3748788e4b01396861b283797440 SwiftLint: a54bf1fe12b55c68560eb2a7689dfc81458508f7 -PODFILE CHECKSUM: bfad59a1cf3109662a4bc67043009ea60c8542aa +PODFILE CHECKSUM: f4d525d7ba27317176274dd214708a367af86650 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 31c6efa..24b856f 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -6,379 +6,419 @@ objectVersion = 46; objects = { +/* Begin PBXAggregateTarget section */ + CE53B9448B4F43CF4DC243FAF240FEAC /* SwiftLint */ = { + isa = PBXAggregateTarget; + buildConfigurationList = DAE5C3AB90A4378717EA696867A67ECE /* Build configuration list for PBXAggregateTarget "SwiftLint" */; + buildPhases = ( + ); + dependencies = ( + ); + name = SwiftLint; + productName = SwiftLint; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ - 10A0529B3CC3C5F290C90D0208610CF3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - 199315F81A5C7412119704B59BFA224B /* ArraySection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 885EE47206B90A7C63BD540FEC9DFDF8 /* ArraySection.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2F1993085EB6E390A18E8B1A0A7EC8F1 /* AnyDifferentiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2EFC2F23401D2BC93550A76BE37992 /* AnyDifferentiable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 36F54F442B84342426EDDCD8E0342C09 /* Pods-ReactiveLists-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE6C59BD7669713C77BAC3443746B5DE /* Pods-ReactiveLists-dummy.m */; }; - 37FFFB43A4E20DF61685CCF446C87DEE /* DifferenceKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE4FB784973B9D5B6793744123BCBAD /* DifferenceKit-dummy.m */; }; - 405B217C29B7FAA14609B67FA6BA5BC0 /* UIKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8332CBB89F9C90CE2CF1430F9A7991F6 /* UIKitExtension.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5BF40572B9A89991B37B458E438AACF2 /* ElementPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A9CCA32A341DA8083075D4762E13B42 /* ElementPath.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6B749355EDD4AC80511EE49F1694102C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - 6E6EDC45E8D84EBE7751FE5C460C0167 /* Algorithm.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8DE730CE16EBD60A3AED4E4F2CC6744 /* Algorithm.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 72CFD2F59774F4046EEE108B7B68C0D6 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5343ECCD027724500DF49E141FC554 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m */; }; - 756CF43CB227EC8ACC7698B4B0E317FF /* Changeset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3333B33D5338FD3644670E027A6B53D8 /* Changeset.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8D53AAF4433C7322235C820AF1E22923 /* StagedChangeset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5875DE57B3CB9BC0309E3A30A82195C0 /* StagedChangeset.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8E7FC6FB669189B755B504268C906BC8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - 92431160914B4E4187C9339DBA97EB81 /* Pods-ReactiveListsTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C59CF5C323494B3F1D789F2DBBA8EB7 /* Pods-ReactiveListsTests-dummy.m */; }; - 97F107BB5D5AD0CDAD97319DF3BFDC0C /* Pods-ReactiveLists-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 67F77AD5BE16ABB539C913D9B97439DA /* Pods-ReactiveLists-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1FE9EEBE7705B14B7BAFBB5ADA9ACE0 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DC27AB8BC897B36466A70CCCEFC37D3 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AE099F721E5A9AF348A6DCD907298744 /* Pods-ReactiveListsTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 077F63C096C41C515DECE309492BABF1 /* Pods-ReactiveListsTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CC3B24547E7F359D568677A2E6BCB391 /* ContentEquatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B015FD73AA0B2D5EAAE2650F50D9D144 /* ContentEquatable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EB5A242724B69EBB9701FB7A79C933CE /* DifferenceKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8147F7636B15458D13A5380774613421 /* DifferenceKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB971B5E9D742F2F8F340F99EB98FBD2 /* DifferentiableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC12DFD12F98DE09C8A65B699AF2C89A /* DifferentiableSection.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F039FE5EBD1AE12F304F1B0D11AC7B54 /* Differentiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87A137FF4370512DF95FA11AAEE82D3C /* Differentiable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F0AD5860D8D666576E56FA5B13FDEBAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - FBF52138E61E1ABBF1AE58298D1F59F8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */; }; + 0192EADC0AEB33365810E41C793F5501 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + 08E7BAC6AE545BD1C4A2829ADB768D74 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DB194EC318DE79065CFB3B760D71E4FD /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0F521284DAA6E193C73E55D85E978870 /* DifferentiableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EED67DB35DF8108BE9CFB2827247C69 /* DifferentiableSection.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 13C0FF0FAA81C17A6C48810AC2A967AF /* Pods-ReactiveListsTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 29874532193D4459F705BAAE82D92540 /* Pods-ReactiveListsTests-dummy.m */; }; + 1F61C53E4CCA5255766B2F00A3F9DB81 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */; }; + 2D8CE32B29C68364F83342FCA433C47A /* Pods-ReactiveListsTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 540C0B253BD43C91EB5C776CAF0F9D0D /* Pods-ReactiveListsTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 315A6E36CEBAEA46F688C011E31F4CE8 /* Pods-ReactiveLists-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 019D0620F3632A03ABBBD732A4AB7751 /* Pods-ReactiveLists-dummy.m */; }; + 445981852B19432F19A3941AC67502D1 /* UIKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E12EF93796501495277B2849AE0B8ED /* UIKitExtension.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5296D111658799141925BC8AE9A48508 /* DifferenceKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E62A642C20B5796EE7C736073B2805D6 /* DifferenceKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6391BA76D8E59D632645CDD31756E412 /* Changeset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C58BCF65AF128ABC19C9C67B1A98640 /* Changeset.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 967C4076ED249F1211D79F5DD090F229 /* ArraySection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7639986D780DEF7B23B13DA30CF69062 /* ArraySection.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A65B1D2007B8350209B9A4702949D8CB /* StagedChangeset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07ED38A2C65270F0745BB7AF665CED35 /* StagedChangeset.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A76A4BDBBE96BD9B7495DFBAB7163154 /* Algorithm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 800FAF6C20121658EB1F1A29BDE82A4D /* Algorithm.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A96336B37B20546430D866CCBD4293AC /* Pods-ReactiveLists-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D74ACC882BD83979EEA2903B740682C5 /* Pods-ReactiveLists-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AE0F4F2C5463D1B880315D5A16DAA68E /* ElementPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 691D00B054A33D29B44C720470FE6C7E /* ElementPath.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B585BFF509D003AED1003F46940C3650 /* DifferenceKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3682FA5D7A4AB3AEE796CCB41C0D59FB /* DifferenceKit-dummy.m */; }; + B7206CEDA0144D4C99F01513017DF375 /* AnyDifferentiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FCF2E147E87F75208DCB44A295028C9 /* AnyDifferentiable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C191F9821CD9D8859A97A7127C498397 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + C7C7AD07733A9E1570C6472CCB1D1EBF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + CB2FE2D053179149F2470AA9208E2791 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + CC41CB5ADB110709FAB0BCDF66765A09 /* Differentiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DB4B3BBF7D19B682A66C8774E69AAD7 /* Differentiable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CCDB47B59B6530ACAE681566DC406141 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E8A71E24765A168428998EB9B879CDA /* Pods-ReactiveLists-ReactiveListsExample-dummy.m */; }; + EDA8CA153F122B098D6C67F02F20BEE4 /* ContentEquatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56EC4B4176977586FC1B4ADA31FA7090 /* ContentEquatable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 047813632521914716811184A8E9F61E /* PBXContainerItemProxy */ = { + 202C3491325059E5B696AAF136994A13 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1CCB43B4B7F6E290D8BEAC0CE12DC9E9; + remoteGlobalIDString = CE53B9448B4F43CF4DC243FAF240FEAC; + remoteInfo = SwiftLint; + }; + 9F58733F3C1225B9F82667DC90CDD783 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C4242E3CE1AB068010AEA784EA805A7; remoteInfo = DifferenceKit; }; - 27E032B0372DAB2327B6ADFB7209567A /* PBXContainerItemProxy */ = { + A0BDCEAB25E7A5C15498614C218300BF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1CCB43B4B7F6E290D8BEAC0CE12DC9E9; + remoteGlobalIDString = CE53B9448B4F43CF4DC243FAF240FEAC; + remoteInfo = SwiftLint; + }; + C005FDD19E2B2335EDE7EB3A0712941B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C4242E3CE1AB068010AEA784EA805A7; remoteInfo = DifferenceKit; }; - 40077FA502434AE208665586FBB61A36 /* PBXContainerItemProxy */ = { + EA7B1A61BA24ADFE3B73589748D40651 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1CCB43B4B7F6E290D8BEAC0CE12DC9E9; + remoteGlobalIDString = 6C4242E3CE1AB068010AEA784EA805A7; remoteInfo = DifferenceKit; }; + EE9ABAB0364559D790A7A27332494F47 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CE53B9448B4F43CF4DC243FAF240FEAC; + remoteInfo = SwiftLint; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 077F63C096C41C515DECE309492BABF1 /* Pods-ReactiveListsTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactiveListsTests-umbrella.h"; sourceTree = ""; }; - 09C4C1CBBBCDD3D3B746B4C4999941F2 /* Pods-ReactiveListsTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveListsTests-acknowledgements.plist"; sourceTree = ""; }; - 0CCD2504C7F9C9FE3E428F56D0CD04A1 /* Pods-ReactiveLists.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists.debug.xcconfig"; sourceTree = ""; }; - 0DFDF67C51FF6A636685EE674B35EE25 /* Pods-ReactiveLists-ReactiveListsExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveLists-ReactiveListsExample-frameworks.sh"; sourceTree = ""; }; - 116574C9FF8EB5FC53C751AC50912AF8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 157DE719AE8ACA5E30F2AB3F6FB13B49 /* Pods-ReactiveLists-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveLists-acknowledgements.plist"; sourceTree = ""; }; - 16A36A1E59AB34E2D35DF8EDB28E4E09 /* Pods-ReactiveLists-ReactiveListsExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactiveLists-ReactiveListsExample.modulemap"; sourceTree = ""; }; - 16DC03E217CC617BD498BE8E5EAA14E9 /* Pods-ReactiveLists.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactiveLists.modulemap"; sourceTree = ""; }; - 18C6E2B544ED038A3DFBC3098DBCBF05 /* Pods-ReactiveListsTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveListsTests.debug.xcconfig"; sourceTree = ""; }; - 1E9299E3DE5011428D5E0A4EC9C84E01 /* DifferenceKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DifferenceKit.modulemap; sourceTree = ""; }; - 2AC90E62B734508A0FCFC653E7A31683 /* Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig"; sourceTree = ""; }; - 2AE4FB784973B9D5B6793744123BCBAD /* DifferenceKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DifferenceKit-dummy.m"; sourceTree = ""; }; - 2DC27AB8BC897B36466A70CCCEFC37D3 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactiveLists-ReactiveListsExample-umbrella.h"; sourceTree = ""; }; - 3333B33D5338FD3644670E027A6B53D8 /* Changeset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Changeset.swift; path = Sources/Changeset.swift; sourceTree = ""; }; - 3F77C912163DF5DF098F86DFDACE7D90 /* Pods-ReactiveListsTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactiveListsTests-acknowledgements.markdown"; sourceTree = ""; }; - 531995376063C09D3902C2E4C2EFD97E /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown"; sourceTree = ""; }; - 54D84C3A8195E31D703CF5EA48FF9BFF /* Pods-ReactiveLists-ReactiveListsExample-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveLists-ReactiveListsExample-resources.sh"; sourceTree = ""; }; - 5875DE57B3CB9BC0309E3A30A82195C0 /* StagedChangeset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StagedChangeset.swift; path = Sources/StagedChangeset.swift; sourceTree = ""; }; - 5B4999957B7299E107A21BAC5BF91129 /* Pods-ReactiveLists.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists.release.xcconfig"; sourceTree = ""; }; - 5C59CF5C323494B3F1D789F2DBBA8EB7 /* Pods-ReactiveListsTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactiveListsTests-dummy.m"; sourceTree = ""; }; - 5CA8B89B9510D3B827766966FB2DE870 /* Pods_ReactiveLists.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReactiveLists.framework; path = "Pods-ReactiveLists.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 67F77AD5BE16ABB539C913D9B97439DA /* Pods-ReactiveLists-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactiveLists-umbrella.h"; sourceTree = ""; }; - 760D038C2D89DD28E74C47DD91DAF418 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7A9CCA32A341DA8083075D4762E13B42 /* ElementPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementPath.swift; path = Sources/ElementPath.swift; sourceTree = ""; }; - 8147F7636B15458D13A5380774613421 /* DifferenceKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DifferenceKit-umbrella.h"; sourceTree = ""; }; - 8162E24BE29B7395EC6615E5229183AF /* Pods_ReactiveListsTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReactiveListsTests.framework; path = "Pods-ReactiveListsTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8332CBB89F9C90CE2CF1430F9A7991F6 /* UIKitExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitExtension.swift; path = Sources/Extensions/UIKitExtension.swift; sourceTree = ""; }; - 86570C7F10A6E0FA03885DFDA55E50D3 /* Pods-ReactiveListsTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactiveListsTests.modulemap"; sourceTree = ""; }; - 87A137FF4370512DF95FA11AAEE82D3C /* Differentiable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Differentiable.swift; path = Sources/Differentiable.swift; sourceTree = ""; }; - 885EE47206B90A7C63BD540FEC9DFDF8 /* ArraySection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ArraySection.swift; path = Sources/ArraySection.swift; sourceTree = ""; }; - 8C5343ECCD027724500DF49E141FC554 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactiveLists-ReactiveListsExample-dummy.m"; sourceTree = ""; }; - 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 91435878720982AAA4A55C6C7085D7EC /* DifferenceKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DifferenceKit.xcconfig; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A3A11FB2D9AED61A956891F7980A538B /* Pods_ReactiveLists_ReactiveListsExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReactiveLists_ReactiveListsExample.framework; path = "Pods-ReactiveLists-ReactiveListsExample.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - A86CF2EEC11C7E044420AF22516AF526 /* DifferenceKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DifferenceKit.framework; path = DifferenceKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A8DE730CE16EBD60A3AED4E4F2CC6744 /* Algorithm.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Algorithm.swift; path = Sources/Algorithm.swift; sourceTree = ""; }; - AC12DFD12F98DE09C8A65B699AF2C89A /* DifferentiableSection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DifferentiableSection.swift; path = Sources/DifferentiableSection.swift; sourceTree = ""; }; - AE6C59BD7669713C77BAC3443746B5DE /* Pods-ReactiveLists-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactiveLists-dummy.m"; sourceTree = ""; }; - B015FD73AA0B2D5EAAE2650F50D9D144 /* ContentEquatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContentEquatable.swift; path = Sources/ContentEquatable.swift; sourceTree = ""; }; - B954323BFD2178B30660FD15B45035A2 /* Pods-ReactiveLists-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveLists-resources.sh"; sourceTree = ""; }; - BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - C51AA72514E0DFA60B554C4A6998B621 /* Pods-ReactiveListsTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveListsTests.release.xcconfig"; sourceTree = ""; }; - C573547693E5B993358D7BDBA1D615DD /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - E306A31585C5CF6D786DB047B9D2E9B7 /* Pods-ReactiveListsTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveListsTests-frameworks.sh"; sourceTree = ""; }; - E3C6DD930C99A5D7335B4213B81435E7 /* Pods-ReactiveLists-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactiveLists-acknowledgements.markdown"; sourceTree = ""; }; - E85B28002AF138D1A4148F60758B33AF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - EB2EFC2F23401D2BC93550A76BE37992 /* AnyDifferentiable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyDifferentiable.swift; path = Sources/AnyDifferentiable.swift; sourceTree = ""; }; - F043199093F613FCF445AEFF8196FF19 /* DifferenceKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DifferenceKit-prefix.pch"; sourceTree = ""; }; - F2212AA261D7BC23D65DB471B391225B /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist"; sourceTree = ""; }; - F65A23E0B8C7657BA9DAE7603D66CD6B /* Pods-ReactiveListsTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveListsTests-resources.sh"; sourceTree = ""; }; - FC656316CE90F934E2C128C2DD505710 /* Pods-ReactiveLists-ReactiveListsExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists-ReactiveListsExample.release.xcconfig"; sourceTree = ""; }; + 019D0620F3632A03ABBBD732A4AB7751 /* Pods-ReactiveLists-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactiveLists-dummy.m"; sourceTree = ""; }; + 07ED38A2C65270F0745BB7AF665CED35 /* StagedChangeset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StagedChangeset.swift; path = Sources/StagedChangeset.swift; sourceTree = ""; }; + 083107BF64DFDECD11D5EF54A08E1285 /* Pods-ReactiveListsTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactiveListsTests-acknowledgements.markdown"; sourceTree = ""; }; + 0E12EF93796501495277B2849AE0B8ED /* UIKitExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitExtension.swift; path = Sources/Extensions/UIKitExtension.swift; sourceTree = ""; }; + 13AD5961100D37B4027C8EB9C85FEAC3 /* Pods-ReactiveListsTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveListsTests.release.xcconfig"; sourceTree = ""; }; + 16626B4FEC9494E5E3930FBAD7255BB1 /* Pods-ReactiveListsTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveListsTests-acknowledgements.plist"; sourceTree = ""; }; + 1CE4562E0786A2EB514E3E9FC511C224 /* Pods-ReactiveListsTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveListsTests.debug.xcconfig"; sourceTree = ""; }; + 1DB4B3BBF7D19B682A66C8774E69AAD7 /* Differentiable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Differentiable.swift; path = Sources/Differentiable.swift; sourceTree = ""; }; + 2442B9348069DEC0AEDA0AC0E1F5750B /* Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig"; sourceTree = ""; }; + 257E2F84E22B56735D77C8248A662D18 /* Pods_ReactiveListsTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ReactiveListsTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 285415B7F361092B611A1B6DA8A4F583 /* Pods-ReactiveLists-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactiveLists-acknowledgements.markdown"; sourceTree = ""; }; + 29874532193D4459F705BAAE82D92540 /* Pods-ReactiveListsTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactiveListsTests-dummy.m"; sourceTree = ""; }; + 2E8A71E24765A168428998EB9B879CDA /* Pods-ReactiveLists-ReactiveListsExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactiveLists-ReactiveListsExample-dummy.m"; sourceTree = ""; }; + 31AF63A9B4E263B737D22C84EB3784D2 /* Pods-ReactiveLists-ReactiveListsExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveLists-ReactiveListsExample-frameworks.sh"; sourceTree = ""; }; + 3682FA5D7A4AB3AEE796CCB41C0D59FB /* DifferenceKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DifferenceKit-dummy.m"; sourceTree = ""; }; + 3EED67DB35DF8108BE9CFB2827247C69 /* DifferentiableSection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DifferentiableSection.swift; path = Sources/DifferentiableSection.swift; sourceTree = ""; }; + 3FCF2E147E87F75208DCB44A295028C9 /* AnyDifferentiable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyDifferentiable.swift; path = Sources/AnyDifferentiable.swift; sourceTree = ""; }; + 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 4C58BCF65AF128ABC19C9C67B1A98640 /* Changeset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Changeset.swift; path = Sources/Changeset.swift; sourceTree = ""; }; + 4FF1F2A51958AEA19CFE7435DCDA5304 /* Pods-ReactiveListsTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactiveListsTests.modulemap"; sourceTree = ""; }; + 51B657FFA0D2C589C5F5DA5F5A2CE62B /* Pods-ReactiveLists-ReactiveListsExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveLists-ReactiveListsExample-Info.plist"; sourceTree = ""; }; + 540C0B253BD43C91EB5C776CAF0F9D0D /* Pods-ReactiveListsTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactiveListsTests-umbrella.h"; sourceTree = ""; }; + 56EC4B4176977586FC1B4ADA31FA7090 /* ContentEquatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContentEquatable.swift; path = Sources/ContentEquatable.swift; sourceTree = ""; }; + 5F68B08A686C6F67EEB9C1ADDFEB8F23 /* Pods_ReactiveLists_ReactiveListsExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ReactiveLists_ReactiveListsExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 63F80488F5A4EC01AB7EE774FABDF1C7 /* Pods-ReactiveLists.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists.debug.xcconfig"; sourceTree = ""; }; + 691D00B054A33D29B44C720470FE6C7E /* ElementPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementPath.swift; path = Sources/ElementPath.swift; sourceTree = ""; }; + 7639986D780DEF7B23B13DA30CF69062 /* ArraySection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ArraySection.swift; path = Sources/ArraySection.swift; sourceTree = ""; }; + 7BD2BEB7D15F08D4F09A35E066C5B13D /* Pods_ReactiveLists.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ReactiveLists.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 800FAF6C20121658EB1F1A29BDE82A4D /* Algorithm.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Algorithm.swift; path = Sources/Algorithm.swift; sourceTree = ""; }; + 85540A20B5D17B70356F8FBA58DFEEC3 /* Pods-ReactiveListsTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveListsTests-Info.plist"; sourceTree = ""; }; + 9A80561D2BEE0F42E902FE23DB4CD88E /* Pods-ReactiveLists.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists.release.xcconfig"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + AD8652116B579828C9E0F969B72C10D3 /* Pods-ReactiveLists-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveLists-acknowledgements.plist"; sourceTree = ""; }; + B63182992F43AADB905F10444D1C9B4C /* Pods-ReactiveLists-ReactiveListsExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactiveLists-ReactiveListsExample.modulemap"; sourceTree = ""; }; + BAF405CFB11C16F4EDE4500C47C76A9E /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown"; sourceTree = ""; }; + C244F44D284BF40256C6D0C5B1A7217A /* Pods-ReactiveLists-ReactiveListsExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactiveLists-ReactiveListsExample.release.xcconfig"; sourceTree = ""; }; + C2AD050A31D6C991818FE2CA8D862F20 /* Pods-ReactiveLists-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveLists-Info.plist"; sourceTree = ""; }; + C357B1A9EDD680E8DA0B3389BD750ECD /* DifferenceKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DifferenceKit.xcconfig; sourceTree = ""; }; + CBE15B5531F09D3F1A900A4F484BC3B7 /* DifferenceKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DifferenceKit-Info.plist"; sourceTree = ""; }; + CC9B14BBEB2C75EDE05F7931DA6856B0 /* DifferenceKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DifferenceKit.modulemap; sourceTree = ""; }; + CE312540ACC0D141115B592117F64A3B /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist"; sourceTree = ""; }; + D74ACC882BD83979EEA2903B740682C5 /* Pods-ReactiveLists-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactiveLists-umbrella.h"; sourceTree = ""; }; + DB194EC318DE79065CFB3B760D71E4FD /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactiveLists-ReactiveListsExample-umbrella.h"; sourceTree = ""; }; + E48E3F1F7598CC49F9918BCFC0BB48F9 /* Pods-ReactiveLists.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactiveLists.modulemap"; sourceTree = ""; }; + E5A284382AD6E5C079516EB00C86C4FA /* SwiftLint.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.xcconfig; sourceTree = ""; }; + E62A642C20B5796EE7C736073B2805D6 /* DifferenceKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DifferenceKit-umbrella.h"; sourceTree = ""; }; + EC8E9D6D0AA06E9944E06C78E31CC380 /* DifferenceKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DifferenceKit-prefix.pch"; sourceTree = ""; }; + ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + EEEA2713E341B2870661536C3716B74A /* DifferenceKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DifferenceKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F7677A342FD7F9A29CFE6BA00706EFB5 /* Pods-ReactiveListsTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactiveListsTests-frameworks.sh"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4DAC11D963A8F4D12979273B3A04835D /* Frameworks */ = { + 437FC364755403FC7683912D804B3460 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8E7FC6FB669189B755B504268C906BC8 /* Foundation.framework in Frameworks */, + 0192EADC0AEB33365810E41C793F5501 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7AF1D9282F658EBEBCB3D322C40165FB /* Frameworks */ = { + A2B3F1C1C86FB7451F4187CF06448057 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 10A0529B3CC3C5F290C90D0208610CF3 /* Foundation.framework in Frameworks */, + C7C7AD07733A9E1570C6472CCB1D1EBF /* Foundation.framework in Frameworks */, + 1F61C53E4CCA5255766B2F00A3F9DB81 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8CAD8BB8611105627569A65AA03610F7 /* Frameworks */ = { + C4E4096603BAC4BE447B795854A53B3C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F0AD5860D8D666576E56FA5B13FDEBAE /* Foundation.framework in Frameworks */, - FBF52138E61E1ABBF1AE58298D1F59F8 /* UIKit.framework in Frameworks */, + C191F9821CD9D8859A97A7127C498397 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9425E1CF69C4B29D6283F1EB13190DFD /* Frameworks */ = { + ED5DA504CD2DC6F1289857309BD79B34 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6B749355EDD4AC80511EE49F1694102C /* Foundation.framework in Frameworks */, + CB2FE2D053179149F2470AA9208E2791 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00B559F9C37F9E59EE73956BDD4B3580 /* Products */ = { + 003D627296C488F562D98B6E13CFA926 /* Support Files */ = { isa = PBXGroup; children = ( - A86CF2EEC11C7E044420AF22516AF526 /* DifferenceKit.framework */, - 5CA8B89B9510D3B827766966FB2DE870 /* Pods_ReactiveLists.framework */, - A3A11FB2D9AED61A956891F7980A538B /* Pods_ReactiveLists_ReactiveListsExample.framework */, - 8162E24BE29B7395EC6615E5229183AF /* Pods_ReactiveListsTests.framework */, + E5A284382AD6E5C079516EB00C86C4FA /* SwiftLint.xcconfig */, ); - name = Products; + name = "Support Files"; + path = "../Target Support Files/SwiftLint"; sourceTree = ""; }; - 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */ = { + 132DD56F21690005474A45D7A34DA3AA /* Targets Support Files */ = { isa = PBXGroup; children = ( - 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */, - BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */, + AAD12F5B1C74C47CDDD75C493DD47A34 /* Pods-ReactiveLists */, + D4173AE01ACA986D5D4AC7120F6F8D3C /* Pods-ReactiveLists-ReactiveListsExample */, + 6F8E36B63C37A5158DFDB5EE3BC447D5 /* Pods-ReactiveListsTests */, ); - name = iOS; + name = "Targets Support Files"; sourceTree = ""; }; - 1462D3596EF8F1BAC172AAF65296C3F5 /* Support Files */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - 1E9299E3DE5011428D5E0A4EC9C84E01 /* DifferenceKit.modulemap */, - 91435878720982AAA4A55C6C7085D7EC /* DifferenceKit.xcconfig */, - 2AE4FB784973B9D5B6793744123BCBAD /* DifferenceKit-dummy.m */, - F043199093F613FCF445AEFF8196FF19 /* DifferenceKit-prefix.pch */, - 8147F7636B15458D13A5380774613421 /* DifferenceKit-umbrella.h */, - C573547693E5B993358D7BDBA1D615DD /* Info.plist */, + E169A450ED27AC725DF52953F66D11E0 /* iOS */, ); - name = "Support Files"; - path = "../Target Support Files/DifferenceKit"; + name = Frameworks; sourceTree = ""; }; - 15A2324D3B6937E63D4C13031D715F2C /* SwiftLint */ = { + 18139D82B9AA2206E3630708A0EC7AB6 /* Products */ = { isa = PBXGroup; children = ( + EEEA2713E341B2870661536C3716B74A /* DifferenceKit.framework */, + 7BD2BEB7D15F08D4F09A35E066C5B13D /* Pods_ReactiveLists.framework */, + 5F68B08A686C6F67EEB9C1ADDFEB8F23 /* Pods_ReactiveLists_ReactiveListsExample.framework */, + 257E2F84E22B56735D77C8248A662D18 /* Pods_ReactiveListsTests.framework */, ); - name = SwiftLint; - path = SwiftLint; + name = Products; sourceTree = ""; }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + 3189A0DC9B7B6B804F7BD7D49F489186 /* Core */ = { isa = PBXGroup; children = ( - 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */, + 800FAF6C20121658EB1F1A29BDE82A4D /* Algorithm.swift */, + 3FCF2E147E87F75208DCB44A295028C9 /* AnyDifferentiable.swift */, + 7639986D780DEF7B23B13DA30CF69062 /* ArraySection.swift */, + 4C58BCF65AF128ABC19C9C67B1A98640 /* Changeset.swift */, + 56EC4B4176977586FC1B4ADA31FA7090 /* ContentEquatable.swift */, + 1DB4B3BBF7D19B682A66C8774E69AAD7 /* Differentiable.swift */, + 3EED67DB35DF8108BE9CFB2827247C69 /* DifferentiableSection.swift */, + 691D00B054A33D29B44C720470FE6C7E /* ElementPath.swift */, + 07ED38A2C65270F0745BB7AF665CED35 /* StagedChangeset.swift */, ); - name = Frameworks; + name = Core; sourceTree = ""; }; - 57E84F625A2F883050D5E97B6B02DC2E /* Pods-ReactiveLists-ReactiveListsExample */ = { + 5DD1A5AC4152A37A025455C2564F74AA /* Support Files */ = { isa = PBXGroup; children = ( - 116574C9FF8EB5FC53C751AC50912AF8 /* Info.plist */, - 16A36A1E59AB34E2D35DF8EDB28E4E09 /* Pods-ReactiveLists-ReactiveListsExample.modulemap */, - 531995376063C09D3902C2E4C2EFD97E /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown */, - F2212AA261D7BC23D65DB471B391225B /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist */, - 8C5343ECCD027724500DF49E141FC554 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m */, - 0DFDF67C51FF6A636685EE674B35EE25 /* Pods-ReactiveLists-ReactiveListsExample-frameworks.sh */, - 54D84C3A8195E31D703CF5EA48FF9BFF /* Pods-ReactiveLists-ReactiveListsExample-resources.sh */, - 2DC27AB8BC897B36466A70CCCEFC37D3 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h */, - 2AC90E62B734508A0FCFC653E7A31683 /* Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig */, - FC656316CE90F934E2C128C2DD505710 /* Pods-ReactiveLists-ReactiveListsExample.release.xcconfig */, + CC9B14BBEB2C75EDE05F7931DA6856B0 /* DifferenceKit.modulemap */, + C357B1A9EDD680E8DA0B3389BD750ECD /* DifferenceKit.xcconfig */, + 3682FA5D7A4AB3AEE796CCB41C0D59FB /* DifferenceKit-dummy.m */, + CBE15B5531F09D3F1A900A4F484BC3B7 /* DifferenceKit-Info.plist */, + EC8E9D6D0AA06E9944E06C78E31CC380 /* DifferenceKit-prefix.pch */, + E62A642C20B5796EE7C736073B2805D6 /* DifferenceKit-umbrella.h */, ); - name = "Pods-ReactiveLists-ReactiveListsExample"; - path = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample"; + name = "Support Files"; + path = "../Target Support Files/DifferenceKit"; sourceTree = ""; }; - 615BC6BC7CC0CEDA5BA3AC1977814525 /* Pods */ = { + 6511815C293425D166317AA448183D13 /* DifferenceKit */ = { isa = PBXGroup; children = ( - C76BE1D6E2B753D51C8943F6813D4D4D /* DifferenceKit */, - 15A2324D3B6937E63D4C13031D715F2C /* SwiftLint */, + 3189A0DC9B7B6B804F7BD7D49F489186 /* Core */, + 5DD1A5AC4152A37A025455C2564F74AA /* Support Files */, + 8822CD809FC8833AF88D03F6E67FC74D /* UIKitExtension */, ); - name = Pods; + path = DifferenceKit; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 69498A7C798233EDF402DE8F9C36C6FF /* SwiftLint */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - 615BC6BC7CC0CEDA5BA3AC1977814525 /* Pods */, - 00B559F9C37F9E59EE73956BDD4B3580 /* Products */, - E653DFA019544D2D69A77312BDCAFCCE /* Targets Support Files */, + 003D627296C488F562D98B6E13CFA926 /* Support Files */, ); + path = SwiftLint; sourceTree = ""; }; - 84CFC2788E94F5F9C0F5693AD0AA5BBD /* Core */ = { + 6F8E36B63C37A5158DFDB5EE3BC447D5 /* Pods-ReactiveListsTests */ = { isa = PBXGroup; children = ( - A8DE730CE16EBD60A3AED4E4F2CC6744 /* Algorithm.swift */, - EB2EFC2F23401D2BC93550A76BE37992 /* AnyDifferentiable.swift */, - 885EE47206B90A7C63BD540FEC9DFDF8 /* ArraySection.swift */, - 3333B33D5338FD3644670E027A6B53D8 /* Changeset.swift */, - B015FD73AA0B2D5EAAE2650F50D9D144 /* ContentEquatable.swift */, - 87A137FF4370512DF95FA11AAEE82D3C /* Differentiable.swift */, - AC12DFD12F98DE09C8A65B699AF2C89A /* DifferentiableSection.swift */, - 7A9CCA32A341DA8083075D4762E13B42 /* ElementPath.swift */, - 5875DE57B3CB9BC0309E3A30A82195C0 /* StagedChangeset.swift */, + 4FF1F2A51958AEA19CFE7435DCDA5304 /* Pods-ReactiveListsTests.modulemap */, + 083107BF64DFDECD11D5EF54A08E1285 /* Pods-ReactiveListsTests-acknowledgements.markdown */, + 16626B4FEC9494E5E3930FBAD7255BB1 /* Pods-ReactiveListsTests-acknowledgements.plist */, + 29874532193D4459F705BAAE82D92540 /* Pods-ReactiveListsTests-dummy.m */, + F7677A342FD7F9A29CFE6BA00706EFB5 /* Pods-ReactiveListsTests-frameworks.sh */, + 85540A20B5D17B70356F8FBA58DFEEC3 /* Pods-ReactiveListsTests-Info.plist */, + 540C0B253BD43C91EB5C776CAF0F9D0D /* Pods-ReactiveListsTests-umbrella.h */, + 1CE4562E0786A2EB514E3E9FC511C224 /* Pods-ReactiveListsTests.debug.xcconfig */, + 13AD5961100D37B4027C8EB9C85FEAC3 /* Pods-ReactiveListsTests.release.xcconfig */, ); - name = Core; + name = "Pods-ReactiveListsTests"; + path = "Target Support Files/Pods-ReactiveListsTests"; + sourceTree = ""; + }; + 8822CD809FC8833AF88D03F6E67FC74D /* UIKitExtension */ = { + isa = PBXGroup; + children = ( + 0E12EF93796501495277B2849AE0B8ED /* UIKitExtension.swift */, + ); + name = UIKitExtension; sourceTree = ""; }; - 8DE108BB8D0BF433E72B9837DEBF958A /* Pods-ReactiveLists */ = { + AAD12F5B1C74C47CDDD75C493DD47A34 /* Pods-ReactiveLists */ = { isa = PBXGroup; children = ( - E85B28002AF138D1A4148F60758B33AF /* Info.plist */, - 16DC03E217CC617BD498BE8E5EAA14E9 /* Pods-ReactiveLists.modulemap */, - E3C6DD930C99A5D7335B4213B81435E7 /* Pods-ReactiveLists-acknowledgements.markdown */, - 157DE719AE8ACA5E30F2AB3F6FB13B49 /* Pods-ReactiveLists-acknowledgements.plist */, - AE6C59BD7669713C77BAC3443746B5DE /* Pods-ReactiveLists-dummy.m */, - B954323BFD2178B30660FD15B45035A2 /* Pods-ReactiveLists-resources.sh */, - 67F77AD5BE16ABB539C913D9B97439DA /* Pods-ReactiveLists-umbrella.h */, - 0CCD2504C7F9C9FE3E428F56D0CD04A1 /* Pods-ReactiveLists.debug.xcconfig */, - 5B4999957B7299E107A21BAC5BF91129 /* Pods-ReactiveLists.release.xcconfig */, + E48E3F1F7598CC49F9918BCFC0BB48F9 /* Pods-ReactiveLists.modulemap */, + 285415B7F361092B611A1B6DA8A4F583 /* Pods-ReactiveLists-acknowledgements.markdown */, + AD8652116B579828C9E0F969B72C10D3 /* Pods-ReactiveLists-acknowledgements.plist */, + 019D0620F3632A03ABBBD732A4AB7751 /* Pods-ReactiveLists-dummy.m */, + C2AD050A31D6C991818FE2CA8D862F20 /* Pods-ReactiveLists-Info.plist */, + D74ACC882BD83979EEA2903B740682C5 /* Pods-ReactiveLists-umbrella.h */, + 63F80488F5A4EC01AB7EE774FABDF1C7 /* Pods-ReactiveLists.debug.xcconfig */, + 9A80561D2BEE0F42E902FE23DB4CD88E /* Pods-ReactiveLists.release.xcconfig */, ); name = "Pods-ReactiveLists"; path = "Target Support Files/Pods-ReactiveLists"; sourceTree = ""; }; - 9DD877D5EA602B53838F2B98295322B8 /* Pods-ReactiveListsTests */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 760D038C2D89DD28E74C47DD91DAF418 /* Info.plist */, - 86570C7F10A6E0FA03885DFDA55E50D3 /* Pods-ReactiveListsTests.modulemap */, - 3F77C912163DF5DF098F86DFDACE7D90 /* Pods-ReactiveListsTests-acknowledgements.markdown */, - 09C4C1CBBBCDD3D3B746B4C4999941F2 /* Pods-ReactiveListsTests-acknowledgements.plist */, - 5C59CF5C323494B3F1D789F2DBBA8EB7 /* Pods-ReactiveListsTests-dummy.m */, - E306A31585C5CF6D786DB047B9D2E9B7 /* Pods-ReactiveListsTests-frameworks.sh */, - F65A23E0B8C7657BA9DAE7603D66CD6B /* Pods-ReactiveListsTests-resources.sh */, - 077F63C096C41C515DECE309492BABF1 /* Pods-ReactiveListsTests-umbrella.h */, - 18C6E2B544ED038A3DFBC3098DBCBF05 /* Pods-ReactiveListsTests.debug.xcconfig */, - C51AA72514E0DFA60B554C4A6998B621 /* Pods-ReactiveListsTests.release.xcconfig */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + FD7BBEB291738855595BB0CC4681B137 /* Pods */, + 18139D82B9AA2206E3630708A0EC7AB6 /* Products */, + 132DD56F21690005474A45D7A34DA3AA /* Targets Support Files */, ); - name = "Pods-ReactiveListsTests"; - path = "Target Support Files/Pods-ReactiveListsTests"; sourceTree = ""; }; - ABCBAEBC214D067C6C046AEDC89AA2C5 /* UIKitExtension */ = { + D4173AE01ACA986D5D4AC7120F6F8D3C /* Pods-ReactiveLists-ReactiveListsExample */ = { isa = PBXGroup; children = ( - 8332CBB89F9C90CE2CF1430F9A7991F6 /* UIKitExtension.swift */, + B63182992F43AADB905F10444D1C9B4C /* Pods-ReactiveLists-ReactiveListsExample.modulemap */, + BAF405CFB11C16F4EDE4500C47C76A9E /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown */, + CE312540ACC0D141115B592117F64A3B /* Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist */, + 2E8A71E24765A168428998EB9B879CDA /* Pods-ReactiveLists-ReactiveListsExample-dummy.m */, + 31AF63A9B4E263B737D22C84EB3784D2 /* Pods-ReactiveLists-ReactiveListsExample-frameworks.sh */, + 51B657FFA0D2C589C5F5DA5F5A2CE62B /* Pods-ReactiveLists-ReactiveListsExample-Info.plist */, + DB194EC318DE79065CFB3B760D71E4FD /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h */, + 2442B9348069DEC0AEDA0AC0E1F5750B /* Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig */, + C244F44D284BF40256C6D0C5B1A7217A /* Pods-ReactiveLists-ReactiveListsExample.release.xcconfig */, ); - name = UIKitExtension; + name = "Pods-ReactiveLists-ReactiveListsExample"; + path = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample"; sourceTree = ""; }; - C76BE1D6E2B753D51C8943F6813D4D4D /* DifferenceKit */ = { + E169A450ED27AC725DF52953F66D11E0 /* iOS */ = { isa = PBXGroup; children = ( - 84CFC2788E94F5F9C0F5693AD0AA5BBD /* Core */, - 1462D3596EF8F1BAC172AAF65296C3F5 /* Support Files */, - ABCBAEBC214D067C6C046AEDC89AA2C5 /* UIKitExtension */, + 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */, + ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */, ); - name = DifferenceKit; - path = DifferenceKit; + name = iOS; sourceTree = ""; }; - E653DFA019544D2D69A77312BDCAFCCE /* Targets Support Files */ = { + FD7BBEB291738855595BB0CC4681B137 /* Pods */ = { isa = PBXGroup; children = ( - 8DE108BB8D0BF433E72B9837DEBF958A /* Pods-ReactiveLists */, - 57E84F625A2F883050D5E97B6B02DC2E /* Pods-ReactiveLists-ReactiveListsExample */, - 9DD877D5EA602B53838F2B98295322B8 /* Pods-ReactiveListsTests */, + 6511815C293425D166317AA448183D13 /* DifferenceKit */, + 69498A7C798233EDF402DE8F9C36C6FF /* SwiftLint */, ); - name = "Targets Support Files"; + name = Pods; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 3D6B951C9BA52A2F0CBEDD4B7712ACA3 /* Headers */ = { + 0629543D3D62552A6A929FA8B6DAF2C9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 97F107BB5D5AD0CDAD97319DF3BFDC0C /* Pods-ReactiveLists-umbrella.h in Headers */, + A96336B37B20546430D866CCBD4293AC /* Pods-ReactiveLists-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A6E5F9854A801F00EE932CA5031C94D2 /* Headers */ = { + 2951F46444EEAACF7A26A0FB4307228C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - AE099F721E5A9AF348A6DCD907298744 /* Pods-ReactiveListsTests-umbrella.h in Headers */, + 2D8CE32B29C68364F83342FCA433C47A /* Pods-ReactiveListsTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - C51CD843822E69E1F3AD8A160148AAC2 /* Headers */ = { + A79D78AAF948CF51D52B1404970F6F15 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A1FE9EEBE7705B14B7BAFBB5ADA9ACE0 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h in Headers */, + 5296D111658799141925BC8AE9A48508 /* DifferenceKit-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DB09075086597D1602C79C88D9A4D98D /* Headers */ = { + EB81C02550AA18B813F545415980AB6D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - EB5A242724B69EBB9701FB7A79C933CE /* DifferenceKit-umbrella.h in Headers */, + 08E7BAC6AE545BD1C4A2829ADB768D74 /* Pods-ReactiveLists-ReactiveListsExample-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 137B599E0EA0872D7582249C50AECAA5 /* Pods-ReactiveLists-ReactiveListsExample */ = { + 41598A29431EF186E8A8B72EC90740F6 /* Pods-ReactiveLists */ = { isa = PBXNativeTarget; - buildConfigurationList = 00C22CA8B0BB0B232D7655B71397E7E6 /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists-ReactiveListsExample" */; + buildConfigurationList = E88EB4994FE42FE8C2D5EC3FD837EEFB /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists" */; buildPhases = ( - EC43BBD6C1BD47DB2A7E435F93420DB9 /* Sources */, - 7AF1D9282F658EBEBCB3D322C40165FB /* Frameworks */, - C51CD843822E69E1F3AD8A160148AAC2 /* Headers */, + 0629543D3D62552A6A929FA8B6DAF2C9 /* Headers */, + 0D539DEC432C60C2F18A5EEF70875AFB /* Sources */, + C4E4096603BAC4BE447B795854A53B3C /* Frameworks */, + 288D9775EEF02C2D6E67FB381A23D579 /* Resources */, ); buildRules = ( ); dependencies = ( - 4A90A369926AB6F8A61E17C93F869A60 /* PBXTargetDependency */, + 46690D4DB9C5CA8EDBA1B1663306448E /* PBXTargetDependency */, + DFCAC8BCC0A1F280B22C5765400276BB /* PBXTargetDependency */, ); - name = "Pods-ReactiveLists-ReactiveListsExample"; - productName = "Pods-ReactiveLists-ReactiveListsExample"; - productReference = A3A11FB2D9AED61A956891F7980A538B /* Pods_ReactiveLists_ReactiveListsExample.framework */; + name = "Pods-ReactiveLists"; + productName = "Pods-ReactiveLists"; + productReference = 7BD2BEB7D15F08D4F09A35E066C5B13D /* Pods_ReactiveLists.framework */; productType = "com.apple.product-type.framework"; }; - 1CCB43B4B7F6E290D8BEAC0CE12DC9E9 /* DifferenceKit */ = { + 6C4242E3CE1AB068010AEA784EA805A7 /* DifferenceKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 7D230BC603747DF75C8C7087123A7DB3 /* Build configuration list for PBXNativeTarget "DifferenceKit" */; + buildConfigurationList = 61DD8CA5F85E05601280D3F6D15BF751 /* Build configuration list for PBXNativeTarget "DifferenceKit" */; buildPhases = ( - 81550D7403A0EF3FF2C53AE4515490AF /* Sources */, - 8CAD8BB8611105627569A65AA03610F7 /* Frameworks */, - DB09075086597D1602C79C88D9A4D98D /* Headers */, + A79D78AAF948CF51D52B1404970F6F15 /* Headers */, + 4125ED3E297C00C59B2DA804BBB90061 /* Sources */, + A2B3F1C1C86FB7451F4187CF06448057 /* Frameworks */, + 2BA3B72878CB3650332437CE641AE9C3 /* Resources */, ); buildRules = ( ); @@ -386,144 +426,199 @@ ); name = DifferenceKit; productName = DifferenceKit; - productReference = A86CF2EEC11C7E044420AF22516AF526 /* DifferenceKit.framework */; + productReference = EEEA2713E341B2870661536C3716B74A /* DifferenceKit.framework */; productType = "com.apple.product-type.framework"; }; - 5036E1871B7F9977A78CE5337CCCFD42 /* Pods-ReactiveListsTests */ = { + 74E4FFCD49CFB52627F0237471696714 /* Pods-ReactiveLists-ReactiveListsExample */ = { isa = PBXNativeTarget; - buildConfigurationList = 85204A6A1A9C2335CE058081FB20CD32 /* Build configuration list for PBXNativeTarget "Pods-ReactiveListsTests" */; + buildConfigurationList = EF4AB4DD5DF11A4408A8D8E515867B33 /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists-ReactiveListsExample" */; buildPhases = ( - C5C6A73CC5EE0B79EDA4AA22AAE83BFB /* Sources */, - 9425E1CF69C4B29D6283F1EB13190DFD /* Frameworks */, - A6E5F9854A801F00EE932CA5031C94D2 /* Headers */, + EB81C02550AA18B813F545415980AB6D /* Headers */, + 237FC46FA136AC975616B565A4312A81 /* Sources */, + ED5DA504CD2DC6F1289857309BD79B34 /* Frameworks */, + 2E40EDA62C0C32A0EBBBFD02DCF8A547 /* Resources */, ); buildRules = ( ); dependencies = ( - 5A68D1B800802F3A233D72D505CC0F6D /* PBXTargetDependency */, + 53096AFAEB930FC6FC0F47DDEBA2A00A /* PBXTargetDependency */, + FA312CA33AD2542E4E13F6C67A2D685D /* PBXTargetDependency */, ); - name = "Pods-ReactiveListsTests"; - productName = "Pods-ReactiveListsTests"; - productReference = 8162E24BE29B7395EC6615E5229183AF /* Pods_ReactiveListsTests.framework */; + name = "Pods-ReactiveLists-ReactiveListsExample"; + productName = "Pods-ReactiveLists-ReactiveListsExample"; + productReference = 5F68B08A686C6F67EEB9C1ADDFEB8F23 /* Pods_ReactiveLists_ReactiveListsExample.framework */; productType = "com.apple.product-type.framework"; }; - 6CB6D3AE0993F4642C9AF32BECF1D5FD /* Pods-ReactiveLists */ = { + F6C5747E249B5B6BFCECA7F90C38ABEF /* Pods-ReactiveListsTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 1C6E94959D1764209BABA5E73D636AA1 /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists" */; + buildConfigurationList = 936CD87B615E5385BA8C333A6E1775B4 /* Build configuration list for PBXNativeTarget "Pods-ReactiveListsTests" */; buildPhases = ( - 4EBA5655CECFF22979860F3E89C6FC7B /* Sources */, - 4DAC11D963A8F4D12979273B3A04835D /* Frameworks */, - 3D6B951C9BA52A2F0CBEDD4B7712ACA3 /* Headers */, + 2951F46444EEAACF7A26A0FB4307228C /* Headers */, + 61CB008EB61D1B022E4248416712BD68 /* Sources */, + 437FC364755403FC7683912D804B3460 /* Frameworks */, + 7B13DE721981046EFF970DB424FCE225 /* Resources */, ); buildRules = ( ); dependencies = ( - 5E3A0D90C817088914AF0A8961032C16 /* PBXTargetDependency */, + 33850F0090B609F66E5A6256AD9E0CA9 /* PBXTargetDependency */, + 7698873A981553FB439F91360A20D51C /* PBXTargetDependency */, ); - name = "Pods-ReactiveLists"; - productName = "Pods-ReactiveLists"; - productReference = 5CA8B89B9510D3B827766966FB2DE870 /* Pods_ReactiveLists.framework */; + name = "Pods-ReactiveListsTests"; + productName = "Pods-ReactiveListsTests"; + productReference = 257E2F84E22B56735D77C8248A662D18 /* Pods_ReactiveListsTests.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 00B559F9C37F9E59EE73956BDD4B3580 /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 18139D82B9AA2206E3630708A0EC7AB6 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 1CCB43B4B7F6E290D8BEAC0CE12DC9E9 /* DifferenceKit */, - 6CB6D3AE0993F4642C9AF32BECF1D5FD /* Pods-ReactiveLists */, - 137B599E0EA0872D7582249C50AECAA5 /* Pods-ReactiveLists-ReactiveListsExample */, - 5036E1871B7F9977A78CE5337CCCFD42 /* Pods-ReactiveListsTests */, + 6C4242E3CE1AB068010AEA784EA805A7 /* DifferenceKit */, + 41598A29431EF186E8A8B72EC90740F6 /* Pods-ReactiveLists */, + 74E4FFCD49CFB52627F0237471696714 /* Pods-ReactiveLists-ReactiveListsExample */, + F6C5747E249B5B6BFCECA7F90C38ABEF /* Pods-ReactiveListsTests */, + CE53B9448B4F43CF4DC243FAF240FEAC /* SwiftLint */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 288D9775EEF02C2D6E67FB381A23D579 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2BA3B72878CB3650332437CE641AE9C3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2E40EDA62C0C32A0EBBBFD02DCF8A547 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7B13DE721981046EFF970DB424FCE225 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 4EBA5655CECFF22979860F3E89C6FC7B /* Sources */ = { + 0D539DEC432C60C2F18A5EEF70875AFB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 36F54F442B84342426EDDCD8E0342C09 /* Pods-ReactiveLists-dummy.m in Sources */, + 315A6E36CEBAEA46F688C011E31F4CE8 /* Pods-ReactiveLists-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 81550D7403A0EF3FF2C53AE4515490AF /* Sources */ = { + 237FC46FA136AC975616B565A4312A81 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6E6EDC45E8D84EBE7751FE5C460C0167 /* Algorithm.swift in Sources */, - 2F1993085EB6E390A18E8B1A0A7EC8F1 /* AnyDifferentiable.swift in Sources */, - 199315F81A5C7412119704B59BFA224B /* ArraySection.swift in Sources */, - 756CF43CB227EC8ACC7698B4B0E317FF /* Changeset.swift in Sources */, - CC3B24547E7F359D568677A2E6BCB391 /* ContentEquatable.swift in Sources */, - 37FFFB43A4E20DF61685CCF446C87DEE /* DifferenceKit-dummy.m in Sources */, - F039FE5EBD1AE12F304F1B0D11AC7B54 /* Differentiable.swift in Sources */, - EB971B5E9D742F2F8F340F99EB98FBD2 /* DifferentiableSection.swift in Sources */, - 5BF40572B9A89991B37B458E438AACF2 /* ElementPath.swift in Sources */, - 8D53AAF4433C7322235C820AF1E22923 /* StagedChangeset.swift in Sources */, - 405B217C29B7FAA14609B67FA6BA5BC0 /* UIKitExtension.swift in Sources */, + CCDB47B59B6530ACAE681566DC406141 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C5C6A73CC5EE0B79EDA4AA22AAE83BFB /* Sources */ = { + 4125ED3E297C00C59B2DA804BBB90061 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 92431160914B4E4187C9339DBA97EB81 /* Pods-ReactiveListsTests-dummy.m in Sources */, + A76A4BDBBE96BD9B7495DFBAB7163154 /* Algorithm.swift in Sources */, + B7206CEDA0144D4C99F01513017DF375 /* AnyDifferentiable.swift in Sources */, + 967C4076ED249F1211D79F5DD090F229 /* ArraySection.swift in Sources */, + 6391BA76D8E59D632645CDD31756E412 /* Changeset.swift in Sources */, + EDA8CA153F122B098D6C67F02F20BEE4 /* ContentEquatable.swift in Sources */, + B585BFF509D003AED1003F46940C3650 /* DifferenceKit-dummy.m in Sources */, + CC41CB5ADB110709FAB0BCDF66765A09 /* Differentiable.swift in Sources */, + 0F521284DAA6E193C73E55D85E978870 /* DifferentiableSection.swift in Sources */, + AE0F4F2C5463D1B880315D5A16DAA68E /* ElementPath.swift in Sources */, + A65B1D2007B8350209B9A4702949D8CB /* StagedChangeset.swift in Sources */, + 445981852B19432F19A3941AC67502D1 /* UIKitExtension.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC43BBD6C1BD47DB2A7E435F93420DB9 /* Sources */ = { + 61CB008EB61D1B022E4248416712BD68 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 72CFD2F59774F4046EEE108B7B68C0D6 /* Pods-ReactiveLists-ReactiveListsExample-dummy.m in Sources */, + 13C0FF0FAA81C17A6C48810AC2A967AF /* Pods-ReactiveListsTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 4A90A369926AB6F8A61E17C93F869A60 /* PBXTargetDependency */ = { + 33850F0090B609F66E5A6256AD9E0CA9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DifferenceKit; - target = 1CCB43B4B7F6E290D8BEAC0CE12DC9E9 /* DifferenceKit */; - targetProxy = 40077FA502434AE208665586FBB61A36 /* PBXContainerItemProxy */; + target = 6C4242E3CE1AB068010AEA784EA805A7 /* DifferenceKit */; + targetProxy = C005FDD19E2B2335EDE7EB3A0712941B /* PBXContainerItemProxy */; }; - 5A68D1B800802F3A233D72D505CC0F6D /* PBXTargetDependency */ = { + 46690D4DB9C5CA8EDBA1B1663306448E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DifferenceKit; - target = 1CCB43B4B7F6E290D8BEAC0CE12DC9E9 /* DifferenceKit */; - targetProxy = 27E032B0372DAB2327B6ADFB7209567A /* PBXContainerItemProxy */; + target = 6C4242E3CE1AB068010AEA784EA805A7 /* DifferenceKit */; + targetProxy = 9F58733F3C1225B9F82667DC90CDD783 /* PBXContainerItemProxy */; }; - 5E3A0D90C817088914AF0A8961032C16 /* PBXTargetDependency */ = { + 53096AFAEB930FC6FC0F47DDEBA2A00A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DifferenceKit; - target = 1CCB43B4B7F6E290D8BEAC0CE12DC9E9 /* DifferenceKit */; - targetProxy = 047813632521914716811184A8E9F61E /* PBXContainerItemProxy */; + target = 6C4242E3CE1AB068010AEA784EA805A7 /* DifferenceKit */; + targetProxy = EA7B1A61BA24ADFE3B73589748D40651 /* PBXContainerItemProxy */; + }; + 7698873A981553FB439F91360A20D51C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftLint; + target = CE53B9448B4F43CF4DC243FAF240FEAC /* SwiftLint */; + targetProxy = EE9ABAB0364559D790A7A27332494F47 /* PBXContainerItemProxy */; + }; + DFCAC8BCC0A1F280B22C5765400276BB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftLint; + target = CE53B9448B4F43CF4DC243FAF240FEAC /* SwiftLint */; + targetProxy = A0BDCEAB25E7A5C15498614C218300BF /* PBXContainerItemProxy */; + }; + FA312CA33AD2542E4E13F6C67A2D685D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftLint; + target = CE53B9448B4F43CF4DC243FAF240FEAC /* SwiftLint */; + targetProxy = 202C3491325059E5B696AAF136994A13 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 1FA806C66C734E55BDAC922E129039B4 /* Debug */ = { + 066D047A36FF50F57164FCB520D634F4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2AC90E62B734508A0FCFC653E7A31683 /* Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig */; + baseConfigurationReference = 2442B9348069DEC0AEDA0AC0E1F5750B /* Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -536,9 +631,9 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.modulemap"; @@ -549,17 +644,28 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 2866F2A47A4830780512200659928D5A /* Debug */ = { + 1F538670DE7A71B391ED3AAB4C1CF130 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E5A284382AD6E5C079516EB00C86C4FA /* SwiftLint.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 2DFBE1CE1196D4980F491037F43BD62D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 91435878720982AAA4A55C6C7085D7EC /* DifferenceKit.xcconfig */; + baseConfigurationReference = C357B1A9EDD680E8DA0B3389BD750ECD /* DifferenceKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -571,7 +677,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/DifferenceKit/DifferenceKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DifferenceKit/Info.plist"; + INFOPLIST_FILE = "Target Support Files/DifferenceKit/DifferenceKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -581,17 +687,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 3D831C4A90DA0F1F9E08A07C9F755A93 /* Release */ = { + 2F525A9175CF4CACA922741644A921E7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C51AA72514E0DFA60B554C4A6998B621 /* Pods-ReactiveListsTests.release.xcconfig */; + baseConfigurationReference = 63F80488F5A4EC01AB7EE774FABDF1C7 /* Pods-ReactiveLists.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -604,12 +710,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ReactiveListsTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -617,17 +723,15 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 45D6FBE75A38635B4E566439438DBCD9 /* Release */ = { + 447CFBF9973E4A5BB473F12FC5337972 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5B4999957B7299E107A21BAC5BF91129 /* Pods-ReactiveLists.release.xcconfig */; + baseConfigurationReference = 13AD5961100D37B4027C8EB9C85FEAC3 /* Pods-ReactiveListsTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -640,12 +744,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -653,7 +757,6 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -661,10 +764,11 @@ }; name = Release; }; - 553022A828EE1991F07D2D73F565AEF8 /* Debug */ = { + 4CE281642D6EE9FAB113046B4B6328A0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -693,19 +797,14 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -714,20 +813,22 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; - name = Debug; + name = Release; }; - 58CE816B060A41D32CEC095441D0E3E0 /* Release */ = { + 6DFA1578582149B7E24AD55CBA30F07A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -756,16 +857,17 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -774,18 +876,25 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = NO; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; - name = Release; + name = Debug; }; - 6B4518DD89AD091CF421A37CDA435CA5 /* Release */ = { + 98B71A82C5C606D6CC867177A4A7E66E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 91435878720982AAA4A55C6C7085D7EC /* DifferenceKit.xcconfig */; + baseConfigurationReference = C244F44D284BF40256C6D0C5B1A7217A /* Pods-ReactiveLists-ReactiveListsExample.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -795,19 +904,19 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/DifferenceKit/DifferenceKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DifferenceKit/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DifferenceKit/DifferenceKit.modulemap"; - PRODUCT_MODULE_NAME = DifferenceKit; - PRODUCT_NAME = DifferenceKit; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -815,9 +924,9 @@ }; name = Release; }; - 9623442B12891A97CC7F0EBC101CB342 /* Release */ = { + B9E3B33CC10133F2AE6FDF712DF9DB4B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FC656316CE90F934E2C128C2DD505710 /* Pods-ReactiveLists-ReactiveListsExample.release.xcconfig */; + baseConfigurationReference = 1CE4562E0786A2EB514E3E9FC511C224 /* Pods-ReactiveListsTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -830,12 +939,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -843,20 +952,30 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; + name = Debug; + }; + BE7A252F9C7F55FF3622663D71424CDE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E5A284382AD6E5C079516EB00C86C4FA /* SwiftLint.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; name = Release; }; - A41CF3465040E6044C9727230C43EF7A /* Debug */ = { + C88789AAF4BC66088C919590E9D43F0D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0CCD2504C7F9C9FE3E428F56D0CD04A1 /* Pods-ReactiveLists.debug.xcconfig */; + baseConfigurationReference = C357B1A9EDD680E8DA0B3389BD750ECD /* DifferenceKit.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -866,30 +985,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/DifferenceKit/DifferenceKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DifferenceKit/DifferenceKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/DifferenceKit/DifferenceKit.modulemap"; + PRODUCT_MODULE_NAME = DifferenceKit; + PRODUCT_NAME = DifferenceKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - D2797AA7E5F8E4BA584D8B25A8B612E2 /* Debug */ = { + FE073965DA5D55B7257288B34AC9459E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18C6E2B544ED038A3DFBC3098DBCBF05 /* Pods-ReactiveListsTests.debug.xcconfig */; + baseConfigurationReference = 9A80561D2BEE0F42E902FE23DB4CD88E /* Pods-ReactiveLists.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -902,12 +1018,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ReactiveListsTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -915,63 +1031,71 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00C22CA8B0BB0B232D7655B71397E7E6 /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists-ReactiveListsExample" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6DFA1578582149B7E24AD55CBA30F07A /* Debug */, + 4CE281642D6EE9FAB113046B4B6328A0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 61DD8CA5F85E05601280D3F6D15BF751 /* Build configuration list for PBXNativeTarget "DifferenceKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1FA806C66C734E55BDAC922E129039B4 /* Debug */, - 9623442B12891A97CC7F0EBC101CB342 /* Release */, + C88789AAF4BC66088C919590E9D43F0D /* Debug */, + 2DFBE1CE1196D4980F491037F43BD62D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1C6E94959D1764209BABA5E73D636AA1 /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists" */ = { + 936CD87B615E5385BA8C333A6E1775B4 /* Build configuration list for PBXNativeTarget "Pods-ReactiveListsTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - A41CF3465040E6044C9727230C43EF7A /* Debug */, - 45D6FBE75A38635B4E566439438DBCD9 /* Release */, + B9E3B33CC10133F2AE6FDF712DF9DB4B /* Debug */, + 447CFBF9973E4A5BB473F12FC5337972 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + DAE5C3AB90A4378717EA696867A67ECE /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - 553022A828EE1991F07D2D73F565AEF8 /* Debug */, - 58CE816B060A41D32CEC095441D0E3E0 /* Release */, + 1F538670DE7A71B391ED3AAB4C1CF130 /* Debug */, + BE7A252F9C7F55FF3622663D71424CDE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7D230BC603747DF75C8C7087123A7DB3 /* Build configuration list for PBXNativeTarget "DifferenceKit" */ = { + E88EB4994FE42FE8C2D5EC3FD837EEFB /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2866F2A47A4830780512200659928D5A /* Debug */, - 6B4518DD89AD091CF421A37CDA435CA5 /* Release */, + 2F525A9175CF4CACA922741644A921E7 /* Debug */, + FE073965DA5D55B7257288B34AC9459E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 85204A6A1A9C2335CE058081FB20CD32 /* Build configuration list for PBXNativeTarget "Pods-ReactiveListsTests" */ = { + EF4AB4DD5DF11A4408A8D8E515867B33 /* Build configuration list for PBXNativeTarget "Pods-ReactiveLists-ReactiveListsExample" */ = { isa = XCConfigurationList; buildConfigurations = ( - D2797AA7E5F8E4BA584D8B25A8B612E2 /* Debug */, - 3D831C4A90DA0F1F9E08A07C9F755A93 /* Release */, + 066D047A36FF50F57164FCB520D634F4 /* Debug */, + 98B71A82C5C606D6CC867177A4A7E66E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Pods/Target Support Files/DifferenceKit/DifferenceKit-Info.plist b/Pods/Target Support Files/DifferenceKit/DifferenceKit-Info.plist index 2cf03a7..21a30b4 100644 --- a/Pods/Target Support Files/DifferenceKit/DifferenceKit-Info.plist +++ b/Pods/Target Support Files/DifferenceKit/DifferenceKit-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.8.0 + 1.1.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/DifferenceKit/DifferenceKit.xcconfig b/Pods/Target Support Files/DifferenceKit/DifferenceKit.xcconfig index eece5c6..1157aa4 100644 --- a/Pods/Target Support Files/DifferenceKit/DifferenceKit.xcconfig +++ b/Pods/Target Support Files/DifferenceKit/DifferenceKit.xcconfig @@ -1,7 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" +OTHER_LDFLAGS = $(inherited) -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown index 8c94e59..73c3578 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.markdown @@ -3,29 +3,207 @@ This application makes use of the following third party libraries: ## DifferenceKit -The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ## SwiftLint diff --git a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist index c22f0c6..2b8f9c9 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-acknowledgements.plist @@ -14,29 +14,207 @@ FooterText - The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. License MIT Title diff --git a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh index 3c8a48a..39ad861 100755 --- a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh +++ b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh @@ -3,10 +3,15 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" @@ -36,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -47,8 +52,13 @@ install_framework() local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +72,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -101,8 +111,8 @@ install_dsym() { # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" @@ -131,7 +141,7 @@ strip_invalid_archs() { for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done diff --git a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig index 671ee1c..0c6e9ea 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig +++ b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.debug.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" +OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.release.xcconfig b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.release.xcconfig index 671ee1c..0c6e9ea 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.release.xcconfig +++ b/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample.release.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" +OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.markdown b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.markdown index 8c94e59..73c3578 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.markdown @@ -3,29 +3,207 @@ This application makes use of the following third party libraries: ## DifferenceKit -The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ## SwiftLint diff --git a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.plist b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.plist index c22f0c6..2b8f9c9 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists-acknowledgements.plist @@ -14,29 +14,207 @@ FooterText - The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. License MIT Title diff --git a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.debug.xcconfig b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.debug.xcconfig index 015f01f..77c1441 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.debug.xcconfig +++ b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.debug.xcconfig @@ -1,9 +1,10 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" +OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.release.xcconfig b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.release.xcconfig index 015f01f..77c1441 100644 --- a/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.release.xcconfig +++ b/Pods/Target Support Files/Pods-ReactiveLists/Pods-ReactiveLists.release.xcconfig @@ -1,9 +1,10 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" +OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.markdown index 8c94e59..73c3578 100644 --- a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.markdown @@ -3,29 +3,207 @@ This application makes use of the following third party libraries: ## DifferenceKit -The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ## SwiftLint diff --git a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.plist b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.plist index c22f0c6..2b8f9c9 100644 --- a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-acknowledgements.plist @@ -14,29 +14,207 @@ FooterText - The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2018 ra1028 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. License MIT Title diff --git a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh index 3c8a48a..39ad861 100755 --- a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh @@ -3,10 +3,15 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" @@ -36,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -47,8 +52,13 @@ install_framework() local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +72,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -101,8 +111,8 @@ install_dsym() { # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" @@ -131,7 +141,7 @@ strip_invalid_archs() { for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done diff --git a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.debug.xcconfig b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.debug.xcconfig index 671ee1c..0c6e9ea 100644 --- a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.debug.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" +OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.release.xcconfig b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.release.xcconfig index 671ee1c..0c6e9ea 100644 --- a/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests.release.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit/DifferenceKit.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DifferenceKit" +OTHER_LDFLAGS = $(inherited) -framework "DifferenceKit" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/README.md b/README.md index 4230fb9..981dd03 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ self.driver.tableViewModel = updatedTableModel ## Project Status -An early version of the `UITableView` support has been shipping in the [PlanGrid app](https://itunes.apple.com/us/app/plangrid-construction-software/id498795789?mt=8) since late 2015 and is now used accross wide parts of the app. The support for `UICollectionView` is less mature as we only use `UICollectionView` in very few places. +An early version of the `UITableView` support has been shipping in the [PlanGrid app](https://itunes.apple.com/us/app/plangrid-construction-software/id498795789?mt=8) since late 2015 and is now used accross wide parts of the app. The support for `UICollectionView` is less mature as we only use `UICollectionView` in very few places. | Feature | Status | | -------------------------- | :-------------: | @@ -72,7 +72,7 @@ $ ./scripts/gen_docs.sh * Xcode 10+ * Swift 4.2+ -* iOS 10+ +* iOS 11+ ## Installation diff --git a/ReactiveLists.podspec b/ReactiveLists.podspec index 50b0a53..6d1725f 100644 --- a/ReactiveLists.podspec +++ b/ReactiveLists.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "ReactiveLists" - s.version = "0.4.0" + s.version = "0.5.0" s.summary = "React-like API for UITableView and UICollectionView" s.homepage = "https://github.com/plangrid/ReactiveLists" @@ -12,9 +12,9 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/plangrid/ReactiveLists.git", :tag => s.version.to_s } s.source_files = 'Sources/**/*.swift' - s.ios.deployment_target = '10.0' - s.swift_version = '4.2' + s.ios.deployment_target = '11.0' + s.swift_version = '5.0' s.requires_arc = true - s.dependency 'DifferenceKit', '~> 1.0.0' + s.dependency 'DifferenceKit', '~> 1.1.0' end diff --git a/ReactiveLists.xcodeproj/project.pbxproj b/ReactiveLists.xcodeproj/project.pbxproj index db752a0..d32aa38 100644 --- a/ReactiveLists.xcodeproj/project.pbxproj +++ b/ReactiveLists.xcodeproj/project.pbxproj @@ -324,6 +324,7 @@ 257664081F29075C00C037E3 /* Frameworks */, 257664091F29075C00C037E3 /* Resources */, 214905C3DB97E063F1272320 /* [CP] Embed Pods Frameworks */, + 88CB7123224BE93E00C7B167 /* SwiftLint */, ); buildRules = ( ); @@ -344,7 +345,7 @@ 258E318B1F0D8CBC00D6F324 /* Frameworks */, 258E318C1F0D8CBC00D6F324 /* Headers */, 258E318D1F0D8CBC00D6F324 /* Resources */, - 357B96DD20193EB50000443F /* ShellScript */, + 357B96DD20193EB50000443F /* SwiftLint */, ); buildRules = ( ); @@ -405,7 +406,7 @@ }; buildConfigurationList = 258E31891F0D8CBC00D6F324 /* Build configuration list for PBXProject "ReactiveLists" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -461,7 +462,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh", "${BUILT_PRODUCTS_DIR}/DifferenceKit/DifferenceKit.framework", ); name = "[CP] Embed Pods Frameworks"; @@ -470,7 +471,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactiveListsTests/Pods-ReactiveListsTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 214905C3DB97E063F1272320 /* [CP] Embed Pods Frameworks */ = { @@ -479,7 +480,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh", "${BUILT_PRODUCTS_DIR}/DifferenceKit/DifferenceKit.framework", ); name = "[CP] Embed Pods Frameworks"; @@ -488,16 +489,17 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactiveLists-ReactiveListsExample/Pods-ReactiveLists-ReactiveListsExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 357B96DD20193EB50000443F /* ShellScript */ = { + 357B96DD20193EB50000443F /* SwiftLint */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); + name = SwiftLint; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -522,6 +524,24 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + 88CB7123224BE93E00C7B167 /* SwiftLint */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = SwiftLint; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "${PODS_ROOT}/SwiftLint/swiftlint\n"; + }; 967E3D218DE77FDFDAFF338D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -730,13 +750,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -785,11 +805,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; diff --git a/ReactiveLists.xcodeproj/xcshareddata/xcschemes/Example.xcscheme b/ReactiveLists.xcodeproj/xcshareddata/xcschemes/Example.xcscheme index d038c78..9bcce92 100644 --- a/ReactiveLists.xcodeproj/xcshareddata/xcschemes/Example.xcscheme +++ b/ReactiveLists.xcodeproj/xcshareddata/xcschemes/Example.xcscheme @@ -1,6 +1,6 @@ Declaration diff --git a/docs/Classes/CollectionViewDriver.html b/docs/Classes/CollectionViewDriver.html index 5114cda..ffa61e5 100644 --- a/docs/Classes/CollectionViewDriver.html +++ b/docs/Classes/CollectionViewDriver.html @@ -216,7 +216,7 @@

Declaration

Declaration

Swift

-
public var collectionViewModel: CollectionViewModel? { get set }
+
public var collectionViewModel: CollectionViewModel? { get set }
@@ -369,7 +369,7 @@

Declaration

diff --git a/docs/Classes/TableViewDriver.html b/docs/Classes/TableViewDriver.html index e4aef28..d043af4 100644 --- a/docs/Classes/TableViewDriver.html +++ b/docs/Classes/TableViewDriver.html @@ -237,7 +237,7 @@

Declaration

Declaration

Swift

-
public var tableViewModel: TableViewModel? { get set }
+
public var tableViewModel: TableViewModel? { get set }
@@ -433,7 +433,7 @@

Declaration

diff --git a/docs/Classes/TableViewDriver/TableRefreshContext.html b/docs/Classes/TableViewDriver/TableRefreshContext.html index 99929a7..a968c75 100644 --- a/docs/Classes/TableViewDriver/TableRefreshContext.html +++ b/docs/Classes/TableViewDriver/TableRefreshContext.html @@ -234,7 +234,7 @@

Declaration

diff --git a/docs/Enums.html b/docs/Enums.html index de5581b..1d27c06 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -212,7 +212,7 @@

Declaration

diff --git a/docs/Enums/SupplementaryViewKind.html b/docs/Enums/SupplementaryViewKind.html index 1c3d841..b2975f2 100644 --- a/docs/Enums/SupplementaryViewKind.html +++ b/docs/Enums/SupplementaryViewKind.html @@ -212,7 +212,7 @@

Declaration

diff --git a/docs/Enums/ViewRegistrationMethod.html b/docs/Enums/ViewRegistrationMethod.html index b2d2bdf..885325e 100644 --- a/docs/Enums/ViewRegistrationMethod.html +++ b/docs/Enums/ViewRegistrationMethod.html @@ -237,7 +237,7 @@

Declaration

diff --git a/docs/Guides.html b/docs/Guides.html index 12301e8..da10fe8 100644 --- a/docs/Guides.html +++ b/docs/Guides.html @@ -169,7 +169,7 @@

Guides

diff --git a/docs/Protocols.html b/docs/Protocols.html index d365b8a..7787294 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -419,7 +419,7 @@

Declaration

diff --git a/docs/Protocols/CollectionCellViewModel.html b/docs/Protocols/CollectionCellViewModel.html index 882c614..361be0f 100644 --- a/docs/Protocols/CollectionCellViewModel.html +++ b/docs/Protocols/CollectionCellViewModel.html @@ -168,7 +168,7 @@

CollectionCellViewModel

Declaration

Swift

-
var accessibilityFormat: CellAccessibilityFormat { get }
+
var accessibilityFormat: CellAccessibilityFormat { get }
@@ -203,7 +203,7 @@

Default Implementation

Declaration

Swift

-
var shouldHighlight: Bool { get }
+
var shouldHighlight: Bool { get }
@@ -238,7 +238,7 @@

Default Implementation

Declaration

Swift

-
var didSelect: DidSelectClosure? { get }
+
var didSelect: DidSelectClosure? { get }
@@ -273,7 +273,7 @@

Default Implementation

Declaration

Swift

-
var didDeselect: DidDeselectClosure? { get }
+
var didDeselect: DidDeselectClosure? { get }
@@ -332,7 +332,7 @@

Parameters

diff --git a/docs/Protocols/CollectionSupplementaryViewModel.html b/docs/Protocols/CollectionSupplementaryViewModel.html index 3f20f22..e2376ba 100644 --- a/docs/Protocols/CollectionSupplementaryViewModel.html +++ b/docs/Protocols/CollectionSupplementaryViewModel.html @@ -176,7 +176,7 @@

Default Implementation

Declaration

Swift

-
var viewInfo: SupplementaryViewInfo? { get }
+
var viewInfo: SupplementaryViewInfo? { get }
@@ -211,7 +211,7 @@

Default Implementation

Declaration

Swift

-
var height: CGFloat? { get }
+
var height: CGFloat? { get }
@@ -270,7 +270,7 @@

Parameters

diff --git a/docs/Protocols/DiffableViewModel.html b/docs/Protocols/DiffableViewModel.html index bf30f6e..3a4421f 100644 --- a/docs/Protocols/DiffableViewModel.html +++ b/docs/Protocols/DiffableViewModel.html @@ -183,7 +183,7 @@

Default Implementation

Declaration

Swift

-
var diffingKey: DiffingKey { get }
+
var diffingKey: DiffingKey { get }
@@ -195,7 +195,7 @@

Declaration

diff --git a/docs/Protocols/ReusableCellProtocol.html b/docs/Protocols/ReusableCellProtocol.html index 3cb40b2..cf188fa 100644 --- a/docs/Protocols/ReusableCellProtocol.html +++ b/docs/Protocols/ReusableCellProtocol.html @@ -168,7 +168,7 @@

ReusableCellProtocol

Declaration

Swift

-
var registrationInfo: ViewRegistrationInfo { get }
+
var registrationInfo: ViewRegistrationInfo { get }
@@ -180,7 +180,7 @@

Declaration

diff --git a/docs/Protocols/ReusableCellViewModelProtocol.html b/docs/Protocols/ReusableCellViewModelProtocol.html index 4d0e4e7..6a8c9fb 100644 --- a/docs/Protocols/ReusableCellViewModelProtocol.html +++ b/docs/Protocols/ReusableCellViewModelProtocol.html @@ -169,7 +169,7 @@

ReusableCellViewModelProtocol

Declaration

Swift

-
var registrationInfo: ViewRegistrationInfo { get }
+
var registrationInfo: ViewRegistrationInfo { get }
@@ -181,7 +181,7 @@

Declaration

diff --git a/docs/Protocols/ReusableSupplementaryViewModelProtocol.html b/docs/Protocols/ReusableSupplementaryViewModelProtocol.html index ab5dada..2ced48b 100644 --- a/docs/Protocols/ReusableSupplementaryViewModelProtocol.html +++ b/docs/Protocols/ReusableSupplementaryViewModelProtocol.html @@ -169,7 +169,7 @@

ReusableSupplementaryViewModelProtocol

Declaration

Swift

-
var viewInfo: SupplementaryViewInfo? { get }
+
var viewInfo: SupplementaryViewInfo? { get }
@@ -181,7 +181,7 @@

Declaration

diff --git a/docs/Protocols/TableCellViewModel.html b/docs/Protocols/TableCellViewModel.html index 2fd3992..1e3cf8e 100644 --- a/docs/Protocols/TableCellViewModel.html +++ b/docs/Protocols/TableCellViewModel.html @@ -168,7 +168,7 @@

TableCellViewModel

Declaration

Swift

-
var accessibilityFormat: CellAccessibilityFormat { get }
+
var accessibilityFormat: CellAccessibilityFormat { get }
@@ -213,7 +213,7 @@

Default Implementation

Declaration

Swift

-
var rowHeight: CGFloat? { get }
+
var rowHeight: CGFloat? { get }
@@ -248,7 +248,7 @@

Default Implementation

Declaration

Swift

-
var editingStyle: UITableViewCell.EditingStyle { get }
+
var editingStyle: UITableViewCell.EditingStyle { get }
@@ -283,7 +283,7 @@

Default Implementation

Declaration

Swift

-
var shouldHighlight: Bool { get }
+
var shouldHighlight: Bool { get }
@@ -318,7 +318,7 @@

Default Implementation

Declaration

Swift

-
var shouldIndentWhileEditing: Bool { get }
+
var shouldIndentWhileEditing: Bool { get }
@@ -353,7 +353,7 @@

Default Implementation

Declaration

Swift

-
var willBeginEditing: WillBeginEditingClosure? { get }
+
var willBeginEditing: WillBeginEditingClosure? { get }
@@ -388,7 +388,7 @@

Default Implementation

Declaration

Swift

-
var didEndEditing: DidEndEditingClosure? { get }
+
var didEndEditing: DidEndEditingClosure? { get }
@@ -423,7 +423,7 @@

Default Implementation

Declaration

Swift

-
var commitEditingStyle: CommitEditingStyleClosure? { get }
+
var commitEditingStyle: CommitEditingStyleClosure? { get }
@@ -458,7 +458,7 @@

Default Implementation

Declaration

Swift

-
var didSelect: DidSelectClosure? { get }
+
var didSelect: DidSelectClosure? { get }
@@ -493,7 +493,7 @@

Default Implementation

Declaration

Swift

-
var accessoryButtonTapped: AccessoryButtonTappedClosure? { get }
+
var accessoryButtonTapped: AccessoryButtonTappedClosure? { get }
@@ -552,7 +552,7 @@

Parameters

diff --git a/docs/Protocols/TableSectionHeaderFooterViewModel.html b/docs/Protocols/TableSectionHeaderFooterViewModel.html index 91ba187..65aa61f 100644 --- a/docs/Protocols/TableSectionHeaderFooterViewModel.html +++ b/docs/Protocols/TableSectionHeaderFooterViewModel.html @@ -169,7 +169,7 @@

TableSectionHeaderFooterViewModel

Declaration

Swift

-
var title: String? { get }
+
var title: String? { get }
@@ -196,7 +196,7 @@

Declaration

Declaration

Swift

-
var height: CGFloat? { get }
+
var height: CGFloat? { get }
@@ -255,7 +255,7 @@

Parameters

diff --git a/docs/Protocols/TableViewCellModelEditActions.html b/docs/Protocols/TableViewCellModelEditActions.html index c647b5c..d745eb4 100644 --- a/docs/Protocols/TableViewCellModelEditActions.html +++ b/docs/Protocols/TableViewCellModelEditActions.html @@ -181,7 +181,7 @@

Declaration

diff --git a/docs/Structs.html b/docs/Structs.html index 23e9482..8d1d386 100644 --- a/docs/Structs.html +++ b/docs/Structs.html @@ -362,7 +362,7 @@

Declaration

diff --git a/docs/Structs/AnyDiffableViewModel.html b/docs/Structs/AnyDiffableViewModel.html index ad72f97..6303c19 100644 --- a/docs/Structs/AnyDiffableViewModel.html +++ b/docs/Structs/AnyDiffableViewModel.html @@ -183,7 +183,7 @@

Declaration

diff --git a/docs/Structs/CollectionSectionViewModel.html b/docs/Structs/CollectionSectionViewModel.html index 054635a..9388241 100644 --- a/docs/Structs/CollectionSectionViewModel.html +++ b/docs/Structs/CollectionSectionViewModel.html @@ -202,7 +202,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -302,7 +302,7 @@

Parameters

diff --git a/docs/Structs/CollectionViewModel.html b/docs/Structs/CollectionViewModel.html index d592d72..10d3b50 100644 --- a/docs/Structs/CollectionViewModel.html +++ b/docs/Structs/CollectionViewModel.html @@ -195,7 +195,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -268,7 +268,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists section: Int) -> CollectionSectionViewModel? { get }
+
public subscript(ifExists section: Int) -> CollectionSectionViewModel? { get }
@@ -314,7 +314,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists indexPath: IndexPath) -> CollectionCellViewModel? { get }
+
public subscript(ifExists indexPath: IndexPath) -> CollectionCellViewModel? { get }
@@ -345,7 +345,7 @@

Parameters

diff --git a/docs/Structs/SupplementaryViewInfo.html b/docs/Structs/SupplementaryViewInfo.html index 119afe9..f931d68 100644 --- a/docs/Structs/SupplementaryViewInfo.html +++ b/docs/Structs/SupplementaryViewInfo.html @@ -310,7 +310,7 @@

Parameters

diff --git a/docs/Structs/TableSectionViewModel.html b/docs/Structs/TableSectionViewModel.html index 5c1b603..c3b4eb7 100644 --- a/docs/Structs/TableSectionViewModel.html +++ b/docs/Structs/TableSectionViewModel.html @@ -283,7 +283,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -496,7 +496,7 @@

Parameters

diff --git a/docs/Structs/TableViewModel.html b/docs/Structs/TableViewModel.html index cf0e9c3..8ac8a46 100644 --- a/docs/Structs/TableViewModel.html +++ b/docs/Structs/TableViewModel.html @@ -249,7 +249,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -382,7 +382,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists section: Int) -> TableSectionViewModel? { get }
+
public subscript(ifExists section: Int) -> TableSectionViewModel? { get }
@@ -428,7 +428,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists indexPath: IndexPath) -> TableCellViewModel? { get }
+
public subscript(ifExists indexPath: IndexPath) -> TableCellViewModel? { get }
@@ -459,7 +459,7 @@

Parameters

diff --git a/docs/Structs/ViewRegistrationInfo.html b/docs/Structs/ViewRegistrationInfo.html index 4cead97..84ac61d 100644 --- a/docs/Structs/ViewRegistrationInfo.html +++ b/docs/Structs/ViewRegistrationInfo.html @@ -335,7 +335,7 @@

Parameters

diff --git a/docs/Typealiases.html b/docs/Typealiases.html index 78547db..b6c119b 100644 --- a/docs/Typealiases.html +++ b/docs/Typealiases.html @@ -174,7 +174,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes.html index 521a3a9..4d6a25c 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes.html @@ -211,7 +211,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/CollectionViewDriver.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/CollectionViewDriver.html index 5114cda..ffa61e5 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/CollectionViewDriver.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/CollectionViewDriver.html @@ -216,7 +216,7 @@

Declaration

Declaration

Swift

-
public var collectionViewModel: CollectionViewModel? { get set }
+
public var collectionViewModel: CollectionViewModel? { get set }
@@ -369,7 +369,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver.html index e4aef28..d043af4 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver.html @@ -237,7 +237,7 @@

Declaration

Declaration

Swift

-
public var tableViewModel: TableViewModel? { get set }
+
public var tableViewModel: TableViewModel? { get set }
@@ -433,7 +433,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver/TableRefreshContext.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver/TableRefreshContext.html index 99929a7..a968c75 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver/TableRefreshContext.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Classes/TableViewDriver/TableRefreshContext.html @@ -234,7 +234,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums.html index de5581b..1d27c06 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums.html @@ -212,7 +212,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/SupplementaryViewKind.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/SupplementaryViewKind.html index 1c3d841..b2975f2 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/SupplementaryViewKind.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/SupplementaryViewKind.html @@ -212,7 +212,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/ViewRegistrationMethod.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/ViewRegistrationMethod.html index b2d2bdf..885325e 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/ViewRegistrationMethod.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Enums/ViewRegistrationMethod.html @@ -237,7 +237,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Guides.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Guides.html index 12301e8..da10fe8 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Guides.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Guides.html @@ -169,7 +169,7 @@

Guides

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols.html index d365b8a..7787294 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols.html @@ -419,7 +419,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionCellViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionCellViewModel.html index 882c614..361be0f 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionCellViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionCellViewModel.html @@ -168,7 +168,7 @@

CollectionCellViewModel

Declaration

Swift

-
var accessibilityFormat: CellAccessibilityFormat { get }
+
var accessibilityFormat: CellAccessibilityFormat { get }
@@ -203,7 +203,7 @@

Default Implementation

Declaration

Swift

-
var shouldHighlight: Bool { get }
+
var shouldHighlight: Bool { get }
@@ -238,7 +238,7 @@

Default Implementation

Declaration

Swift

-
var didSelect: DidSelectClosure? { get }
+
var didSelect: DidSelectClosure? { get }
@@ -273,7 +273,7 @@

Default Implementation

Declaration

Swift

-
var didDeselect: DidDeselectClosure? { get }
+
var didDeselect: DidDeselectClosure? { get }
@@ -332,7 +332,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionSupplementaryViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionSupplementaryViewModel.html index 3f20f22..e2376ba 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionSupplementaryViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/CollectionSupplementaryViewModel.html @@ -176,7 +176,7 @@

Default Implementation

Declaration

Swift

-
var viewInfo: SupplementaryViewInfo? { get }
+
var viewInfo: SupplementaryViewInfo? { get }
@@ -211,7 +211,7 @@

Default Implementation

Declaration

Swift

-
var height: CGFloat? { get }
+
var height: CGFloat? { get }
@@ -270,7 +270,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/DiffableViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/DiffableViewModel.html index bf30f6e..3a4421f 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/DiffableViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/DiffableViewModel.html @@ -183,7 +183,7 @@

Default Implementation

Declaration

Swift

-
var diffingKey: DiffingKey { get }
+
var diffingKey: DiffingKey { get }
@@ -195,7 +195,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellProtocol.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellProtocol.html index 3cb40b2..cf188fa 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellProtocol.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellProtocol.html @@ -168,7 +168,7 @@

ReusableCellProtocol

Declaration

Swift

-
var registrationInfo: ViewRegistrationInfo { get }
+
var registrationInfo: ViewRegistrationInfo { get }
@@ -180,7 +180,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellViewModelProtocol.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellViewModelProtocol.html index 4d0e4e7..6a8c9fb 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellViewModelProtocol.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableCellViewModelProtocol.html @@ -169,7 +169,7 @@

ReusableCellViewModelProtocol

Declaration

Swift

-
var registrationInfo: ViewRegistrationInfo { get }
+
var registrationInfo: ViewRegistrationInfo { get }
@@ -181,7 +181,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableSupplementaryViewModelProtocol.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableSupplementaryViewModelProtocol.html index ab5dada..2ced48b 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableSupplementaryViewModelProtocol.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/ReusableSupplementaryViewModelProtocol.html @@ -169,7 +169,7 @@

ReusableSupplementaryViewModelProtocol

Declaration

Swift

-
var viewInfo: SupplementaryViewInfo? { get }
+
var viewInfo: SupplementaryViewInfo? { get }
@@ -181,7 +181,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableCellViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableCellViewModel.html index 2fd3992..1e3cf8e 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableCellViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableCellViewModel.html @@ -168,7 +168,7 @@

TableCellViewModel

Declaration

Swift

-
var accessibilityFormat: CellAccessibilityFormat { get }
+
var accessibilityFormat: CellAccessibilityFormat { get }
@@ -213,7 +213,7 @@

Default Implementation

Declaration

Swift

-
var rowHeight: CGFloat? { get }
+
var rowHeight: CGFloat? { get }
@@ -248,7 +248,7 @@

Default Implementation

Declaration

Swift

-
var editingStyle: UITableViewCell.EditingStyle { get }
+
var editingStyle: UITableViewCell.EditingStyle { get }
@@ -283,7 +283,7 @@

Default Implementation

Declaration

Swift

-
var shouldHighlight: Bool { get }
+
var shouldHighlight: Bool { get }
@@ -318,7 +318,7 @@

Default Implementation

Declaration

Swift

-
var shouldIndentWhileEditing: Bool { get }
+
var shouldIndentWhileEditing: Bool { get }
@@ -353,7 +353,7 @@

Default Implementation

Declaration

Swift

-
var willBeginEditing: WillBeginEditingClosure? { get }
+
var willBeginEditing: WillBeginEditingClosure? { get }
@@ -388,7 +388,7 @@

Default Implementation

Declaration

Swift

-
var didEndEditing: DidEndEditingClosure? { get }
+
var didEndEditing: DidEndEditingClosure? { get }
@@ -423,7 +423,7 @@

Default Implementation

Declaration

Swift

-
var commitEditingStyle: CommitEditingStyleClosure? { get }
+
var commitEditingStyle: CommitEditingStyleClosure? { get }
@@ -458,7 +458,7 @@

Default Implementation

Declaration

Swift

-
var didSelect: DidSelectClosure? { get }
+
var didSelect: DidSelectClosure? { get }
@@ -493,7 +493,7 @@

Default Implementation

Declaration

Swift

-
var accessoryButtonTapped: AccessoryButtonTappedClosure? { get }
+
var accessoryButtonTapped: AccessoryButtonTappedClosure? { get }
@@ -552,7 +552,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableSectionHeaderFooterViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableSectionHeaderFooterViewModel.html index 91ba187..65aa61f 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableSectionHeaderFooterViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableSectionHeaderFooterViewModel.html @@ -169,7 +169,7 @@

TableSectionHeaderFooterViewModel

Declaration

Swift

-
var title: String? { get }
+
var title: String? { get }
@@ -196,7 +196,7 @@

Declaration

Declaration

Swift

-
var height: CGFloat? { get }
+
var height: CGFloat? { get }
@@ -255,7 +255,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableViewCellModelEditActions.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableViewCellModelEditActions.html index c647b5c..d745eb4 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableViewCellModelEditActions.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Protocols/TableViewCellModelEditActions.html @@ -181,7 +181,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs.html index 23e9482..8d1d386 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs.html @@ -362,7 +362,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/AnyDiffableViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/AnyDiffableViewModel.html index ad72f97..6303c19 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/AnyDiffableViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/AnyDiffableViewModel.html @@ -183,7 +183,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionSectionViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionSectionViewModel.html index 054635a..9388241 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionSectionViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionSectionViewModel.html @@ -202,7 +202,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -302,7 +302,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionViewModel.html index d592d72..10d3b50 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/CollectionViewModel.html @@ -195,7 +195,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -268,7 +268,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists section: Int) -> CollectionSectionViewModel? { get }
+
public subscript(ifExists section: Int) -> CollectionSectionViewModel? { get }
@@ -314,7 +314,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists indexPath: IndexPath) -> CollectionCellViewModel? { get }
+
public subscript(ifExists indexPath: IndexPath) -> CollectionCellViewModel? { get }
@@ -345,7 +345,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/SupplementaryViewInfo.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/SupplementaryViewInfo.html index 119afe9..f931d68 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/SupplementaryViewInfo.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/SupplementaryViewInfo.html @@ -310,7 +310,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableSectionViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableSectionViewModel.html index 5c1b603..c3b4eb7 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableSectionViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableSectionViewModel.html @@ -283,7 +283,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -496,7 +496,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableViewModel.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableViewModel.html index cf0e9c3..8ac8a46 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableViewModel.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/TableViewModel.html @@ -249,7 +249,7 @@

Declaration

Declaration

Swift

-
public var isEmpty: Bool { get }
+
public var isEmpty: Bool { get }
@@ -382,7 +382,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists section: Int) -> TableSectionViewModel? { get }
+
public subscript(ifExists section: Int) -> TableSectionViewModel? { get }
@@ -428,7 +428,7 @@

Parameters

Declaration

Swift

-
public subscript(ifExists indexPath: IndexPath) -> TableCellViewModel? { get }
+
public subscript(ifExists indexPath: IndexPath) -> TableCellViewModel? { get }
@@ -459,7 +459,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/ViewRegistrationInfo.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/ViewRegistrationInfo.html index 4cead97..84ac61d 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/ViewRegistrationInfo.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Structs/ViewRegistrationInfo.html @@ -335,7 +335,7 @@

Parameters

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Typealiases.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Typealiases.html index 78547db..b6c119b 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Typealiases.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/Typealiases.html @@ -174,7 +174,7 @@

Declaration

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/getting-started.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/getting-started.html index 4f39b6d..969a92b 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/getting-started.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/getting-started.html @@ -165,18 +165,18 @@

Example

// Given a view controller with a table view
 
 // 1. create cell models
-let cell0 = ExampleTableCellModel(...)
-let cell1 = ExampleTableCellModel(...)
-let cell2 = ExampleTableCellModel(...)
+let cell0 = ExampleTableCellModel(...)
+let cell1 = ExampleTableCellModel(...)
+let cell2 = ExampleTableCellModel(...)
 
 // 2. create section models
-let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
+let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
 
 // 3. create table model
-let tableModel = TableViewModel(sectionModels: [section0])
+let tableModel = TableViewModel(sectionModels: [section0])
 
 // 4. create driver
-self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
+self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
 
 // 5. update driver with new table model as it changes
 let updatedTableModel = self.doSomethingToChangeModels()
@@ -189,12 +189,12 @@ 

Detailed Example

The following is a more detailed example, to see how this is all integrated into your code. To get set up, you first need to add a Driver (either a TableViewDriver or CollectionViewDriver) to your view controller:

-
struct Person {
+
struct Person {
   let name: String
-  let uuid = UUID()
+  let uuid = UUID()
 }
 
-final class PersonViewController: UITableViewController {
+final class PersonViewController: UITableViewController {
     var people: [Person]
     var tableViewDriver: TableViewDriver?
                   .
@@ -203,8 +203,8 @@ 

Detailed Example

override func viewDidLoad() { super.viewDidLoad() // Initialize our `TableViewDriver` with our tableView - self.tableViewDriver = TableViewDriver(tableView: self.tableView) - self.people = [Person(name: "Tom")] + self.tableViewDriver = TableViewDriver(tableView: self.tableView) + self.people = [Person(name: "Tom")] } }
@@ -219,13 +219,13 @@

Detailed Example

Great! But how do you make that TableViewModel? We recommend having a static function that takes in new data and generates the TableViewModel. It might look something like this:

/// Given a new set of [Person], generates the `TableViewModel` representing that new data
-static func viewModel(forState people: [Person]) -> TableViewModel { ... }
+static func viewModel(forState people: [Person]) -> TableViewModel { ... }
 
 

Then any time your data (in this case the people property) changes, you can generate your new TableViewModel

var people: [Person] = [] {
-    didSet {
+    didSet {
         self.tableViewDriver?.tableViewModel = PersonViewController.viewModel(
             forState: people
         )
@@ -236,16 +236,16 @@ 

Detailed Example

Okay now lets go back and fill in our viewModel(forState:) function:

/// Given a new set of [Person], generates the `TableViewModel` representing that new data
-extension PersonViewController {
-    static func viewModel(forState people: [Person]) -> TableViewModel {
-            let personCellViewModels = people.map { PersonCellModel(person: $0) }
-            let section = TableSectionViewModel(
+extension PersonViewController {
+    static func viewModel(forState people: [Person]) -> TableViewModel {
+            let personCellViewModels = people.map { PersonCellModel(person: $0) }
+            let section = TableSectionViewModel(
               headerTitle: "People",
               headerHeight: 44,
               cellViewModels: personCellViewModels,
               diffingKey: "People" // a unique string for automatically diffing
             )
-        return TableViewModel(sectionModels: [section])
+        return TableViewModel(sectionModels: [section])
     }
 }
 
@@ -257,10 +257,10 @@ 

Detailed Example

Now all we have to do is to define PersonCellModel:


-final class PersonCell: UITableViewCell { }
+final class PersonCell: UITableViewCell { }
 
-struct PersonCellModel: TableCellViewModel, DiffableViewModel {
-    var registrationInfo = ViewRegistrationInfo(classType: PersonCell.self)
+struct PersonCellModel: TableCellViewModel, DiffableViewModel {
+    var registrationInfo = ViewRegistrationInfo(classType: PersonCell.self)
     var accessibilityFormat: CellAccessibilityFormat = "PersonUserCell"
     let cellIdentifier = "PersonUserCell"
     let editingStyle: UITableViewCellEditingStyle = .delete
@@ -277,7 +277,7 @@ 

Detailed Example

// If we want the library to automatically reload when new data is available // each cell model needs to have a unique key for the diffing algorithm to work. // In this case we just use the person's uuid - var diffingKey: String { + var diffingKey: String { return self.person.uuid.uuidString } } @@ -294,7 +294,7 @@

Detailed Example

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/index.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/index.html index 0f3bc3e..f3e9b56 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/index.html @@ -156,18 +156,18 @@

Example

// Given a view controller with a table view
 
 // 1. create cell models
-let cell0 = ExampleTableCellModel(...)
-let cell1 = ExampleTableCellModel(...)
-let cell2 = ExampleTableCellModel(...)
+let cell0 = ExampleTableCellModel(...)
+let cell1 = ExampleTableCellModel(...)
+let cell2 = ExampleTableCellModel(...)
 
 // 2. create section models
-let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
+let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
 
 // 3. create table model
-let tableModel = TableViewModel(sectionModels: [section0])
+let tableModel = TableViewModel(sectionModels: [section0])
 
 // 4. create driver
-self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
+self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
 
 // 5. update driver with new table model as it changes
 let updatedTableModel = self.doSomethingToChangeModels()
@@ -177,7 +177,7 @@ 

Example

Project Status

-

An early version of the UITableView support has been shipping in the PlanGrid app since late 2015 and is now used accross wide parts of the app. The support for UICollectionView is less mature as we only use UICollectionView in very few places.

+

An early version of the UITableView support has been shipping in the PlanGrid app since late 2015 and is now used accross wide parts of the app. The support for UICollectionView is less mature as we only use UICollectionView in very few places.

@@ -211,7 +211,7 @@

Requirements

  • Xcode 10+
  • Swift 4.2+
  • -
  • iOS 10+
  • +
  • iOS 11+

Installation

@@ -237,7 +237,7 @@

License

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/vision.html b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/vision.html index aa39cdd..dfc6eef 100644 --- a/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/vision.html +++ b/docs/docsets/ReactiveLists.docset/Contents/Resources/Documents/vision.html @@ -158,7 +158,7 @@

Vision

diff --git a/docs/docsets/ReactiveLists.docset/Contents/Resources/docSet.dsidx b/docs/docsets/ReactiveLists.docset/Contents/Resources/docSet.dsidx index 85cdcd64b423ee5b23aa5224ced2bcc571383258..db8906ad02a33a985595ef252e55a11ee8f1035a 100644 GIT binary patch delta 32 ocmZp8z|`=7X+jd8fh8{k0|OJk9s_?Dzuv~ey?mQ>`7bX30GZJVp8x;= delta 32 ocmZp8z|`=7X+jd8P5>_h0|OJk9s_?Dzuv~ey?mQ>`7bX30Gn?KvH$=8 diff --git a/docs/docsets/ReactiveLists.tgz b/docs/docsets/ReactiveLists.tgz index 0785ea0bb18fb721446cbdf59cdae5a500adf8a5..e9fa5fe0548ebe592dd52b92dfca7fa1d93d8e3a 100644 GIT binary patch literal 75022 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 literal 78561 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 OH;mE`y@$C*f%$)ac|}J6 diff --git a/docs/getting-started.html b/docs/getting-started.html index 4f39b6d..969a92b 100644 --- a/docs/getting-started.html +++ b/docs/getting-started.html @@ -165,18 +165,18 @@

Example

// Given a view controller with a table view
 
 // 1. create cell models
-let cell0 = ExampleTableCellModel(...)
-let cell1 = ExampleTableCellModel(...)
-let cell2 = ExampleTableCellModel(...)
+let cell0 = ExampleTableCellModel(...)
+let cell1 = ExampleTableCellModel(...)
+let cell2 = ExampleTableCellModel(...)
 
 // 2. create section models
-let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
+let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
 
 // 3. create table model
-let tableModel = TableViewModel(sectionModels: [section0])
+let tableModel = TableViewModel(sectionModels: [section0])
 
 // 4. create driver
-self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
+self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
 
 // 5. update driver with new table model as it changes
 let updatedTableModel = self.doSomethingToChangeModels()
@@ -189,12 +189,12 @@ 

Detailed Example

The following is a more detailed example, to see how this is all integrated into your code. To get set up, you first need to add a Driver (either a TableViewDriver or CollectionViewDriver) to your view controller:

-
struct Person {
+
struct Person {
   let name: String
-  let uuid = UUID()
+  let uuid = UUID()
 }
 
-final class PersonViewController: UITableViewController {
+final class PersonViewController: UITableViewController {
     var people: [Person]
     var tableViewDriver: TableViewDriver?
                   .
@@ -203,8 +203,8 @@ 

Detailed Example

override func viewDidLoad() { super.viewDidLoad() // Initialize our `TableViewDriver` with our tableView - self.tableViewDriver = TableViewDriver(tableView: self.tableView) - self.people = [Person(name: "Tom")] + self.tableViewDriver = TableViewDriver(tableView: self.tableView) + self.people = [Person(name: "Tom")] } }
@@ -219,13 +219,13 @@

Detailed Example

Great! But how do you make that TableViewModel? We recommend having a static function that takes in new data and generates the TableViewModel. It might look something like this:

/// Given a new set of [Person], generates the `TableViewModel` representing that new data
-static func viewModel(forState people: [Person]) -> TableViewModel { ... }
+static func viewModel(forState people: [Person]) -> TableViewModel { ... }
 
 

Then any time your data (in this case the people property) changes, you can generate your new TableViewModel

var people: [Person] = [] {
-    didSet {
+    didSet {
         self.tableViewDriver?.tableViewModel = PersonViewController.viewModel(
             forState: people
         )
@@ -236,16 +236,16 @@ 

Detailed Example

Okay now lets go back and fill in our viewModel(forState:) function:

/// Given a new set of [Person], generates the `TableViewModel` representing that new data
-extension PersonViewController {
-    static func viewModel(forState people: [Person]) -> TableViewModel {
-            let personCellViewModels = people.map { PersonCellModel(person: $0) }
-            let section = TableSectionViewModel(
+extension PersonViewController {
+    static func viewModel(forState people: [Person]) -> TableViewModel {
+            let personCellViewModels = people.map { PersonCellModel(person: $0) }
+            let section = TableSectionViewModel(
               headerTitle: "People",
               headerHeight: 44,
               cellViewModels: personCellViewModels,
               diffingKey: "People" // a unique string for automatically diffing
             )
-        return TableViewModel(sectionModels: [section])
+        return TableViewModel(sectionModels: [section])
     }
 }
 
@@ -257,10 +257,10 @@ 

Detailed Example

Now all we have to do is to define PersonCellModel:


-final class PersonCell: UITableViewCell { }
+final class PersonCell: UITableViewCell { }
 
-struct PersonCellModel: TableCellViewModel, DiffableViewModel {
-    var registrationInfo = ViewRegistrationInfo(classType: PersonCell.self)
+struct PersonCellModel: TableCellViewModel, DiffableViewModel {
+    var registrationInfo = ViewRegistrationInfo(classType: PersonCell.self)
     var accessibilityFormat: CellAccessibilityFormat = "PersonUserCell"
     let cellIdentifier = "PersonUserCell"
     let editingStyle: UITableViewCellEditingStyle = .delete
@@ -277,7 +277,7 @@ 

Detailed Example

// If we want the library to automatically reload when new data is available // each cell model needs to have a unique key for the diffing algorithm to work. // In this case we just use the person's uuid - var diffingKey: String { + var diffingKey: String { return self.person.uuid.uuidString } } @@ -294,7 +294,7 @@

Detailed Example

diff --git a/docs/index.html b/docs/index.html index 0f3bc3e..f3e9b56 100644 --- a/docs/index.html +++ b/docs/index.html @@ -156,18 +156,18 @@

Example

// Given a view controller with a table view
 
 // 1. create cell models
-let cell0 = ExampleTableCellModel(...)
-let cell1 = ExampleTableCellModel(...)
-let cell2 = ExampleTableCellModel(...)
+let cell0 = ExampleTableCellModel(...)
+let cell1 = ExampleTableCellModel(...)
+let cell2 = ExampleTableCellModel(...)
 
 // 2. create section models
-let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
+let section0 = ExampleTableSectionViewModel(cellViewModels: [cell0, cell1, cell2])
 
 // 3. create table model
-let tableModel = TableViewModel(sectionModels: [section0])
+let tableModel = TableViewModel(sectionModels: [section0])
 
 // 4. create driver
-self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
+self.driver = TableViewDriver(tableView: self.tableView, tableViewModel: tableModel)
 
 // 5. update driver with new table model as it changes
 let updatedTableModel = self.doSomethingToChangeModels()
@@ -177,7 +177,7 @@ 

Example

Project Status

-

An early version of the UITableView support has been shipping in the PlanGrid app since late 2015 and is now used accross wide parts of the app. The support for UICollectionView is less mature as we only use UICollectionView in very few places.

+

An early version of the UITableView support has been shipping in the PlanGrid app since late 2015 and is now used accross wide parts of the app. The support for UICollectionView is less mature as we only use UICollectionView in very few places.

@@ -211,7 +211,7 @@

Requirements

  • Xcode 10+
  • Swift 4.2+
  • -
  • iOS 10+
  • +
  • iOS 11+

Installation

@@ -237,7 +237,7 @@

License

diff --git a/docs/undocumented.json b/docs/undocumented.json index c4b8b30..6f90e0d 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -2,5 +2,5 @@ "warnings": [ ], - "source_directory": "/Users/jsquires/Develop/ReactiveLists" + "source_directory": "/Users/jesse/GitHub/ReactiveLists" } \ No newline at end of file diff --git a/docs/vision.html b/docs/vision.html index aa39cdd..dfc6eef 100644 --- a/docs/vision.html +++ b/docs/vision.html @@ -158,7 +158,7 @@

Vision