diff --git a/Example/.swiftlint.yml b/Example/.swiftlint.yml index de705a9..25e2d09 100644 --- a/Example/.swiftlint.yml +++ b/Example/.swiftlint.yml @@ -8,4 +8,4 @@ included: - ../GradientLoadingBar excluded: - - GradientLoadingBar/AppDelegate.swift \ No newline at end of file + - Pods \ No newline at end of file diff --git a/Example/GradientLoadingBar.xcodeproj/project.pbxproj b/Example/GradientLoadingBar.xcodeproj/project.pbxproj index 3f608f6..64a4f9a 100644 --- a/Example/GradientLoadingBar.xcodeproj/project.pbxproj +++ b/Example/GradientLoadingBar.xcodeproj/project.pbxproj @@ -369,10 +369,12 @@ inputPaths = ( "${SRCROOT}/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/GradientLoadingBar/GradientLoadingBar.framework", + "${BUILT_PRODUCTS_DIR}/Observable/Observable.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GradientLoadingBar.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Observable.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -424,7 +426,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "SWIFTFORMAT=\"${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat\"\nif [ ! -f \"$SWIFTFORMAT\" ]; then\n echo \"warning: SwiftFormat not installed!\"\n exit 1\nfi\n\n$SWIFTFORMAT ../ --disable \"trailingCommas\""; + shellScript = "SWIFTFORMAT=\"${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat\"\nif [ ! -f \"$SWIFTFORMAT\" ]; then\n echo \"warning: SwiftFormat not installed!\"\n exit 1\nfi\n\n$SWIFTFORMAT ../ --disable \"sortedImports, trailingCommas\" --exclude \"${PODS_ROOT}\" --wraparguments \"afterfirst\"\n"; }; 972EE1CA201CA5E5001F603C /* Swiftformat */ = { isa = PBXShellScriptBuildPhase; @@ -452,7 +454,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "SWIFTLINT=\"${PODS_ROOT}/SwiftLint/swiftlint\"\nif [ ! -f \"$SWIFTLINT\" ]; then\n echo \"warning: SwiftLint not installed!\"\n exit 1\nfi\n\n$SWIFTLINT"; + shellScript = "SWIFTLINT=\"${PODS_ROOT}/SwiftLint/swiftlint\"\nif [ ! -f \"$SWIFTLINT\" ]; then\n echo \"warning: SwiftLint not installed!\"\n exit 1\nfi\n\n$SWIFTLINT\n"; }; 97C4F18C1F7F8E7E00739B14 /* Swiftlint */ = { isa = PBXShellScriptBuildPhase; diff --git a/Example/GradientLoadingBar/AppDelegate.swift b/Example/GradientLoadingBar/AppDelegate.swift index 6f2497e..3dba8f7 100644 --- a/Example/GradientLoadingBar/AppDelegate.swift +++ b/Example/GradientLoadingBar/AppDelegate.swift @@ -24,12 +24,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } func applicationWillResignActive(_: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Sent when the application is about to move from active to inactive state. + // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application + // and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } func applicationDidEnterBackground(_: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your + // application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } @@ -38,7 +41,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } func applicationDidBecomeActive(_: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + // Restart any tasks that were paused (or not yet started) while the application was inactive. + // If the application was previously in the background, optionally refresh the user interface. } func applicationWillTerminate(_: UIApplication) { diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 2b372bf..ff903f4 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,7 +1,9 @@ PODS: - - GradientLoadingBar (1.1.11) - - SwiftFormat/CLI (0.33.7) - - SwiftLint (0.25.1) + - GradientLoadingBar (1.1.11): + - Observable + - Observable (1.3.3) + - SwiftFormat/CLI (0.35.2) + - SwiftLint (0.27.0) DEPENDENCIES: - GradientLoadingBar (from `../`) @@ -13,10 +15,11 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - GradientLoadingBar: d06c05c4732c6a1404d47f33342de8fb3062d5e2 - SwiftFormat: 2e9b261a2ded97bc2aff2710c9826c6548a45bdb - SwiftLint: ce933681be10c3266e82576dad676fa815a602e9 + GradientLoadingBar: ab1b7e3fb70aa3843a4c87fc511c681bac91778f + Observable: 360b0132cef970a50bc69611df7fcbda46e91c34 + SwiftFormat: d26c78821785f8c1d029323658c93a977cdf31bf + SwiftLint: 3207c1faa2240bf8973b191820a116113cd11073 -PODFILE CHECKSUM: 55891446b31c0884d45a4c65f1b52d307ff274bc +PODFILE CHECKSUM: cb5da5528bd7a41bec85ae0311fc5e9fc0b96e9c COCOAPODS: 1.3.1 diff --git a/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json b/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json index ee4551e..c4f9c02 100644 --- a/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json +++ b/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json @@ -16,8 +16,14 @@ "git": "https://github.com/fxm90/GradientLoadingBar.git", "tag": "1.1.11" }, + "social_media_url": "https://twitter.com/iamfelixm", "platforms": { "ios": "9.0" }, - "source_files": "GradientLoadingBar/Classes/**/*" + "source_files": "GradientLoadingBar/Classes/**/*", + "dependencies": { + "Observable": [ + + ] + } } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 2b372bf..ff903f4 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,7 +1,9 @@ PODS: - - GradientLoadingBar (1.1.11) - - SwiftFormat/CLI (0.33.7) - - SwiftLint (0.25.1) + - GradientLoadingBar (1.1.11): + - Observable + - Observable (1.3.3) + - SwiftFormat/CLI (0.35.2) + - SwiftLint (0.27.0) DEPENDENCIES: - GradientLoadingBar (from `../`) @@ -13,10 +15,11 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - GradientLoadingBar: d06c05c4732c6a1404d47f33342de8fb3062d5e2 - SwiftFormat: 2e9b261a2ded97bc2aff2710c9826c6548a45bdb - SwiftLint: ce933681be10c3266e82576dad676fa815a602e9 + GradientLoadingBar: ab1b7e3fb70aa3843a4c87fc511c681bac91778f + Observable: 360b0132cef970a50bc69611df7fcbda46e91c34 + SwiftFormat: d26c78821785f8c1d029323658c93a977cdf31bf + SwiftLint: 3207c1faa2240bf8973b191820a116113cd11073 -PODFILE CHECKSUM: 55891446b31c0884d45a4c65f1b52d307ff274bc +PODFILE CHECKSUM: cb5da5528bd7a41bec85ae0311fc5e9fc0b96e9c COCOAPODS: 1.3.1 diff --git a/Example/Pods/Observable/LICENSE b/Example/Pods/Observable/LICENSE new file mode 100644 index 0000000..c5a8fd3 --- /dev/null +++ b/Example/Pods/Observable/LICENSE @@ -0,0 +1,22 @@ + +MIT License + +Copyright (c) 2017 Robert-Hein Hooijmans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Example/Pods/Observable/Observable/Classes/Disposable.swift b/Example/Pods/Observable/Observable/Classes/Disposable.swift new file mode 100644 index 0000000..7ebc773 --- /dev/null +++ b/Example/Pods/Observable/Observable/Classes/Disposable.swift @@ -0,0 +1,19 @@ +import Foundation + +public typealias Disposal = [Disposable] + +public final class Disposable { + private let dispose: () -> Void + + init(_ dispose: @escaping () -> Void) { + self.dispose = dispose + } + + deinit { + dispose() + } + + public func add(to disposal: inout Disposal) { + disposal.append(self) + } +} diff --git a/Example/Pods/Observable/Observable/Classes/Observable.swift b/Example/Pods/Observable/Observable/Classes/Observable.swift new file mode 100644 index 0000000..7e28c2c --- /dev/null +++ b/Example/Pods/Observable/Observable/Classes/Observable.swift @@ -0,0 +1,35 @@ +import Foundation + +public final class Observable { + public typealias Observer = (T, T?) -> Void + + private var observers: [Int: Observer] = [:] + private var uniqueID = (0...).makeIterator() + + public var value: T { + didSet { + observers.values.forEach { $0(value, oldValue) } + } + } + + public init(_ value: T) { + self.value = value + } + + public func observe(_ observer: @escaping Observer) -> Disposable { + guard let id = uniqueID.next() else { fatalError("There should always be a next unique id") } + + observers[id] = observer + observer(value, nil) + + let disposable = Disposable { [weak self] in + self?.observers[id] = nil + } + + return disposable + } + + public func removeAllObservers() { + observers.removeAll() + } +} diff --git a/Example/Pods/Observable/README.md b/Example/Pods/Observable/README.md new file mode 100644 index 0000000..e7834c1 --- /dev/null +++ b/Example/Pods/Observable/README.md @@ -0,0 +1,63 @@ +

+ Observable +

+ +**Observable** is the easiest way to observe values in Swift. + +## How to + +### Create an Observable + +```swift +var position = Observable(CGPoint.zero) +``` + +### Add an observer + +```swift +position.observe { p in + // handle new position +} +``` + +### Change the value + +```swift +position.value = p +``` + +## Memory management + +For a single observer you can store the returned `Disposable` to a variable + +```swift +disposable = position.observe { p in + +``` + +For multiple observers you can add the disposable to a `Disposal` variable + +```swift +position.observe { }.add(to: &disposal) +``` + +And always weakify `self` when referencing `self` inside your observer + +```swift +position.observe { [weak self] position in +``` + +## Installation + +### CocoaPods + +**Observable** is available through [CocoaPods](http://cocoapods.org). To install +it, simply add the following line to your Podfile: + +```ruby +pod 'Observable' +``` + +## Suggestions or feedback? + +Feel free to create a pull request, open an issue or find [me on Twitter](https://twitter.com/roberthein). diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 464972c..be4b05c 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,37 +7,59 @@ objects = { /* Begin PBXBuildFile section */ - 0C0A9CE58BDBE93B7931514CD37F73A1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; + 0A24F9CFA5D9A8D086D604E3D2F83840 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D757C4DAB7D299B5B6A9C78D8558897 /* GradientView.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1B508C3732F51FCEB0F4635A802DADCA /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C7A707D05A1C993F972D63ED341DF2 /* Pods-GradientLoadingBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1BE3FC45282A489B41CADBB91B26597B /* Pods-GradientLoadingBar_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F45E13E0437FDF717140CA22C9C52A /* Pods-GradientLoadingBar_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 21099F053678CC07D8C1C5B04346D9A3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; - 3B391A5B57957E4E7DECA2B0F9DA11EF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; - 3CAA7A728F43E1EB82993F0868BBC0AF /* Pods-GradientLoadingBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91C3A7E062B6B3E795C008251C9BD8BA /* Pods-GradientLoadingBar_Example-dummy.m */; }; - 40C2C1DE84982928AE2AB9C90E080B92 /* UIColor+Initializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D66746F49F8782E7357FA82EF7779D /* UIColor+Initializers.swift */; }; - 425BABE38106C266F8CCB7F982FFEF24 /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A137836E31F0B85F44FE7ED28C8A1E /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62AA7AF24464A813A1F7A67E817628A3 /* NotificationCenter+ObserveOnce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F47C5FCDF2DFC31D884CB9472938D3 /* NotificationCenter+ObserveOnce.swift */; }; - 8214555518A297830AC7B66DBF95C035 /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C47EFA242B2BA62A2408CC13176C080D /* GradientLoadingBar-dummy.m */; }; - 9AAC7020094626B3D3716199EF579DB3 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C7A707D05A1C993F972D63ED341DF2 /* Pods-GradientLoadingBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A4F20FA2B2FF34FBE2F0F69DE231B185 /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A09E03ECBCBDC050671661FC8AE063 /* GradientLoadingBarController.swift */; }; + 21099F053678CC07D8C1C5B04346D9A3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5A944939BE5460DEF5F9F4588F9DFF7 /* Foundation.framework */; }; + 25CCFC5D2F2CCB81FBB826BEC7FC984F /* NotificationCenter+ObserveOnce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F47C5FCDF2DFC31D884CB9472938D3 /* NotificationCenter+ObserveOnce.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 263627164E406AFFD95155E173027782 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5A944939BE5460DEF5F9F4588F9DFF7 /* Foundation.framework */; }; + 2DE42A29980B215709D0374B9CDAF864 /* Observable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2687E35F25C441F2E81A536762B2F5 /* Observable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D3CCA6D43E5AE89C0845F773BED920F /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A137836E31F0B85F44FE7ED28C8A1E /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 42C9B868EFF007C954640D7937E4D31F /* Pods-GradientLoadingBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91C3A7E062B6B3E795C008251C9BD8BA /* Pods-GradientLoadingBar_Example-dummy.m */; }; + 53B37B1A5CD4E5752EC90305BCA9A1E4 /* Durations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 246B489FC979CB11F78FF76AE8B59FE2 /* Durations.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 58DAC4AC2D0F3E54E5BBB5CE6FE6C93D /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754B7114D4EEDF2BB932C2E3D924F774 /* GradientLoadingBarViewModel.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6D5912C2DDE4662EB68F4569C645C09B /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 722B62968CEEC329B4F457E386567386 /* Disposable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 77A0F79C95F0C2561B91D4B5F5C2EED4 /* Observable.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C47C72A5BD1CE40555C3CA440845A93E /* Observable.framework */; }; + A2B4EF6ABA56186BAE518466847A0490 /* UIColor+Initializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D66746F49F8782E7357FA82EF7779D /* UIColor+Initializers.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A30BEAE852275C391EAEC9E314339EB1 /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A09E03ECBCBDC050671661FC8AE063 /* GradientLoadingBarController.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + ADBF676850928CD01AAD7CD65CDF91A8 /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C47EFA242B2BA62A2408CC13176C080D /* GradientLoadingBar-dummy.m */; }; B197025B05C5C81BF8345D13849A9C81 /* Pods-GradientLoadingBar_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E81AB562A2ACC55D8595C5C93F545EA7 /* Pods-GradientLoadingBar_Tests-dummy.m */; }; - C0EA09275A496634F7A4C83E5C2C3F54 /* Durations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 246B489FC979CB11F78FF76AE8B59FE2 /* Durations.swift */; }; - E8F0E3E8EE6E31D2590B13463AA84C94 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D757C4DAB7D299B5B6A9C78D8558897 /* GradientView.swift */; }; - F0058F3D9D372E5933F3C8264F4F73C5 /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754B7114D4EEDF2BB932C2E3D924F774 /* GradientLoadingBarViewModel.swift */; }; + BA95AAF46D83E99F038F9161921D0FF8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5A944939BE5460DEF5F9F4588F9DFF7 /* Foundation.framework */; }; + E61B45CF190D839749DAB21660A95E78 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5A944939BE5460DEF5F9F4588F9DFF7 /* Foundation.framework */; }; + EA0BC8E6D4AFBEA5C2AD8E065FEF64B8 /* Observable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 08B7FD7F0ECBFCA1FB3F301D61BF4F2A /* Observable-dummy.m */; }; + F7EC2D3AE7D079C6008BB3D8A140C53F /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C43F7177749CE2D34E637E99D91ADF /* Observable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0A4C5EB7B411D126BCF5E8AEED59062F /* PBXContainerItemProxy */ = { + 11F0ABF401134D6A07D63CBB85302D0B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F07543EF32FF53CF85E6DF5DD1513CBB; + remoteGlobalIDString = 6D7DBBC4BB6995891B4D548F93F52286; + remoteInfo = Observable; + }; + 9BBDC016F505E44F0E066512798A7A25 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2B63880316D7E6A564FC45314A003B39; remoteInfo = GradientLoadingBar; }; + B51DA324BB2D0F54655F1FA7419616A0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6D7DBBC4BB6995891B4D548F93F52286; + remoteInfo = Observable; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 00A137836E31F0B85F44FE7ED28C8A1E /* GradientLoadingBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-umbrella.h"; sourceTree = ""; }; + 01C43F7177749CE2D34E637E99D91ADF /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = Observable/Classes/Observable.swift; sourceTree = ""; }; 01F47C5FCDF2DFC31D884CB9472938D3 /* NotificationCenter+ObserveOnce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NotificationCenter+ObserveOnce.swift"; sourceTree = ""; }; 06A09E03ECBCBDC050671661FC8AE063 /* GradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GradientLoadingBarController.swift; path = GradientLoadingBar/Classes/GradientLoadingBarController.swift; sourceTree = ""; }; + 08B7FD7F0ECBFCA1FB3F301D61BF4F2A /* Observable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Observable-dummy.m"; sourceTree = ""; }; 0F3D57DC040DA67C87298D736812CC57 /* GradientLoadingBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = GradientLoadingBar.modulemap; sourceTree = ""; }; 14091D853C2B706DF1AE856AE9CFCB78 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 17F4D7C8C9BBFFB7EF138F17A231CC6C /* Pods-GradientLoadingBar_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_Example-resources.sh"; sourceTree = ""; }; @@ -46,7 +68,11 @@ 1D757C4DAB7D299B5B6A9C78D8558897 /* GradientView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = ""; }; 22C2A4F9D4B8EA034AC866A1472C25AB /* Pods-GradientLoadingBar_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_Tests-resources.sh"; sourceTree = ""; }; 246B489FC979CB11F78FF76AE8B59FE2 /* Durations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Durations.swift; sourceTree = ""; }; + 256932D0EFF124768B7828B4DBB26BB6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 284E5B1E5B78675A430CFB3C83D79E8F /* Pods_GradientLoadingBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 29F34B3709A0B91080A953ED30B6C8F6 /* GradientLoadingBar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GradientLoadingBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 32E0246132717AB85B87AD5A70F2E50F /* Pods-GradientLoadingBar_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-acknowledgements.plist"; sourceTree = ""; }; + 34665263080E033320411F4B5805E2FB /* Observable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Observable.modulemap; sourceTree = ""; }; 34E3BE59D6126F5B792C30F96DB73D61 /* Pods-GradientLoadingBar_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-acknowledgements.plist"; sourceTree = ""; }; 35F45E13E0437FDF717140CA22C9C52A /* Pods-GradientLoadingBar_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Tests-umbrella.h"; sourceTree = ""; }; 4C3D18A136BBE022D715E4F77216A1F0 /* Pods-GradientLoadingBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.debug.xcconfig"; sourceTree = ""; }; @@ -56,30 +82,43 @@ 53267FC01B3E758EC7BC06C1D2220B74 /* Pods-GradientLoadingBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.release.xcconfig"; sourceTree = ""; }; 59139AD54A0546CEF68F95C77C8D6708 /* Pods-GradientLoadingBar_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_Tests-frameworks.sh"; sourceTree = ""; }; 5F2D68AB1D719F1B064D511C976B1ABE /* Pods-GradientLoadingBar_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 62982164F2B5DEF7B82A870F71FBFE74 /* Observable.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Observable.xcconfig; sourceTree = ""; }; 63D66746F49F8782E7357FA82EF7779D /* UIColor+Initializers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+Initializers.swift"; sourceTree = ""; }; 6518FD84E10BB5DA39E8C1DB4FB82203 /* Pods-GradientLoadingBar_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-GradientLoadingBar_Example.modulemap"; sourceTree = ""; }; - 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 66A7D431F7F1C404F022C930C937FAF4 /* Pods_GradientLoadingBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 73CB53E9177A6953693286C0325D1881 /* GradientLoadingBar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GradientLoadingBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 722B62968CEEC329B4F457E386567386 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = Observable/Classes/Disposable.swift; sourceTree = ""; }; 754B7114D4EEDF2BB932C2E3D924F774 /* GradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModel.swift; sourceTree = ""; }; 77280710966B3ABC4F68126D78BA144E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 91C3A7E062B6B3E795C008251C9BD8BA /* Pods-GradientLoadingBar_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Example-dummy.m"; sourceTree = ""; }; + 92A830507050E1BD2B0BDFF09D9D3B54 /* Observable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Observable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 94987193A3C956E52823A639B1A63FE9 /* Pods_GradientLoadingBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AA2687E35F25C441F2E81A536762B2F5 /* Observable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Observable-umbrella.h"; sourceTree = ""; }; AE41E5BEBBA1125468690FAAE3B7E176 /* Pods-GradientLoadingBar_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Example-acknowledgements.markdown"; sourceTree = ""; }; AE81FE3F50CEA8E993C3DC8F5A9989B8 /* Pods-GradientLoadingBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.debug.xcconfig"; sourceTree = ""; }; B4E51896180DEC5DBCEC4A155254A5B7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B9BB15F0F0026C6CDBF8F539B4167BD7 /* Pods_GradientLoadingBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BF697EEBEEA924D759152FB1E68358EA /* Observable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Observable-prefix.pch"; sourceTree = ""; }; + C47C72A5BD1CE40555C3CA440845A93E /* Observable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Observable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C47EFA242B2BA62A2408CC13176C080D /* GradientLoadingBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientLoadingBar-dummy.m"; sourceTree = ""; }; + C5A944939BE5460DEF5F9F4588F9DFF7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; CCC1BC5CEB1151E0A04A33B26AE57411 /* GradientLoadingBar.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.xcconfig; sourceTree = ""; }; E81AB562A2ACC55D8595C5C93F545EA7 /* Pods-GradientLoadingBar_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Tests-dummy.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 50EB96CEA388ACB3D5B01964082AC28B /* Frameworks */ = { + 59F37F7D8B605E50951D3B44E3346680 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C0A9CE58BDBE93B7931514CD37F73A1 /* Foundation.framework in Frameworks */, + E61B45CF190D839749DAB21660A95E78 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B217AC9E2BED077FE57913D6F7FA922D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 263627164E406AFFD95155E173027782 /* Foundation.framework in Frameworks */, + 77A0F79C95F0C2561B91D4B5F5C2EED4 /* Observable.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -91,17 +130,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CA93BE6773832F78EAF204758D4DDADB /* Frameworks */ = { + F647AA8CBE0A1F1C353CFA2CB5B2AB2E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3B391A5B57957E4E7DECA2B0F9DA11EF /* Foundation.framework in Frameworks */, + BA95AAF46D83E99F038F9161921D0FF8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 000DB1F7C28D58192D9868B94F28D89A /* Observable */ = { + isa = PBXGroup; + children = ( + 722B62968CEEC329B4F457E386567386 /* Disposable.swift */, + 01C43F7177749CE2D34E637E99D91ADF /* Observable.swift */, + D14DA957BF229DC52113DDB438027DC5 /* Support Files */, + ); + path = Observable; + sourceTree = ""; + }; 03FE9A8BF388CAA1FCEA89FEFEDC42CA /* Views */ = { isa = PBXGroup; children = ( @@ -111,6 +160,13 @@ path = GradientLoadingBar/Classes/Views; sourceTree = ""; }; + 03FF3796EB6733FE959AB67A00C10EB9 /* SwiftLint */ = { + isa = PBXGroup; + children = ( + ); + path = SwiftLint; + sourceTree = ""; + }; 1B4DA3251E5BE2DF50EBFA48751BC9B9 /* Helpers */ = { isa = PBXGroup; children = ( @@ -121,11 +177,23 @@ path = GradientLoadingBar/Classes/Helpers; sourceTree = ""; }; - 37843AFB400D5948266EFF83D844D298 /* SwiftLint */ = { + 20E70D97A2915DA6914F9C107FDBBE1E /* Products */ = { isa = PBXGroup; children = ( + 29F34B3709A0B91080A953ED30B6C8F6 /* GradientLoadingBar.framework */, + 92A830507050E1BD2B0BDFF09D9D3B54 /* Observable.framework */, + 284E5B1E5B78675A430CFB3C83D79E8F /* Pods_GradientLoadingBar_Example.framework */, + 94987193A3C956E52823A639B1A63FE9 /* Pods_GradientLoadingBar_Tests.framework */, ); - path = SwiftLint; + name = Products; + sourceTree = ""; + }; + 46CFB12F74039FE17BF676EE34443260 /* iOS */ = { + isa = PBXGroup; + children = ( + C5A944939BE5460DEF5F9F4588F9DFF7 /* Foundation.framework */, + ); + name = iOS; sourceTree = ""; }; 4AC9178D9814BACA9FE9E7A77F04973D /* Support Files */ = { @@ -142,15 +210,6 @@ path = "Example/Pods/Target Support Files/GradientLoadingBar"; sourceTree = ""; }; - 4FAF764B0968FA76D985E563B50F54AF /* Pods */ = { - isa = PBXGroup; - children = ( - C5603D18FA3FACCD8B1248AA66F68D0F /* SwiftFormat */, - 37843AFB400D5948266EFF83D844D298 /* SwiftLint */, - ); - name = Pods; - sourceTree = ""; - }; 5B9E84DCD3E3A5647594EEBFF0F5B00A /* Pods-GradientLoadingBar_Example */ = { isa = PBXGroup; children = ( @@ -186,14 +245,24 @@ path = NotificationCenter; sourceTree = ""; }; + 7461487948C57153FA562F9AA84A83BD /* Pods */ = { + isa = PBXGroup; + children = ( + 000DB1F7C28D58192D9868B94F28D89A /* Observable */, + E00683E90061990C87DF25B5810284BB /* SwiftFormat */, + 03FF3796EB6733FE959AB67A00C10EB9 /* SwiftLint */, + ); + name = Pods; + sourceTree = ""; + }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 8E476EA5F7A15ED77D26FC97C2DCF225 /* Development Pods */, - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - 4FAF764B0968FA76D985E563B50F54AF /* Pods */, - A75F0CAF38E4AF1AFB98941ED812A427 /* Products */, + D57806A1B7868A30C55CD96489B178E5 /* Frameworks */, + 7461487948C57153FA562F9AA84A83BD /* Pods */, + 20E70D97A2915DA6914F9C107FDBBE1E /* Products */, 89EC43461F8350C8C85CBAA922CE7FC3 /* Targets Support Files */, ); sourceTree = ""; @@ -232,31 +301,6 @@ name = "Development Pods"; sourceTree = ""; }; - A75F0CAF38E4AF1AFB98941ED812A427 /* Products */ = { - isa = PBXGroup; - children = ( - 73CB53E9177A6953693286C0325D1881 /* GradientLoadingBar.framework */, - 66A7D431F7F1C404F022C930C937FAF4 /* Pods_GradientLoadingBar_Example.framework */, - B9BB15F0F0026C6CDBF8F539B4167BD7 /* Pods_GradientLoadingBar_Tests.framework */, - ); - name = Products; - sourceTree = ""; - }; - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { - isa = PBXGroup; - children = ( - D35AF013A5F0BAD4F32504907A52519E /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - C5603D18FA3FACCD8B1248AA66F68D0F /* SwiftFormat */ = { - isa = PBXGroup; - children = ( - ); - path = SwiftFormat; - sourceTree = ""; - }; C618633350DBB1327D211DE794417A1F /* Pods-GradientLoadingBar_Tests */ = { isa = PBXGroup; children = ( @@ -275,12 +319,27 @@ path = "Target Support Files/Pods-GradientLoadingBar_Tests"; sourceTree = ""; }; - D35AF013A5F0BAD4F32504907A52519E /* iOS */ = { + D14DA957BF229DC52113DDB438027DC5 /* Support Files */ = { isa = PBXGroup; children = ( - 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */, + 256932D0EFF124768B7828B4DBB26BB6 /* Info.plist */, + 34665263080E033320411F4B5805E2FB /* Observable.modulemap */, + 62982164F2B5DEF7B82A870F71FBFE74 /* Observable.xcconfig */, + 08B7FD7F0ECBFCA1FB3F301D61BF4F2A /* Observable-dummy.m */, + BF697EEBEEA924D759152FB1E68358EA /* Observable-prefix.pch */, + AA2687E35F25C441F2E81A536762B2F5 /* Observable-umbrella.h */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/Observable"; + sourceTree = ""; + }; + D57806A1B7868A30C55CD96489B178E5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C47C72A5BD1CE40555C3CA440845A93E /* Observable.framework */, + 46CFB12F74039FE17BF676EE34443260 /* iOS */, + ); + name = Frameworks; sourceTree = ""; }; DC7FD9A01C467AB3B493793994163D68 /* Structs */ = { @@ -291,6 +350,13 @@ path = Structs; sourceTree = ""; }; + E00683E90061990C87DF25B5810284BB /* SwiftFormat */ = { + isa = PBXGroup; + children = ( + ); + path = SwiftFormat; + sourceTree = ""; + }; F6F3410B53BB2874B23F2BB15B244790 /* GradientLoadingBar */ = { isa = PBXGroup; children = ( @@ -307,11 +373,11 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 1F791A809647DFE0FCC3CB2168083021 /* Headers */ = { + 2A3519C597CAFBF6C661E70C07E4F9C6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9AAC7020094626B3D3716199EF579DB3 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */, + 3D3CCA6D43E5AE89C0845F773BED920F /* GradientLoadingBar-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -323,11 +389,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8D11B102A61F0C450D8BD9F92191D29E /* Headers */ = { + E45FB182CB503AA3F930BC401966B247 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 425BABE38106C266F8CCB7F982FFEF24 /* GradientLoadingBar-umbrella.h in Headers */, + 1B508C3732F51FCEB0F4635A802DADCA /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FB3204964DA0E9693C894666218B8BAA /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DE42A29980B215709D0374B9CDAF864 /* Observable-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -348,42 +422,61 @@ ); name = "Pods-GradientLoadingBar_Tests"; productName = "Pods-GradientLoadingBar_Tests"; - productReference = B9BB15F0F0026C6CDBF8F539B4167BD7 /* Pods_GradientLoadingBar_Tests.framework */; + productReference = 94987193A3C956E52823A639B1A63FE9 /* Pods_GradientLoadingBar_Tests.framework */; productType = "com.apple.product-type.framework"; }; - F07543EF32FF53CF85E6DF5DD1513CBB /* GradientLoadingBar */ = { + 2B63880316D7E6A564FC45314A003B39 /* GradientLoadingBar */ = { isa = PBXNativeTarget; - buildConfigurationList = BFBEA72970BDBFBDD6058C5F23899D8C /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */; + buildConfigurationList = 37515D7500C740E1F892D462242EE790 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */; buildPhases = ( - 3ECE7B2EF1F74C2BFD04511BA67D1665 /* Sources */, - 50EB96CEA388ACB3D5B01964082AC28B /* Frameworks */, - 8D11B102A61F0C450D8BD9F92191D29E /* Headers */, + C47DF8F5CAE3C2D6102D0EDA7329B0A5 /* Sources */, + B217AC9E2BED077FE57913D6F7FA922D /* Frameworks */, + 2A3519C597CAFBF6C661E70C07E4F9C6 /* Headers */, ); buildRules = ( ); dependencies = ( + B92FAD085B6E660E09702054FD94753F /* PBXTargetDependency */, ); name = GradientLoadingBar; productName = GradientLoadingBar; - productReference = 73CB53E9177A6953693286C0325D1881 /* GradientLoadingBar.framework */; + productReference = 29F34B3709A0B91080A953ED30B6C8F6 /* GradientLoadingBar.framework */; productType = "com.apple.product-type.framework"; }; - F66315F62F3F426F979FBA688C95BB49 /* Pods-GradientLoadingBar_Example */ = { + 6D7DBBC4BB6995891B4D548F93F52286 /* Observable */ = { isa = PBXNativeTarget; - buildConfigurationList = E601522F10F0A9815FBCF79471D8A16C /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */; + buildConfigurationList = 00E38063FE1C1ED092C80D09810F4D14 /* Build configuration list for PBXNativeTarget "Observable" */; buildPhases = ( - A36F03C1DF22C7A165896095D57BB569 /* Sources */, - CA93BE6773832F78EAF204758D4DDADB /* Frameworks */, - 1F791A809647DFE0FCC3CB2168083021 /* Headers */, + FC8393BA9581130F79E1DAD4E4E99763 /* Sources */, + 59F37F7D8B605E50951D3B44E3346680 /* Frameworks */, + FB3204964DA0E9693C894666218B8BAA /* Headers */, ); buildRules = ( ); dependencies = ( - 69A90CA62BF02B2DE72D25590B362722 /* PBXTargetDependency */, + ); + name = Observable; + productName = Observable; + productReference = 92A830507050E1BD2B0BDFF09D9D3B54 /* Observable.framework */; + productType = "com.apple.product-type.framework"; + }; + C9E360AE7E621FF686F7C060178481D1 /* Pods-GradientLoadingBar_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = CE51B32DA3B3093FF3BA59642B6C54A8 /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */; + buildPhases = ( + 652F4121229E4DEADA081DDBD3ED8583 /* Sources */, + F647AA8CBE0A1F1C353CFA2CB5B2AB2E /* Frameworks */, + E45FB182CB503AA3F930BC401966B247 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + F0D652528A64CFF6B7D836DAAA8C7AEE /* PBXTargetDependency */, + 8F53C1FF4329F6085BB69BF395E65785 /* PBXTargetDependency */, ); name = "Pods-GradientLoadingBar_Example"; productName = "Pods-GradientLoadingBar_Example"; - productReference = 66A7D431F7F1C404F022C930C937FAF4 /* Pods_GradientLoadingBar_Example.framework */; + productReference = 284E5B1E5B78675A430CFB3C83D79E8F /* Pods_GradientLoadingBar_Example.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -394,11 +487,6 @@ attributes = { LastSwiftUpdateCheck = 0830; LastUpgradeCheck = 1000; - TargetAttributes = { - F07543EF32FF53CF85E6DF5DD1513CBB = { - LastSwiftMigration = 1000; - }; - }; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -408,29 +496,24 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = A75F0CAF38E4AF1AFB98941ED812A427 /* Products */; + productRefGroup = 20E70D97A2915DA6914F9C107FDBBE1E /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - F07543EF32FF53CF85E6DF5DD1513CBB /* GradientLoadingBar */, - F66315F62F3F426F979FBA688C95BB49 /* Pods-GradientLoadingBar_Example */, + 2B63880316D7E6A564FC45314A003B39 /* GradientLoadingBar */, + 6D7DBBC4BB6995891B4D548F93F52286 /* Observable */, + C9E360AE7E621FF686F7C060178481D1 /* Pods-GradientLoadingBar_Example */, 0DDE9A7CA243FF8773CE97E05871E530 /* Pods-GradientLoadingBar_Tests */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 3ECE7B2EF1F74C2BFD04511BA67D1665 /* Sources */ = { + 652F4121229E4DEADA081DDBD3ED8583 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C0EA09275A496634F7A4C83E5C2C3F54 /* Durations.swift in Sources */, - 8214555518A297830AC7B66DBF95C035 /* GradientLoadingBar-dummy.m in Sources */, - A4F20FA2B2FF34FBE2F0F69DE231B185 /* GradientLoadingBarController.swift in Sources */, - F0058F3D9D372E5933F3C8264F4F73C5 /* GradientLoadingBarViewModel.swift in Sources */, - E8F0E3E8EE6E31D2590B13463AA84C94 /* GradientView.swift in Sources */, - 62AA7AF24464A813A1F7A67E817628A3 /* NotificationCenter+ObserveOnce.swift in Sources */, - 40C2C1DE84982928AE2AB9C90E080B92 /* UIColor+Initializers.swift in Sources */, + 42C9B868EFF007C954640D7937E4D31F /* Pods-GradientLoadingBar_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -442,29 +525,57 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A36F03C1DF22C7A165896095D57BB569 /* Sources */ = { + C47DF8F5CAE3C2D6102D0EDA7329B0A5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3CAA7A728F43E1EB82993F0868BBC0AF /* Pods-GradientLoadingBar_Example-dummy.m in Sources */, + 53B37B1A5CD4E5752EC90305BCA9A1E4 /* Durations.swift in Sources */, + ADBF676850928CD01AAD7CD65CDF91A8 /* GradientLoadingBar-dummy.m in Sources */, + A30BEAE852275C391EAEC9E314339EB1 /* GradientLoadingBarController.swift in Sources */, + 58DAC4AC2D0F3E54E5BBB5CE6FE6C93D /* GradientLoadingBarViewModel.swift in Sources */, + 0A24F9CFA5D9A8D086D604E3D2F83840 /* GradientView.swift in Sources */, + 25CCFC5D2F2CCB81FBB826BEC7FC984F /* NotificationCenter+ObserveOnce.swift in Sources */, + A2B4EF6ABA56186BAE518466847A0490 /* UIColor+Initializers.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FC8393BA9581130F79E1DAD4E4E99763 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6D5912C2DDE4662EB68F4569C645C09B /* Disposable.swift in Sources */, + EA0BC8E6D4AFBEA5C2AD8E065FEF64B8 /* Observable-dummy.m in Sources */, + F7EC2D3AE7D079C6008BB3D8A140C53F /* Observable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 69A90CA62BF02B2DE72D25590B362722 /* PBXTargetDependency */ = { + 8F53C1FF4329F6085BB69BF395E65785 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Observable; + target = 6D7DBBC4BB6995891B4D548F93F52286 /* Observable */; + targetProxy = 11F0ABF401134D6A07D63CBB85302D0B /* PBXContainerItemProxy */; + }; + B92FAD085B6E660E09702054FD94753F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Observable; + target = 6D7DBBC4BB6995891B4D548F93F52286 /* Observable */; + targetProxy = B51DA324BB2D0F54655F1FA7419616A0 /* PBXContainerItemProxy */; + }; + F0D652528A64CFF6B7D836DAAA8C7AEE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GradientLoadingBar; - target = F07543EF32FF53CF85E6DF5DD1513CBB /* GradientLoadingBar */; - targetProxy = 0A4C5EB7B411D126BCF5E8AEED59062F /* PBXContainerItemProxy */; + target = 2B63880316D7E6A564FC45314A003B39 /* GradientLoadingBar */; + targetProxy = 9BBDC016F505E44F0E066512798A7A25 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 071EC7C33B70C63F0FCB3357BB9F1AE6 /* Debug */ = { + 1154D18835E11DCF4C6D3ABBD94FC8B2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CCC1BC5CEB1151E0A04A33B26AE57411 /* GradientLoadingBar.xcconfig */; + baseConfigurationReference = 4C3D18A136BBE022D715E4F77216A1F0 /* Pods-GradientLoadingBar_Example.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -475,18 +586,21 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GradientLoadingBar/GradientLoadingBar-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GradientLoadingBar/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-GradientLoadingBar_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/GradientLoadingBar/GradientLoadingBar.modulemap"; - PRODUCT_NAME = GradientLoadingBar; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_GradientLoadingBar_Example; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -525,7 +639,7 @@ }; name = Debug; }; - 3998B83B9038F198FCD0B6EFB380EB5F /* Release */ = { + 5C79A6E75624EAA3969DA7A663BBA669 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = CCC1BC5CEB1151E0A04A33B26AE57411 /* GradientLoadingBar.xcconfig */; buildSettings = { @@ -548,14 +662,13 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 6F9224530522DD3C735EC96CF142642E /* Release */ = { isa = XCBuildConfiguration; @@ -601,6 +714,7 @@ ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = NO; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; @@ -615,9 +729,9 @@ }; name = Release; }; - 8BE5E9C470167E15D95C3598670D75D3 /* Debug */ = { + 7BC683054BF52690B352E993FC6649C1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4C3D18A136BBE022D715E4F77216A1F0 /* Pods-GradientLoadingBar_Example.debug.xcconfig */; + baseConfigurationReference = CCC1BC5CEB1151E0A04A33B26AE57411 /* GradientLoadingBar.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -628,26 +742,56 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientLoadingBar_Example/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GradientLoadingBar/GradientLoadingBar-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GradientLoadingBar/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 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-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_GradientLoadingBar_Example; + MODULEMAP_FILE = "Target Support Files/GradientLoadingBar/GradientLoadingBar.modulemap"; + PRODUCT_NAME = GradientLoadingBar; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + 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"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; + }; + A0A1595A7BBE7F8799549FBA6D016C5F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 62982164F2B5DEF7B82A870F71FBFE74 /* Observable.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Observable/Observable-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Observable/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Observable/Observable.modulemap"; + PRODUCT_NAME = Observable; + 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"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; }; B57951D085A1B98A97F8A1062A5E5C5B /* Debug */ = { isa = XCBuildConfiguration; @@ -696,6 +840,7 @@ ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = NO; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; @@ -744,7 +889,38 @@ }; name = Release; }; - F0DE8ECA180B721228853302AC51F514 /* Release */ = { + DECE6BFB43A907A4C92FE148A3F86861 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 62982164F2B5DEF7B82A870F71FBFE74 /* Observable.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Observable/Observable-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Observable/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Observable/Observable.modulemap"; + PRODUCT_NAME = Observable; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F6449C0ACB4664CBCE4ABF2F2A8059F1 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 501B9AB1C1F1E59F4628E81A7970CD37 /* Pods-GradientLoadingBar_Example.release.xcconfig */; buildSettings = { @@ -781,6 +957,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 00E38063FE1C1ED092C80D09810F4D14 /* Build configuration list for PBXNativeTarget "Observable" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DECE6BFB43A907A4C92FE148A3F86861 /* Debug */, + A0A1595A7BBE7F8799549FBA6D016C5F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -790,6 +975,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 37515D7500C740E1F892D462242EE790 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5C79A6E75624EAA3969DA7A663BBA669 /* Debug */, + 7BC683054BF52690B352E993FC6649C1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 769F26B1F11CC0AB6BE2AE773FF66E01 /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -799,20 +993,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BFBEA72970BDBFBDD6058C5F23899D8C /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */ = { + CE51B32DA3B3093FF3BA59642B6C54A8 /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 071EC7C33B70C63F0FCB3357BB9F1AE6 /* Debug */, - 3998B83B9038F198FCD0B6EFB380EB5F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E601522F10F0A9815FBCF79471D8A16C /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8BE5E9C470167E15D95C3598670D75D3 /* Debug */, - F0DE8ECA180B721228853302AC51F514 /* Release */, + 1154D18835E11DCF4C6D3ABBD94FC8B2 /* Debug */, + F6449C0ACB4664CBCE4ABF2F2A8059F1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme index 6cfec8a..36db50b 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -45,7 +45,7 @@ diff --git a/Example/Pods/SwiftFormat/CommandLineTool/swiftformat b/Example/Pods/SwiftFormat/CommandLineTool/swiftformat index 60890b7..734782c 100755 Binary files a/Example/Pods/SwiftFormat/CommandLineTool/swiftformat and b/Example/Pods/SwiftFormat/CommandLineTool/swiftformat differ diff --git a/Example/Pods/SwiftFormat/README.md b/Example/Pods/SwiftFormat/README.md index 8b91e1e..72e9662 100644 --- a/Example/Pods/SwiftFormat/README.md +++ b/Example/Pods/SwiftFormat/README.md @@ -1,7 +1,7 @@ [![Travis](https://img.shields.io/travis/nicklockwood/SwiftFormat.svg)](https://travis-ci.org/nicklockwood/SwiftFormat) [![Coveralls](https://coveralls.io/repos/github/nicklockwood/SwiftFormat/badge.svg)](https://coveralls.io/github/nicklockwood/SwiftFormat) -[![Swift 3.2](https://img.shields.io/badge/swift-3.2-orange.svg?style=flat)](https://developer.apple.com/swift) -[![Swift 4.0](https://img.shields.io/badge/swift-4.0-red.svg?style=flat)](https://developer.apple.com/swift) +[![Swift 3.4](https://img.shields.io/badge/swift-3.4-orange.svg?style=flat)](https://developer.apple.com/swift) +[![Swift 4.2](https://img.shields.io/badge/swift-4.2-red.svg?style=flat)](https://developer.apple.com/swift) [![License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://opensource.org/licenses/MIT) [![Twitter](https://img.shields.io/badge/twitter-@nicklockwood-blue.svg)](http://twitter.com/nicklockwood) @@ -19,6 +19,8 @@ Table of Contents - [Usage](#so-what-does-swiftformat-actually-do) - [Options](#options) - [Rules](#rules) + - [Config](#config) + - [Linting](#linting) - [FAQ](#faq) - [Cache](#cache) - [File Headers](#file-headers) @@ -31,7 +33,7 @@ What is this? SwiftFormat is a code library and command-line tool for reformatting swift code. -It applies a set of rules to the formatting and space around the code, leaving the meaning intact. +It applies a set of rules to the formatting and space around the code, leaving the behavior intact. Why would I want to do that? @@ -101,15 +103,17 @@ To use it safely, do the following: 1. Choose a file or directory that you want to apply the changes to. -2. Make sure that you have committed all your changes to that code safely in git (or whatever source control system you use. If you don't use source control, rethink your life choices). +2. Make sure that you have committed all your changes to that code safely in git (or whatever source control system you use). 3. (Optional) In Terminal, type `swiftformat --inferoptions "/path/to/your/code/"`. This will suggest a set of formatting options to use that match your existing project style (but you are free to ignore these and use the defaults, or your own settings if you prefer). - The path can point to either a single Swift file, or a directory of files. It can be either be absolute, or relative to the current directory. The `""` quotes around the path are optional, but if the path contains spaces then you either need to use quotes, or escape each space with `\`. + The path can point to either a single Swift file or a directory of files. It can be either be absolute, or relative to the current directory. The `""` quotes around the path are optional, but if the path contains spaces then you either need to use quotes, or escape each space with `\`. You may include multiple paths separated by spaces. -4. In Terminal, type `swiftformat "/path/to/your/code/"`. The same rules apply as above with respect to path formatting, but you can enter multiple paths if you wish, separated by spaces. +4. In Terminal, type `swiftformat "/path/to/your/code/"`. The same rules apply as above with respect to paths, and multiple space-delimited paths are allowed. If you used `--inferoptions` to generate a suggested set of options in step 3, you should copy and paste them into the command, either before or after the path(s) to your source files. + + If you have created a [configuration file](#config), you can specify its path using `--config "/path/to/your/config-file/". 5. Press enter to begin formatting. Once the formatting is complete, use your source control system to check the changes, and verify that no undesirable changes have been introduced. If they have, revert the changes, tweak the options and try again. @@ -129,15 +133,17 @@ Xcode Source Editor Extension **Installation:** -You'll find the latest version of the `SwiftFormat for Xcode` application inside the `EditorExtension` folder included in the SwiftFormat repository. Drag it into your `Applications` folder, then double-click to launch it, and follow the on-screen instructions. +You'll find the latest version of the SwiftFormat for Xcode application inside the EditorExtension folder included in the SwiftFormat repository. Drag it into your `Applications` folder, then double-click to launch it, and follow the on-screen instructions. -**NOTE:** The Extension requires Xcode 8 and macOS 10.12 Sierra. It *may* work on macOS 10.11 El Capitan if you open Terminal, execute the following command, then restart your Mac (but it didn't work for me). +**NOTE:** The Extension requires Xcode 8 and macOS 10.12 Sierra or higher. - > sudo /usr/libexec/xpccachectl - **Usage:** -In Xcode, you'll find a SwiftFormat option under the Editor menu. You can use this to format either the current selection or the whole file. +In Xcode, you'll find a SwiftFormat option under the Editor menu. You can use this to format either the current selection or the whole file. + +You can configure the formatting [rules](#rules) and [options](#options) used by the Xcode Source Editor Extension using the host application. There is currently no way to override these per-project, however you can import and export different configurations using the File menu. + +The format of the configuration file is described in the [Config section](#config) below. Xcode build phase @@ -158,9 +164,21 @@ To set up SwiftFormat as an Xcode build phase, do the following: Both paths should be relative to the directory containing your Xcode project. If you are installing SwiftFormat as a Cocoapod, the swiftformat path will be "${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat" - + **NOTE:** Adding this script will slightly increase your build time, and will make changes to your source files as you work on them, which can have annoying side-effects such as clearing the undo buffer. You may wish to add the script to your test target rather than your main target, so that it is invoked only when you run the unit tests, and not every time you build the app. +Alternatively, you can skip installation of the SwiftFormat pod and configure Xcode to use the locally installed swiftformat command-line tool instead by putting the following in your Run Script build phase: + +```bash + if which swiftformat >/dev/null; then + swiftformat . + else + echo "warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat" + fi +``` + +This is not recommended for shared projects however, as different team members using different versions of SwiftFormat may result in noise in the commits as code gets reformatted inconsistently. + Git pre-commit hook --------------------- @@ -171,17 +189,19 @@ Git pre-commit hook 3. Add the following line in the pre-commit file (unlike the Xcode build phase approach, this uses your locally installed version of SwiftFormat, not a separate copy in your project repository) - #!/bin/bash - git diff --diff-filter=d --staged --name-only | grep -e '\(.*\).swift$' | while read line; do - swiftformat "${line}"; - git add "$line"; - done + ```bash + #!/bin/bash + git diff --diff-filter=d --staged --name-only | grep -e '\(.*\).swift$' | while read line; do + swiftformat "${line}"; + git add "$line"; + done + ``` 4. enable the hook by typing `chmod +x .git/hooks/pre-commit` in the terminal The pre-commit hook will now run whenever you run `git commit`. Running `git commit --no-verify` will skip the pre-commit hook. -**NOTE:** If you are using Git via a GUI client such as [Tower](https://www.git-tower.com), [additional steps](https://www.git-tower.com/help/mac/faq-and-tips/faq#faq-11) may be needed. +**NOTE:** If you are using Git via a GUI client such as [Tower](https://www.git-tower.com), [additional steps](https://www.git-tower.com/help/mac/faq-and-tips/faq/hook-scripts) may be needed. **NOTE (2):** Unlike the Xcode build phase approach, git pre-commit hook won't be checked in to source control, and there's no way to guarantee that all users of the project are using the same version of SwiftFormat. For a collaborative project, you might want to consider a *post*-commit hook instead, which would run on your continuous integration server. @@ -191,16 +211,16 @@ On CI using Danger To setup SwiftFormat to be used by your continuous integration system using [Danger](http://danger.systems/ruby/), do the following: 1. Follow the [`instructions`](http://danger.systems/guides/getting_started.html) to setup Danger. -1. Add the [`danger-swiftformat`](https://github.com/garriguv/danger-ruby-swiftformat) plugin to your `Gemfile`. -1. Add the following to your `Dangerfile`: +2. Add the [`danger-swiftformat`](https://github.com/garriguv/danger-ruby-swiftformat) plugin to your `Gemfile`. +3. Add the following to your `Dangerfile`: -```ruby -swiftformat.binary_path = "/path/to/swiftformat" # optional -swiftformat.additional_args = "--indent tab --self insert" # optional -swiftformat.check_format(fail_on_error: true) -``` - -**NOTE:** It is recommended to add the `swiftformat` binary to your project directory. + ```ruby + swiftformat.binary_path = "/path/to/swiftformat" # optional + swiftformat.additional_args = "--indent tab --self insert" # optional + swiftformat.check_format(fail_on_error: true) + ``` + + **NOTE:** It is recommended to add the `swiftformat` binary to your project directory to ensure the same version is used each time (see the [Xcode build phase](#xcode-build-phase) instructions above). So what does SwiftFormat actually do? -------------------------------------- @@ -215,9 +235,9 @@ Options The options available in SwiftFormat can be displayed using the `--help` command-line argument. The default value for each option is indicated in the help text. -Rules are configured by adding `--[rulename] [value]` to your command-line arguments. +Rules are configured by adding `--[rulename] [value]` to your command-line arguments, or by creating a [config file](#config) as explained below. -A given option may affect multiple rules. See the Rules list below for details about which options affect which rule. +A given option may affect multiple rules. See the [Rules](#rules) section below for details about which options affect which rule. Rules @@ -241,7 +261,29 @@ To enable the rule(s) again, use: // swiftformat:enable [ [rule<3> ...]] ``` -**Note:** The `swiftformat:enable` directive only serves to counter a previous `swiftformat:disable` directive in the same file. It is not possible to use `swiftformat:enable` to enable a rule that was not already enabled when formatting started. +To disable all rules use: + +```swift +// swiftformat:disable all +``` + +And to enable them all again, use: + +```swift +// swiftformat:enable all +``` + +To temporarily prevent one or more rules being applied to just the next line, use: + +```swift +// swiftformat:disable:next [ [rule<3> ...]] +let foo = bar // rule(s) will be disabled for this line +let bar = baz // rule(s) will be re-enabled for this line +``` + +There is no need to manually re-enable a rule after using the `next` directive. + +**Note:** The `swiftformat:enable` directives only serves to counter a previous `swiftformat:disable` directive in the same file. It is not possible to use `swiftformat:enable` to enable a rule that was not already enabled when formatting started. Here are all the rules that SwiftFormat currently applies, and the effects that they have: @@ -453,6 +495,17 @@ Here are all the rules that SwiftFormat currently applies, and the effects that // bar } ``` + +***emptyBraces*** - removes all white space between otherwise empty braces: + +```diff +- func foo() { +- +- } + + ++ func foo() {} +``` ***fileHeader*** - allows the replacement or removal of Xcode's automated comment header blocks. By default, no action is taken, but passing one of the following arguments to the command-line will activate its function. @@ -524,7 +577,7 @@ Here are all the rules that SwiftFormat currently applies, and the effects that ***linebreaks*** - normalizes all linebreaks to use the same character, as specified in options (either CR, LF or CRLF, depending on the `--linebreaks` option). -***numberFormatting*** - handles case and grouping of number literals, depending on the `--hexliteralcase`, `--exponentcase`, `--hexgrouping`, `--binarygrouping`, `--decimalgrouping`, and `--octalgrouping` options: +***numberFormatting*** - handles case and grouping of number literals, depending on the `--hexliteralcase`, `--exponentcase`, `--hexgrouping`, `--binarygrouping`, `--decimalgrouping`, `--octalgrouping`, `--fractiongrouping` and `--exponentgrouping` options: ```diff - let color = 0xFF77A5 @@ -965,7 +1018,7 @@ goto(fail) + func quux() -> Void ``` -***wrapArguments*** - wraps function arguments and array elements depending on the `--wraparguments`, and `--wrapelements` modes specified. E.g. for a value of `beforefirst`: +***wrapArguments*** - wraps function arguments and collection literals depending on the `--wraparguments`, and `--wrapcollections` modes specified. E.g. for a value of `beforefirst`: ```diff - func foo(bar: Int, @@ -994,6 +1047,67 @@ goto(fail) ``` +Config +------ + +Although it is possible to configure SwiftFormat directly by using the command-line [options](#options) and [rules](#rules) detailed above, it is sometimes more convenient to create a configuration file, which can be added to your project and shared with other developers. + +A SwiftFormat configuration file consists of one or more command-line options, split onto separate lines, e.g: + +``` +--allman true +--indent tabs +--disable elseOnSameLine,semicolons +``` + +While formatting, SwiftFormat will automatically check inside each subdirectory for the presence of a ".swiftformat" file and will apply any options that it finds there to the files in that directory. + +This allows you to override certain rules or formatting options just for a particular directory of files. You can also specify excluded files relative to that directory using `--exclude`, which may be more convenient that specifying them at the top-level. + +Files named ".swiftformat" will be processed automatically, however you can select an additional configuration file to use for formatting using the `--config "path/to/config/file"` command-line argument. A configuration file selected using `--config` does not need to be named ".swiftformat", and can be located outside of the project directory. + +The config file format is designed to be human editable. You may include blank lines for readability, and can also add comments using a hash prefix (#), e.g. + +``` +# format options +--allman true +--indent tabs # tabs FTW! + +# file options +-- exclude Pods + +# rules +--disable elseOnSameLine,semicolons +``` + +If you would prefer not to edit the configuration file by hand, you can use the [SwiftFormat for Xcode](#xcode-source-editor-extension) app to edit the configuration and export a configuration file. Alternatively, you can use the swiftformat command-line-tool's `--inferoptions` command to generate a config file from your existing project, like this: + +```bash +> cd /path/to/project +> swiftformat --inferoptions . --output .swiftformat +``` + + +Linting +------- + +SwiftFormat is primarily designed as a formatter rather than a linter, i.e. it is designed to fix your code rather than tell you what's wrong with it. However, sometimes it can be useful to verify that code has been formatted in a context where it is not desirable to actually change it. + +A typical example would be as part of a CI (Continuous Integration) process, where you may wish to have an automated script that checks committed code for style violations. While you could use a separate tool such as [SwiftLint](https://github.com/realm/SwiftLint) for this, it makes sense to be able to validate the formatting against the exact same rules as you are using to apply it. + +In order to run SwiftFormat as a linter, you can use the `--lint` command-line option: + +```bash +> swiftformat --lint path/to/project +``` + +This works exactly the same way as when running in format mode, and all the same configuration options apply, however no files will be modified. SwiftFormat will simply format each file in memory and then compare the result against the input. If any formatting changes would have been applied, it will report an error. + +The `--lint` option is very similar to `--dryrun`, except that `--lint` will return a nonzero error code if any changes are detected, which is useful if you want it to fail a build step on your CI server. + +By default, `--lint` will only report the number of files that were changed, but you can use the additional `--verbose` flag to display a detailed report about which specific rules were applied to which specific files. + + FAQ ----- @@ -1002,7 +1116,7 @@ There haven't been many questions yet, but here's what I'd like to think people *Q. What versions of Swift are supported?* -> A. The framework compiles on Swift 3.2 or 4.x and can format programs written in Swift 3.x or 4.x. Swift 2.x is no longer actively supported. If you all still using Swift 2.x, and find that SwiftFormat breaks your code, the best solution is probably to revert to an earlier SwiftFormat release, or enable only a small subset of rules. +> A. The framework compiles on Swift 3.x or 4.x and can format programs written in Swift 3.x or 4.x. Swift 2.x is no longer actively supported. If you are still using Swift 2.x, and find that SwiftFormat breaks your code, the best solution is probably to revert to an earlier SwiftFormat release, or enable only a small subset of rules. *Q. I don't like how SwiftFormat formatted my code* @@ -1012,16 +1126,23 @@ There haven't been many questions yet, but here's what I'd like to think people *Q. How can I modify the formatting rules?* -> A. Many configuration options are exposed in the command-line interface. You can either set these manually, or use the `--inferoptions` argument to automatically generate the configuration from your existing project. +> A. Many configuration options are exposed in the command-line interface or .swiftformat configuration file. You can either set these manually, or use the `--inferoptions` argument to automatically generate the configuration from your existing project. > If there is a rule that you don't like, and which cannot be configured to your liking via the command-line options, you can disable the rule by using the `--disable` argument, followed by the name of the rule. You can display a list of all rules using the `--rules` argument, and their behaviors are documented above this section in the README. +> If you are using the Xcode Source Editor Extension, rules and options can be configured using the [SwiftFormat for Xcode](#xcode-source-editor-extension) host application. Unfortunately, due to limitation of the Extensions API, there is no way to configure these on a per-project basis. + > If the options you want aren't exposed, and disabling the rule doesn't solve the problem, the rules are implemented as functions in the file `Rules.swift`, so you can modify them and build a new version of the command-line tool. If you think your changes might be generally useful, make a pull request. +*Q. Why can't I set the indent width or choose between tabs/spaces in the [SwiftFormat for Xcode](#xcode-source-editor-extension) options?* + +> Indent width and tabs/spaces can be configured in Xcode on a per project-basis. You'll find the option under "Text Settings" in the right-hand sidebar. + + *Q. After applying SwiftFormat, my code won't compile. Is that a bug?* -> A. SwiftFormat should never break your code. Check the known issues below, and if it's not already listed there, or the suggested workaround doesn't solve your problem, please raise an issue on github: https://github.com/nicklockwood/SwiftFormat/issues +> A. SwiftFormat should never break your code. Check the known issues below, and if it's not already listed there, or the suggested workaround doesn't solve your problem, please [raise an issue on Github](https://github.com/nicklockwood/SwiftFormat/issues). *Q. Why did you write yet another Swift formatting tool?* @@ -1058,6 +1179,11 @@ There haven't been many questions yet, but here's what I'd like to think people > A. See https://xkcd.com/1171/ for details. +*Q. Can I use SwiftFormat to lint my code without changing it?* + +> A. Yes, see the [linting](#linting) section above for details. + + *Q. Can I use the `SwiftFormat.framework` inside another app?* > A. Yes, the SwiftFormat framework can be included in an app or test target, and used for many kinds of parsing and processing of Swift source code besides formatting. The SwiftFormat framework is available as a [CocoaPod](https://cocoapods.org/pods/SwiftFormat) for easy integration. @@ -1107,7 +1233,7 @@ Known issues * When using the `--self remove` option, the `redundantSelf` rule will remove references to `self` in autoclosure arguments, which may change the meaning of the code, or cause it not to compile. Currently, the only workaround is to use `--disable redundantSelf` to disable the rule for any affected files. If you are using the `--self insert` option then this is not an issue. -* The `--self insert` option can only recognize locally declared member variables, not ones inherited from superclasses or extensions, so it cannot insert missing `self` references for those. Note that the reverse is not true: `--self remove` should remove *all* redundant `self` references. +* The `--self insert` option can only recognize locally declared member variables, not ones inherited from superclasses or extensions in other files, so it cannot insert missing `self` references for those. Note that the reverse is not true: `--self remove` should remove *all* redundant `self` references. * The `trailingClosures` rule will sometimes generate ambiguous code that breaks your program. For this reason, the rule is disabled by default. It is recommended that you apply this rule manually and review the changes, rather than including it in an automated formatting process. @@ -1115,7 +1241,10 @@ Known issues let foo: Dictionary=["Hello": "World"] - To work around this, either manually add spaces around the `=` character to eliminate the ambiguity, or add `--disable spaceAroundOperators` to the command-line options. + To work around this, either manually add spaces around the `=` character to eliminate the ambiguity, or add a comment directive above that line in the file: + + // swiftformat:disable:next spaceAroundOperators + let foo: Dictionary=["Hello": "World"] * If a file begins with a comment, the `stripHeaders` rule will remove it if is followed by a blank line. To avoid this, make sure that the first comment is directly followed by a line of code. @@ -1161,9 +1290,9 @@ Known issues * */ -* The formatted file cache is based on file length, so it's possible (though unlikely) that an edited file will have the exact same character count as the previously formatted version, causing SwiftFormat to incorrectly identify it as not having changed, and fail to format it. +* The formatted file cache is based on a hash of the file contents, so it's possible (though unlikely) that an edited file will have the exact same hash as the previously formatted version, causing SwiftFormat to incorrectly identify it as not having changed, and fail to update it. - To fix this, you can use the command-line option `--cache ignore` to force SwiftFormat to ignore the cache for this run, or just type an extra space in the file (which SwiftFormat will then remove again when it applies the formatting). + To fix this, you can use the command-line option `--cache ignore` to force SwiftFormat to ignore the cache for this run, or just type an extra space in the file (which SwiftFormat will then remove again when it applies the correct formatting). Credits diff --git a/Example/Pods/SwiftLint/swiftlint b/Example/Pods/SwiftLint/swiftlint index 2b40969..096b9f8 100755 Binary files a/Example/Pods/SwiftLint/swiftlint and b/Example/Pods/SwiftLint/swiftlint differ diff --git a/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig b/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig index 9ed869b..934bcd4 100644 --- a/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig +++ b/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig @@ -1,7 +1,8 @@ CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Observable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftFormat" "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +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/Example/Pods/Target Support Files/Observable/Info.plist b/Example/Pods/Target Support Files/Observable/Info.plist new file mode 100644 index 0000000..0d71515 --- /dev/null +++ b/Example/Pods/Target Support Files/Observable/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.3.3 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Observable/Observable-dummy.m b/Example/Pods/Target Support Files/Observable/Observable-dummy.m new file mode 100644 index 0000000..5bd8d5a --- /dev/null +++ b/Example/Pods/Target Support Files/Observable/Observable-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Observable : NSObject +@end +@implementation PodsDummy_Observable +@end diff --git a/Example/Pods/Target Support Files/Observable/Observable-prefix.pch b/Example/Pods/Target Support Files/Observable/Observable-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Example/Pods/Target Support Files/Observable/Observable-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Example/Pods/Target Support Files/Observable/Observable-umbrella.h b/Example/Pods/Target Support Files/Observable/Observable-umbrella.h new file mode 100644 index 0000000..ef9454c --- /dev/null +++ b/Example/Pods/Target Support Files/Observable/Observable-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double ObservableVersionNumber; +FOUNDATION_EXPORT const unsigned char ObservableVersionString[]; + diff --git a/Example/Pods/Target Support Files/Observable/Observable.modulemap b/Example/Pods/Target Support Files/Observable/Observable.modulemap new file mode 100644 index 0000000..b7db007 --- /dev/null +++ b/Example/Pods/Target Support Files/Observable/Observable.modulemap @@ -0,0 +1,6 @@ +framework module Observable { + umbrella header "Observable-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Observable/Observable.xcconfig b/Example/Pods/Target Support Files/Observable/Observable.xcconfig new file mode 100644 index 0000000..243ff81 --- /dev/null +++ b/Example/Pods/Target Support Files/Observable/Observable.xcconfig @@ -0,0 +1,10 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Observable +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftFormat" "${PODS_ROOT}/Headers/Public/SwiftLint" +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} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Observable +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown index cfbd4b5..c855ef2 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown @@ -24,6 +24,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## Observable + + +MIT License + +Copyright (c) 2017 Robert-Hein Hooijmans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ## SwiftFormat MIT License diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist index 4892f3b..610c2bd 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist @@ -41,6 +41,38 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + +MIT License + +Copyright (c) 2017 Robert-Hein Hooijmans <rh.hooijmans@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + Observable + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh index caecbe8..39310a7 100755 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh @@ -103,9 +103,11 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/GradientLoadingBar/GradientLoadingBar.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Observable/Observable.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/GradientLoadingBar/GradientLoadingBar.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Observable/Observable.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig index 52e0b82..e45c6f9 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" "$PODS_CONFIGURATION_BUILD_DIR/Observable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftFormat" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Observable/Observable.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "Observable" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig index 52e0b82..e45c6f9 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" "$PODS_CONFIGURATION_BUILD_DIR/Observable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftFormat" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Observable/Observable.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "Observable" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig index cd26a19..6501d54 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" "$PODS_CONFIGURATION_BUILD_DIR/Observable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftFormat" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Observable/Observable.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig index cd26a19..6501d54 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar" "$PODS_CONFIGURATION_BUILD_DIR/Observable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftFormat" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/GradientLoadingBar/GradientLoadingBar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Observable/Observable.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftFormat" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Example/Tests/Helpers/Extensions/UIColor/UIColor+InitializersTests.swift b/Example/Tests/Helpers/Extensions/UIColor/UIColor+InitializersTests.swift index 9c18442..9653995 100644 --- a/Example/Tests/Helpers/Extensions/UIColor/UIColor+InitializersTests.swift +++ b/Example/Tests/Helpers/Extensions/UIColor/UIColor+InitializersTests.swift @@ -120,12 +120,10 @@ fileprivate extension UIColor { return nil } - return AbsoluteRGBA( - red: Int(red * 255.0), - green: Int(green * 255.0), - blue: Int(blue * 255.0), - alpha: Int(alpha * 255.0) - ) + return AbsoluteRGBA(red: Int(red * 255.0), + green: Int(green * 255.0), + blue: Int(blue * 255.0), + alpha: Int(alpha * 255.0)) } } diff --git a/GradientLoadingBar.podspec b/GradientLoadingBar.podspec index 6c4147e..eb1ea64 100644 --- a/GradientLoadingBar.podspec +++ b/GradientLoadingBar.podspec @@ -27,7 +27,7 @@ Inspired by https://codepen.io/marcobiedermann/pen/LExXWW s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'Felix Mau' => 'contact@felix.hamburg' } s.source = { :git => 'https://github.com/fxm90/GradientLoadingBar.git', :tag => s.version.to_s } - # s.social_media_url = 'https://twitter.com/' + s.social_media_url = 'https://twitter.com/iamfelixm' s.ios.deployment_target = '9.0' @@ -40,4 +40,6 @@ Inspired by https://codepen.io/marcobiedermann/pen/LExXWW # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3' + + s.dependency 'Observable' end diff --git a/GradientLoadingBar/Classes/Helpers/Extensions/UIColor/UIColor+Initializers.swift b/GradientLoadingBar/Classes/Helpers/Extensions/UIColor/UIColor+Initializers.swift index e9cd395..76c1e1f 100644 --- a/GradientLoadingBar/Classes/Helpers/Extensions/UIColor/UIColor+Initializers.swift +++ b/GradientLoadingBar/Classes/Helpers/Extensions/UIColor/UIColor+Initializers.swift @@ -26,12 +26,10 @@ public extension UIColor { let normalizedBlue = CGFloat(blue) / 255.0 let normalizedAlpha = CGFloat(alpha) / 255.0 - self.init( - red: normalizedRed, - green: normalizedGreen, - blue: normalizedBlue, - alpha: normalizedAlpha - ) + self.init(red: normalizedRed, + green: normalizedGreen, + blue: normalizedBlue, + alpha: normalizedAlpha) } /// Create color from an hexadecimal integer value (e.g. 0xFFFFFF) @@ -44,11 +42,9 @@ public extension UIColor { /// /// Returns: UIColor instance. convenience init(hex: Int) { - self.init( - absoluteRed: (hex >> 16) & 0xFF, - green: (hex >> 8) & 0xFF, - blue: hex & 0xFF - ) + self.init(absoluteRed: (hex >> 16) & 0xFF, + green: (hex >> 8) & 0xFF, + blue: hex & 0xFF) } /// Create color from an hexadecimal string value (e.g. "#FFFFFF" / "FFFFFF") @@ -73,9 +69,7 @@ public extension UIColor { var hex: UInt32 = 0 Scanner(string: normalizedHexColor).scanHexInt32(&hex) - self.init( - hex: Int(hex) - ) + self.init(hex: Int(hex)) } @available(*, deprecated, message: "Please use `init(hex: String)` instead")