├── .gitattributes
├── .gitignore
├── LICENSE
├── LLProgramFrameworkSwift.gif
├── LLProgramFrameworkSwift.xcodeproj
├── project.pbxproj
└── project.xcworkspace
│ └── contents.xcworkspacedata
├── LLProgramFrameworkSwift.xcworkspace
└── contents.xcworkspacedata
├── LLProgramFrameworkSwift
├── AppDelegate.swift
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── General
│ ├── BaseClass
│ │ └── LLBaseViewController.swift
│ ├── Category
│ │ ├── Ext+String.swift
│ │ ├── Ext+UIBarButtonItem.swift
│ │ ├── Ext+UIButton.swift
│ │ ├── Ext+UIImageView.swift
│ │ ├── Ext+UILable.swift
│ │ └── Ext+UIView.swift
│ └── Helper
│ │ ├── LLHelper.swift
│ │ ├── LLProgressHUD.swift
│ │ └── LLRegexHelper.swift
├── Info.plist
├── Resources
│ └── menu.json
├── Sections
│ ├── Home
│ │ ├── C
│ │ │ └── LLHomeViewController.swift
│ │ ├── Model
│ │ │ └── LLHomeModel.swift
│ │ ├── V
│ │ │ ├── LLHomeCell.swift
│ │ │ └── LLHomeCell.xib
│ │ └── ViewModel
│ │ │ └── LLHomeViewModel.swift
│ ├── Main
│ │ ├── LLNavigationController.swift
│ │ └── LLTabbarViewController.swift
│ └── Me
│ │ └── LLMeViewController.swift
├── Service
│ ├── APIManager.swift
│ ├── LLRequestPlugin.swift
│ └── LLToModelExtension.swift
├── Vendors
│ ├── FDFullscreenPopGesture
│ │ ├── UINavigationController+FDFullscreenPopGesture.h
│ │ └── UINavigationController+FDFullscreenPopGesture.m
│ ├── LLFMDB
│ │ ├── LLKeyValueStore.h
│ │ ├── LLKeyValueStore.m
│ │ └── YTKKeyValueStore
│ │ │ ├── YTKKeyValueStore.h
│ │ │ └── YTKKeyValueStore.m
│ └── LLProgramFramework+Bridging+Header.h
└── pch.swift
├── LLProgramFrameworkSwiftTests
├── Info.plist
└── LLProgramFrameworkSwiftTests.swift
├── LLProgramFrameworkSwiftUITests
├── Info.plist
└── LLProgramFrameworkSwiftUITests.swift
├── Podfile
├── Podfile.lock
├── Pods
├── Alamofire
│ ├── LICENSE
│ ├── README.md
│ └── Source
│ │ ├── AFError.swift
│ │ ├── Alamofire.swift
│ │ ├── DispatchQueue+Alamofire.swift
│ │ ├── MultipartFormData.swift
│ │ ├── NetworkReachabilityManager.swift
│ │ ├── Notifications.swift
│ │ ├── ParameterEncoding.swift
│ │ ├── Request.swift
│ │ ├── Response.swift
│ │ ├── ResponseSerialization.swift
│ │ ├── Result.swift
│ │ ├── ServerTrustPolicy.swift
│ │ ├── SessionDelegate.swift
│ │ ├── SessionManager.swift
│ │ ├── TaskDelegate.swift
│ │ ├── Timeline.swift
│ │ └── Validation.swift
├── FMDB
│ ├── LICENSE.txt
│ ├── README.markdown
│ └── src
│ │ └── fmdb
│ │ ├── FMDB.h
│ │ ├── FMDatabase.h
│ │ ├── FMDatabase.m
│ │ ├── FMDatabaseAdditions.h
│ │ ├── FMDatabaseAdditions.m
│ │ ├── FMDatabasePool.h
│ │ ├── FMDatabasePool.m
│ │ ├── FMDatabaseQueue.h
│ │ ├── FMDatabaseQueue.m
│ │ ├── FMResultSet.h
│ │ └── FMResultSet.m
├── Kingfisher
│ ├── LICENSE
│ ├── README.md
│ └── Sources
│ │ ├── AnimatedImageView.swift
│ │ ├── Box.swift
│ │ ├── CacheSerializer.swift
│ │ ├── Filter.swift
│ │ ├── FormatIndicatedCacheSerializer.swift
│ │ ├── Image.swift
│ │ ├── ImageCache.swift
│ │ ├── ImageDownloader.swift
│ │ ├── ImagePrefetcher.swift
│ │ ├── ImageProcessor.swift
│ │ ├── ImageTransition.swift
│ │ ├── ImageView+Kingfisher.swift
│ │ ├── Indicator.swift
│ │ ├── Kingfisher.h
│ │ ├── Kingfisher.swift
│ │ ├── KingfisherManager.swift
│ │ ├── KingfisherOptionsInfo.swift
│ │ ├── RequestModifier.swift
│ │ ├── Resource.swift
│ │ ├── String+MD5.swift
│ │ ├── ThreadHelper.swift
│ │ └── UIButton+Kingfisher.swift
├── Local Podspecs
│ └── Moya.podspec.json
├── MJRefresh
│ ├── LICENSE
│ ├── MJRefresh
│ │ ├── Base
│ │ │ ├── MJRefreshAutoFooter.h
│ │ │ ├── MJRefreshAutoFooter.m
│ │ │ ├── MJRefreshBackFooter.h
│ │ │ ├── MJRefreshBackFooter.m
│ │ │ ├── MJRefreshComponent.h
│ │ │ ├── MJRefreshComponent.m
│ │ │ ├── MJRefreshFooter.h
│ │ │ ├── MJRefreshFooter.m
│ │ │ ├── MJRefreshHeader.h
│ │ │ └── MJRefreshHeader.m
│ │ ├── Custom
│ │ │ ├── Footer
│ │ │ │ ├── Auto
│ │ │ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ │ │ ├── MJRefreshAutoGifFooter.m
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.m
│ │ │ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ │ │ └── MJRefreshAutoStateFooter.m
│ │ │ │ └── Back
│ │ │ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ │ │ ├── MJRefreshBackGifFooter.m
│ │ │ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ │ │ ├── MJRefreshBackNormalFooter.m
│ │ │ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ │ │ └── MJRefreshBackStateFooter.m
│ │ │ └── Header
│ │ │ │ ├── MJRefreshGifHeader.h
│ │ │ │ ├── MJRefreshGifHeader.m
│ │ │ │ ├── MJRefreshNormalHeader.h
│ │ │ │ ├── MJRefreshNormalHeader.m
│ │ │ │ ├── MJRefreshStateHeader.h
│ │ │ │ └── MJRefreshStateHeader.m
│ │ ├── MJRefresh.bundle
│ │ │ ├── arrow@2x.png
│ │ │ ├── en.lproj
│ │ │ │ └── Localizable.strings
│ │ │ ├── zh-Hans.lproj
│ │ │ │ └── Localizable.strings
│ │ │ └── zh-Hant.lproj
│ │ │ │ └── Localizable.strings
│ │ ├── MJRefresh.h
│ │ ├── MJRefreshConst.h
│ │ ├── MJRefreshConst.m
│ │ ├── NSBundle+MJRefresh.h
│ │ ├── NSBundle+MJRefresh.m
│ │ ├── UIScrollView+MJExtension.h
│ │ ├── UIScrollView+MJExtension.m
│ │ ├── UIScrollView+MJRefresh.h
│ │ ├── UIScrollView+MJRefresh.m
│ │ ├── UIView+MJExtension.h
│ │ └── UIView+MJExtension.m
│ └── README.md
├── Manifest.lock
├── Moya
│ ├── License.md
│ ├── Readme.md
│ └── Sources
│ │ ├── Moya
│ │ ├── Cancellable.swift
│ │ ├── Endpoint.swift
│ │ ├── Image.swift
│ │ ├── Moya+Alamofire.swift
│ │ ├── MoyaAvailability.swift
│ │ ├── MoyaError.swift
│ │ ├── MoyaProvider+Defaults.swift
│ │ ├── MoyaProvider+Internal.swift
│ │ ├── MoyaProvider.swift
│ │ ├── MultiTarget.swift
│ │ ├── MultipartFormData.swift
│ │ ├── Plugin.swift
│ │ ├── Plugins
│ │ │ ├── AccessTokenPlugin.swift
│ │ │ ├── CredentialsPlugin.swift
│ │ │ ├── NetworkActivityPlugin.swift
│ │ │ └── NetworkLoggerPlugin.swift
│ │ ├── Response.swift
│ │ └── TargetType.swift
│ │ └── RxMoya
│ │ ├── Observable+Response.swift
│ │ └── RxMoyaProvider.swift
├── ObjectMapper
│ ├── LICENSE
│ ├── README-CN.md
│ └── Sources
│ │ ├── CustomDateFormatTransform.swift
│ │ ├── DataTransform.swift
│ │ ├── DateFormatterTransform.swift
│ │ ├── DateTransform.swift
│ │ ├── DictionaryTransform.swift
│ │ ├── EnumOperators.swift
│ │ ├── EnumTransform.swift
│ │ ├── FromJSON.swift
│ │ ├── HexColorTransform.swift
│ │ ├── ISO8601DateTransform.swift
│ │ ├── ImmutableMappable.swift
│ │ ├── IntegerOperators.swift
│ │ ├── Map.swift
│ │ ├── MapError.swift
│ │ ├── Mappable.swift
│ │ ├── Mapper.swift
│ │ ├── NSDecimalNumberTransform.swift
│ │ ├── Operators.swift
│ │ ├── ToJSON.swift
│ │ ├── TransformOf.swift
│ │ ├── TransformOperators.swift
│ │ ├── TransformType.swift
│ │ └── URLTransform.swift
├── Pods.xcodeproj
│ └── project.pbxproj
├── Result
│ ├── LICENSE
│ ├── README.md
│ └── Result
│ │ ├── Result.swift
│ │ └── ResultProtocol.swift
├── RxCocoa
│ ├── LICENSE.md
│ ├── Platform
│ │ ├── DataStructures
│ │ │ ├── Bag.swift
│ │ │ ├── InfiniteSequence.swift
│ │ │ ├── PriorityQueue.swift
│ │ │ └── Queue.swift
│ │ ├── DispatchQueue+Extensions.swift
│ │ ├── Platform.Darwin.swift
│ │ ├── Platform.Linux.swift
│ │ └── RecursiveLock.swift
│ ├── README.md
│ └── RxCocoa
│ │ ├── Common
│ │ ├── ControlTarget.swift
│ │ ├── DelegateProxy.swift
│ │ ├── DelegateProxyType.swift
│ │ ├── NSLayoutConstraint+Rx.swift
│ │ ├── Observable+Bind.swift
│ │ ├── RxCocoaObjCRuntimeError+Extensions.swift
│ │ ├── RxTarget.swift
│ │ ├── SectionedViewDataSourceType.swift
│ │ └── TextInput.swift
│ │ ├── Deprecated.swift
│ │ ├── Foundation
│ │ ├── KVORepresentable+CoreGraphics.swift
│ │ ├── KVORepresentable+Swift.swift
│ │ ├── KVORepresentable.swift
│ │ ├── Logging.swift
│ │ ├── NSObject+Rx+KVORepresentable.swift
│ │ ├── NSObject+Rx+RawRepresentable.swift
│ │ ├── NSObject+Rx.swift
│ │ ├── NotificationCenter+Rx.swift
│ │ └── URLSession+Rx.swift
│ │ ├── Runtime
│ │ ├── _RX.m
│ │ ├── _RXDelegateProxy.m
│ │ ├── _RXKVOObserver.m
│ │ ├── _RXObjCRuntime.m
│ │ └── include
│ │ │ ├── RxCocoaRuntime.h
│ │ │ ├── _RX.h
│ │ │ ├── _RXDelegateProxy.h
│ │ │ ├── _RXKVOObserver.h
│ │ │ └── _RXObjCRuntime.h
│ │ ├── RxCocoa.h
│ │ ├── RxCocoa.swift
│ │ ├── Traits
│ │ ├── ControlEvent.swift
│ │ ├── ControlProperty.swift
│ │ ├── Driver
│ │ │ ├── ControlEvent+Driver.swift
│ │ │ ├── ControlProperty+Driver.swift
│ │ │ ├── Driver+Subscription.swift
│ │ │ ├── Driver.swift
│ │ │ ├── ObservableConvertibleType+Driver.swift
│ │ │ └── Variable+Driver.swift
│ │ ├── SharedSequence
│ │ │ ├── ObservableConvertibleType+SharedSequence.swift
│ │ │ ├── SharedSequence+Operators+arity.swift
│ │ │ ├── SharedSequence+Operators.swift
│ │ │ ├── SharedSequence.swift
│ │ │ └── Variable+SharedSequence.swift
│ │ └── UIBindingObserver.swift
│ │ └── iOS
│ │ ├── DataSources
│ │ ├── RxCollectionViewReactiveArrayDataSource.swift
│ │ ├── RxPickerViewAdapter.swift
│ │ └── RxTableViewReactiveArrayDataSource.swift
│ │ ├── Events
│ │ └── ItemEvents.swift
│ │ ├── NSTextStorage+Rx.swift
│ │ ├── Protocols
│ │ ├── RxCollectionViewDataSourceType.swift
│ │ ├── RxPickerViewDataSourceType.swift
│ │ └── RxTableViewDataSourceType.swift
│ │ ├── Proxies
│ │ ├── RxCollectionViewDataSourceProxy.swift
│ │ ├── RxCollectionViewDelegateProxy.swift
│ │ ├── RxNavigationControllerDelegateProxy.swift
│ │ ├── RxPickerViewDataSourceProxy.swift
│ │ ├── RxPickerViewDelegateProxy.swift
│ │ ├── RxScrollViewDelegateProxy.swift
│ │ ├── RxSearchBarDelegateProxy.swift
│ │ ├── RxSearchControllerDelegateProxy.swift
│ │ ├── RxTabBarControllerDelegateProxy.swift
│ │ ├── RxTabBarDelegateProxy.swift
│ │ ├── RxTableViewDataSourceProxy.swift
│ │ ├── RxTableViewDelegateProxy.swift
│ │ ├── RxTextStorageDelegateProxy.swift
│ │ ├── RxTextViewDelegateProxy.swift
│ │ └── RxWebViewDelegateProxy.swift
│ │ ├── UIActivityIndicatorView+Rx.swift
│ │ ├── UIAlertAction+Rx.swift
│ │ ├── UIApplication+Rx.swift
│ │ ├── UIBarButtonItem+Rx.swift
│ │ ├── UIButton+Rx.swift
│ │ ├── UICollectionView+Rx.swift
│ │ ├── UIControl+Rx.swift
│ │ ├── UIDatePicker+Rx.swift
│ │ ├── UIGestureRecognizer+Rx.swift
│ │ ├── UIImageView+Rx.swift
│ │ ├── UILabel+Rx.swift
│ │ ├── UINavigationController+Rx.swift
│ │ ├── UINavigationItem+Rx.swift
│ │ ├── UIPageControl+Rx.swift
│ │ ├── UIPickerView+Rx.swift
│ │ ├── UIProgressView+Rx.swift
│ │ ├── UIRefreshControl+Rx.swift
│ │ ├── UIScrollView+Rx.swift
│ │ ├── UISearchBar+Rx.swift
│ │ ├── UISearchController+Rx.swift
│ │ ├── UISegmentedControl+Rx.swift
│ │ ├── UISlider+Rx.swift
│ │ ├── UIStepper+Rx.swift
│ │ ├── UISwitch+Rx.swift
│ │ ├── UITabBar+Rx.swift
│ │ ├── UITabBarController+Rx.swift
│ │ ├── UITabBarItem+Rx.swift
│ │ ├── UITableView+Rx.swift
│ │ ├── UITextField+Rx.swift
│ │ ├── UITextView+Rx.swift
│ │ ├── UIView+Rx.swift
│ │ ├── UIViewController+Rx.swift
│ │ └── UIWebView+Rx.swift
├── RxSwift
│ ├── LICENSE.md
│ ├── Platform
│ │ ├── DataStructures
│ │ │ ├── Bag.swift
│ │ │ ├── InfiniteSequence.swift
│ │ │ ├── PriorityQueue.swift
│ │ │ └── Queue.swift
│ │ ├── DispatchQueue+Extensions.swift
│ │ ├── Platform.Darwin.swift
│ │ ├── Platform.Linux.swift
│ │ └── RecursiveLock.swift
│ ├── README.md
│ └── RxSwift
│ │ ├── AnyObserver.swift
│ │ ├── Cancelable.swift
│ │ ├── Concurrency
│ │ ├── AsyncLock.swift
│ │ ├── Lock.swift
│ │ ├── LockOwnerType.swift
│ │ ├── SynchronizedDisposeType.swift
│ │ ├── SynchronizedOnType.swift
│ │ ├── SynchronizedSubscribeType.swift
│ │ └── SynchronizedUnsubscribeType.swift
│ │ ├── ConnectableObservableType.swift
│ │ ├── Deprecated.swift
│ │ ├── Disposable.swift
│ │ ├── Disposables
│ │ ├── AnonymousDisposable.swift
│ │ ├── BinaryDisposable.swift
│ │ ├── BooleanDisposable.swift
│ │ ├── CompositeDisposable.swift
│ │ ├── Disposables.swift
│ │ ├── DisposeBag.swift
│ │ ├── DisposeBase.swift
│ │ ├── NopDisposable.swift
│ │ ├── RefCountDisposable.swift
│ │ ├── ScheduledDisposable.swift
│ │ ├── SerialDisposable.swift
│ │ ├── SingleAssignmentDisposable.swift
│ │ └── SubscriptionDisposable.swift
│ │ ├── Errors.swift
│ │ ├── Event.swift
│ │ ├── Extensions
│ │ ├── Bag+Rx.swift
│ │ └── String+Rx.swift
│ │ ├── GroupedObservable.swift
│ │ ├── ImmediateSchedulerType.swift
│ │ ├── Observable.swift
│ │ ├── ObservableConvertibleType.swift
│ │ ├── ObservableType+Extensions.swift
│ │ ├── ObservableType.swift
│ │ ├── Observables
│ │ ├── AddRef.swift
│ │ ├── Amb.swift
│ │ ├── AsMaybe.swift
│ │ ├── AsSingle.swift
│ │ ├── Buffer.swift
│ │ ├── Catch.swift
│ │ ├── CombineLatest+Collection.swift
│ │ ├── CombineLatest+arity.swift
│ │ ├── CombineLatest.swift
│ │ ├── Concat.swift
│ │ ├── Create.swift
│ │ ├── Debounce.swift
│ │ ├── Debug.swift
│ │ ├── DefaultIfEmpty.swift
│ │ ├── Deferred.swift
│ │ ├── Delay.swift
│ │ ├── DelaySubscription.swift
│ │ ├── Dematerialize.swift
│ │ ├── DistinctUntilChanged.swift
│ │ ├── Do.swift
│ │ ├── ElementAt.swift
│ │ ├── Empty.swift
│ │ ├── Error.swift
│ │ ├── Filter.swift
│ │ ├── Generate.swift
│ │ ├── GroupBy.swift
│ │ ├── Just.swift
│ │ ├── Map.swift
│ │ ├── Materialize.swift
│ │ ├── Merge.swift
│ │ ├── Multicast.swift
│ │ ├── Never.swift
│ │ ├── ObserveOn.swift
│ │ ├── Optional.swift
│ │ ├── Producer.swift
│ │ ├── Range.swift
│ │ ├── Reduce.swift
│ │ ├── Repeat.swift
│ │ ├── RetryWhen.swift
│ │ ├── Sample.swift
│ │ ├── Scan.swift
│ │ ├── Sequence.swift
│ │ ├── ShareReplayScope.swift
│ │ ├── SingleAsync.swift
│ │ ├── Sink.swift
│ │ ├── Skip.swift
│ │ ├── SkipUntil.swift
│ │ ├── SkipWhile.swift
│ │ ├── StartWith.swift
│ │ ├── SubscribeOn.swift
│ │ ├── Switch.swift
│ │ ├── SwitchIfEmpty.swift
│ │ ├── Take.swift
│ │ ├── TakeLast.swift
│ │ ├── TakeUntil.swift
│ │ ├── TakeWhile.swift
│ │ ├── Throttle.swift
│ │ ├── Timeout.swift
│ │ ├── Timer.swift
│ │ ├── ToArray.swift
│ │ ├── Using.swift
│ │ ├── Window.swift
│ │ ├── WithLatestFrom.swift
│ │ ├── Zip+Collection.swift
│ │ ├── Zip+arity.swift
│ │ └── Zip.swift
│ │ ├── ObserverType.swift
│ │ ├── Observers
│ │ ├── AnonymousObserver.swift
│ │ ├── ObserverBase.swift
│ │ └── TailRecursiveSink.swift
│ │ ├── Reactive.swift
│ │ ├── Rx.swift
│ │ ├── RxMutableBox.swift
│ │ ├── SchedulerType.swift
│ │ ├── Schedulers
│ │ ├── ConcurrentDispatchQueueScheduler.swift
│ │ ├── ConcurrentMainScheduler.swift
│ │ ├── CurrentThreadScheduler.swift
│ │ ├── HistoricalScheduler.swift
│ │ ├── HistoricalSchedulerTimeConverter.swift
│ │ ├── ImmediateScheduler.swift
│ │ ├── Internal
│ │ │ ├── AnonymousInvocable.swift
│ │ │ ├── DispatchQueueConfiguration.swift
│ │ │ ├── InvocableScheduledItem.swift
│ │ │ ├── InvocableType.swift
│ │ │ ├── ScheduledItem.swift
│ │ │ └── ScheduledItemType.swift
│ │ ├── MainScheduler.swift
│ │ ├── OperationQueueScheduler.swift
│ │ ├── RecursiveScheduler.swift
│ │ ├── SchedulerServices+Emulation.swift
│ │ ├── SerialDispatchQueueScheduler.swift
│ │ ├── VirtualTimeConverterType.swift
│ │ └── VirtualTimeScheduler.swift
│ │ ├── Subjects
│ │ ├── AsyncSubject.swift
│ │ ├── BehaviorSubject.swift
│ │ ├── PublishSubject.swift
│ │ ├── ReplaySubject.swift
│ │ ├── SubjectType.swift
│ │ └── Variable.swift
│ │ └── Traits
│ │ ├── Completable+AndThen.swift
│ │ ├── PrimitiveSequence+Zip+arity.swift
│ │ └── PrimitiveSequence.swift
├── SVProgressHUD
│ ├── LICENSE.txt
│ ├── README.md
│ └── SVProgressHUD
│ │ ├── SVIndefiniteAnimatedView.h
│ │ ├── SVIndefiniteAnimatedView.m
│ │ ├── SVProgressAnimatedView.h
│ │ ├── SVProgressAnimatedView.m
│ │ ├── SVProgressHUD.bundle
│ │ ├── angle-mask.png
│ │ ├── angle-mask@2x.png
│ │ ├── angle-mask@3x.png
│ │ ├── error.png
│ │ ├── error@2x.png
│ │ ├── error@3x.png
│ │ ├── info.png
│ │ ├── info@2x.png
│ │ ├── info@3x.png
│ │ ├── success.png
│ │ ├── success@2x.png
│ │ └── success@3x.png
│ │ ├── SVProgressHUD.h
│ │ ├── SVProgressHUD.m
│ │ ├── SVRadialGradientLayer.h
│ │ └── SVRadialGradientLayer.m
├── SnapKit
│ ├── LICENSE
│ ├── README.md
│ └── Source
│ │ ├── Constraint.swift
│ │ ├── ConstraintAttributes.swift
│ │ ├── ConstraintConfig.swift
│ │ ├── ConstraintConstantTarget.swift
│ │ ├── ConstraintDSL.swift
│ │ ├── ConstraintDescription.swift
│ │ ├── ConstraintInsetTarget.swift
│ │ ├── ConstraintInsets.swift
│ │ ├── ConstraintItem.swift
│ │ ├── ConstraintLayoutGuide+Extensions.swift
│ │ ├── ConstraintLayoutGuide.swift
│ │ ├── ConstraintLayoutGuideDSL.swift
│ │ ├── ConstraintLayoutSupport.swift
│ │ ├── ConstraintLayoutSupportDSL.swift
│ │ ├── ConstraintMaker.swift
│ │ ├── ConstraintMakerEditable.swift
│ │ ├── ConstraintMakerExtendable.swift
│ │ ├── ConstraintMakerFinalizable.swift
│ │ ├── ConstraintMakerPriortizable.swift
│ │ ├── ConstraintMakerRelatable.swift
│ │ ├── ConstraintMultiplierTarget.swift
│ │ ├── ConstraintOffsetTarget.swift
│ │ ├── ConstraintPriority.swift
│ │ ├── ConstraintPriorityTarget.swift
│ │ ├── ConstraintRelatableTarget.swift
│ │ ├── ConstraintRelation.swift
│ │ ├── ConstraintView+Extensions.swift
│ │ ├── ConstraintView.swift
│ │ ├── ConstraintViewDSL.swift
│ │ ├── Debugging.swift
│ │ ├── LayoutConstraint.swift
│ │ ├── LayoutConstraintItem.swift
│ │ └── UILayoutSupport+Extensions.swift
└── Target Support Files
│ ├── Alamofire
│ ├── Alamofire-dummy.m
│ ├── Alamofire-prefix.pch
│ ├── Alamofire-umbrella.h
│ ├── Alamofire.modulemap
│ ├── Alamofire.xcconfig
│ └── Info.plist
│ ├── FMDB
│ ├── FMDB-dummy.m
│ ├── FMDB-prefix.pch
│ ├── FMDB-umbrella.h
│ ├── FMDB.modulemap
│ ├── FMDB.xcconfig
│ └── Info.plist
│ ├── Kingfisher
│ ├── Info.plist
│ ├── Kingfisher-dummy.m
│ ├── Kingfisher-prefix.pch
│ ├── Kingfisher-umbrella.h
│ ├── Kingfisher.modulemap
│ └── Kingfisher.xcconfig
│ ├── MJRefresh
│ ├── Info.plist
│ ├── MJRefresh-dummy.m
│ ├── MJRefresh-prefix.pch
│ ├── MJRefresh-umbrella.h
│ ├── MJRefresh.modulemap
│ └── MJRefresh.xcconfig
│ ├── Moya
│ ├── Info.plist
│ ├── Moya-dummy.m
│ ├── Moya-prefix.pch
│ ├── Moya-umbrella.h
│ ├── Moya.modulemap
│ └── Moya.xcconfig
│ ├── ObjectMapper
│ ├── Info.plist
│ ├── ObjectMapper-dummy.m
│ ├── ObjectMapper-prefix.pch
│ ├── ObjectMapper-umbrella.h
│ ├── ObjectMapper.modulemap
│ └── ObjectMapper.xcconfig
│ ├── Pods-LLProgramFrameworkSwift
│ ├── Info.plist
│ ├── Pods-LLProgramFrameworkSwift-acknowledgements.markdown
│ ├── Pods-LLProgramFrameworkSwift-acknowledgements.plist
│ ├── Pods-LLProgramFrameworkSwift-dummy.m
│ ├── Pods-LLProgramFrameworkSwift-frameworks.sh
│ ├── Pods-LLProgramFrameworkSwift-resources.sh
│ ├── Pods-LLProgramFrameworkSwift-umbrella.h
│ ├── Pods-LLProgramFrameworkSwift.debug.xcconfig
│ ├── Pods-LLProgramFrameworkSwift.modulemap
│ └── Pods-LLProgramFrameworkSwift.release.xcconfig
│ ├── Result
│ ├── Info.plist
│ ├── Result-dummy.m
│ ├── Result-prefix.pch
│ ├── Result-umbrella.h
│ ├── Result.modulemap
│ └── Result.xcconfig
│ ├── RxCocoa
│ ├── Info.plist
│ ├── RxCocoa-dummy.m
│ ├── RxCocoa-prefix.pch
│ ├── RxCocoa-umbrella.h
│ ├── RxCocoa.modulemap
│ └── RxCocoa.xcconfig
│ ├── RxSwift
│ ├── Info.plist
│ ├── RxSwift-dummy.m
│ ├── RxSwift-prefix.pch
│ ├── RxSwift-umbrella.h
│ ├── RxSwift.modulemap
│ └── RxSwift.xcconfig
│ ├── SVProgressHUD
│ ├── Info.plist
│ ├── SVProgressHUD-dummy.m
│ ├── SVProgressHUD-prefix.pch
│ ├── SVProgressHUD-umbrella.h
│ ├── SVProgressHUD.modulemap
│ └── SVProgressHUD.xcconfig
│ └── SnapKit
│ ├── Info.plist
│ ├── SnapKit-dummy.m
│ ├── SnapKit-prefix.pch
│ ├── SnapKit-umbrella.h
│ ├── SnapKit.modulemap
│ └── SnapKit.xcconfig
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.m linguist-language=swift
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 奥卡姆剃须刀
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/LLProgramFrameworkSwift.gif
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/General/BaseClass/LLBaseViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLBaseViewController.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/5.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class LLBaseViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | }
17 |
18 | override func didReceiveMemoryWarning() {
19 | super.didReceiveMemoryWarning()
20 | // Dispose of any resources that can be recreated.
21 | }
22 |
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/General/Category/Ext+UIBarButtonItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Ext+UIBarButtonItem.swift
3 | // SwiftPractice
4 | //
5 | // Created by liushaohua on 15/10/22.
6 | // Copyright © 2015年 liushaohua. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIBarButtonItem{
12 |
13 |
14 | ///UIBarButtonItem
15 | ///
16 | /// - parameter setHighlightedImg: 背景图片
17 | /// - parameter title: 标题
18 | /// - parameter target: target
19 | /// - parameter action: action
20 | ///
21 | /// - returns: <#return value description#>
22 | convenience init(setHighlightedImg:String? ,title:String? ,target:Any?,action:Selector) {
23 | self.init()
24 | let button = UIButton(setHighlightImage:setHighlightedImg, title: title, target: target, action: action)
25 |
26 | self.customView = button
27 |
28 |
29 |
30 | }
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | }
39 |
40 |
41 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/General/Category/Ext+UIImageView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Ext+UIImageView.swift
3 | // SwiftPractice
4 | //
5 | // Created by liushaohua on 15/10/25.
6 | // Copyright © 2015年 liushaohua. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import Kingfisher
11 |
12 | extension UIImageView{
13 |
14 | /// 快速创建 imageView
15 | ///
16 | /// - parameter imgName: 图片名字
17 | ///
18 | /// - returns:
19 | convenience init(imgName: String) {
20 | self.init(image: UIImage(named:imgName))
21 | }
22 |
23 |
24 | ///
25 | /// - parameter withUrlString: 图片的 urlString
26 | /// - parameter placeholderImgName: 默认图片的名字
27 | func LL_setImage(withUrlString: String?, placeholderImgName: String?){
28 | // 获取图片的 url
29 | let url = URL(string: withUrlString ?? "")
30 | // 判断他是否为 nil
31 | guard let u = url else {
32 | return
33 | }
34 | self.kf.setImage(with: u, placeholder: UIImage(named: placeholderImgName ?? ""), options: nil, progressBlock: nil, completionHandler: nil)
35 |
36 | }
37 |
38 |
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/General/Category/Ext+UILable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Ext+UILable.swift
3 | // SwiftPractice
4 | //
5 | // Created by liushaohua on 15/10/23.
6 | // Copyright © 2015年 liushaohua. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | extension UILabel{
13 |
14 |
15 | convenience init(text:String,font:CGFloat,textColor:UIColor,maxWidth:CGFloat = 0) {
16 | self.init()
17 | self.text = text
18 | self.font = UIFont.systemFont(ofSize: font)
19 | self.textColor = textColor
20 | if maxWidth > 0{
21 |
22 | self.preferredMaxLayoutWidth = maxWidth
23 | self.numberOfLines = 0
24 |
25 | }
26 | }
27 |
28 |
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/General/Helper/LLHelper.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLHelper.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by liushaohua on 2017/9/5.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | /// 线程加锁
13 | ///
14 | /// - Parameters:
15 | /// - lock: 加锁对象
16 | /// - dispose: 执行闭包函数,
17 | func synchronized(_ lock: AnyObject,dispose: ()->()) {
18 | objc_sync_enter(lock)
19 | dispose()
20 | objc_sync_exit(lock)
21 | }
22 |
23 | //MARK: 延时使用 ____________________________________________________________________________________________________
24 |
25 | typealias TaskBlock = (_ cancel : Bool) -> Void
26 |
27 | func delay(_ time: TimeInterval, task: @escaping ()->()) -> TaskBlock? {
28 |
29 | func dispatch_later(block: @escaping ()->()) {
30 | let t = DispatchTime.now() + time
31 | DispatchQueue.main.asyncAfter(deadline: t, execute: block)
32 | }
33 |
34 | var closure: (()->Void)? = task
35 | var result: TaskBlock?
36 |
37 | let delayedClosure: TaskBlock = {
38 | cancel in
39 | if let internalClosure = closure {
40 | if (cancel == false) {
41 | DispatchQueue.main.async(execute: internalClosure)
42 | }
43 | }
44 | closure = nil
45 | result = nil
46 | }
47 |
48 | result = delayedClosure
49 |
50 | dispatch_later {
51 | if let delayedClosure = result {
52 | delayedClosure(false)
53 | }
54 | }
55 | return result
56 | }
57 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSAppTransportSecurity
6 |
7 | NSAllowsArbitraryLoads
8 |
9 |
10 | CFBundleDevelopmentRegion
11 | en
12 | CFBundleExecutable
13 | $(EXECUTABLE_NAME)
14 | CFBundleIdentifier
15 | $(PRODUCT_BUNDLE_IDENTIFIER)
16 | CFBundleInfoDictionaryVersion
17 | 6.0
18 | CFBundleName
19 | $(PRODUCT_NAME)
20 | CFBundlePackageType
21 | APPL
22 | CFBundleShortVersionString
23 | 1.0
24 | CFBundleVersion
25 | 1
26 | LSRequiresIPhoneOS
27 |
28 | UILaunchStoryboardName
29 | LaunchScreen
30 | UIRequiredDeviceCapabilities
31 |
32 | armv7
33 |
34 | UISupportedInterfaceOrientations
35 |
36 | UIInterfaceOrientationPortrait
37 | UIInterfaceOrientationLandscapeLeft
38 | UIInterfaceOrientationLandscapeRight
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Resources/menu.json:
--------------------------------------------------------------------------------
1 | {
2 | "tabbar_items":[
3 | {
4 | "page":"LLHomeViewController",
5 | "type":"home",
6 | "title":"首页",
7 | "normal_icon":"home",
8 | "normal_icon_select":"home_select"
9 | },
10 | {
11 | "page":"LLMeViewController",
12 | "type":"me",
13 | "title":"我的",
14 | "normal_icon":"me_icon",
15 | "normal_icon_select":"me_icon_select"
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Sections/Home/Model/LLHomeModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLHomeModel.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/6.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import ObjectMapper
11 |
12 |
13 | class LLHomeModel: Mappable {
14 |
15 | var date: String?
16 | var stories: [StoryModel]?
17 | var top_stories: [StoryModel]?
18 |
19 | // 接下来的两个方法是必须要实现的
20 | required init?(map: Map) {
21 |
22 | }
23 |
24 | //
25 | public func mapping(map: Map) {
26 | date <- map["date"]
27 | stories <- map["stories"]
28 | top_stories <- map["top_stories"]
29 | }
30 |
31 | }
32 |
33 |
34 |
35 | class StoryModel: Mappable {
36 | var ga_prefix: String?
37 | var id: Int?
38 | var images: [String]?
39 | var title: String?
40 | var type: Int?
41 | var image: String?
42 | var multipic = false
43 |
44 | required init?(map: Map) {
45 |
46 | }
47 |
48 | public func mapping(map: Map) {
49 |
50 | ga_prefix <- map["ga_prefix"]
51 | id <- map["id"]
52 | images <- map["images"]
53 | title <- map["title"]
54 | type <- map["type"]
55 | image <- map["image"]
56 | multipic <- map["multipic"]
57 |
58 | }
59 |
60 |
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Sections/Home/V/LLHomeCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLHomeCell.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/7.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class LLHomeCell: UITableViewCell {
12 |
13 | @IBOutlet weak var imageV: UIImageView!
14 |
15 | @IBOutlet weak var titleLbl: UILabel!
16 | override func awakeFromNib() {
17 | super.awakeFromNib()
18 | // Initialization code
19 | }
20 |
21 | override func setSelected(_ selected: Bool, animated: Bool) {
22 | super.setSelected(selected, animated: animated)
23 |
24 | // Configure the view for the selected state
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Sections/Main/LLNavigationController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLNavigationController.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/5.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class LLNavigationController: UINavigationController ,UIGestureRecognizerDelegate{
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | interactivePopGestureRecognizer?.delegate = self
17 |
18 | }
19 |
20 |
21 | override func pushViewController(_ viewController: UIViewController, animated: Bool) {
22 |
23 | var title : String?
24 |
25 | if childViewControllers.count > 0 {
26 | title = "返回"
27 | if childViewControllers.count == 1 {
28 | title = childViewControllers.first?.title
29 | }
30 | viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(setHighlightedImg:"navigationbar_back_withtext", title: title, target: self, action: #selector(popVC))
31 | }
32 | super.pushViewController(viewController, animated: animated)
33 | }
34 |
35 | @objc fileprivate func popVC() {
36 | popViewController(animated:true)
37 | }
38 |
39 | func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
40 | return childViewControllers.count != 1
41 | }
42 |
43 |
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Sections/Me/LLMeViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLMeViewController.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/5.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class LLMeViewController: LLBaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 |
17 | view.backgroundColor = UIColor.red
18 | }
19 |
20 | override func didReceiveMemoryWarning() {
21 | super.didReceiveMemoryWarning()
22 | // Dispose of any resources that can be recreated.
23 | }
24 |
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Service/LLRequestPlugin.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLRequestPlugin.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/26.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Moya
11 | import Result
12 |
13 |
14 | let netWorkActivityPlugin = NetworkActivityPlugin { (change) -> () in
15 |
16 | switch(change){
17 | case .ended:
18 | UIApplication.shared.isNetworkActivityIndicatorVisible = false
19 | case .began:
20 | UIApplication.shared.isNetworkActivityIndicatorVisible = true
21 | }
22 | }
23 |
24 |
25 | public final class LLRequestPlugin: PluginType {
26 |
27 | /// Called immediately before a request is sent over the network (or stubbed).
28 | public func willSend(_ request: RequestType, target: TargetType) {
29 | }
30 |
31 | public func didReceive(_ result: Result, target: TargetType) {
32 | switch result {
33 | case .success(let response):
34 | let json:Dictionary? = try! JSONSerialization.jsonObject(with: response.data, options:.allowFragments) as! [String: Any]
35 | print(json as Any)
36 | LLProgressHUD.showSuccess("加载成功")
37 | case .failure:
38 | LLProgressHUD.showError("加载失败")
39 | break
40 | }
41 |
42 | }
43 | }
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Service/LLToModelExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLToModelExtension.swift
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/7.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | import RxSwift
12 | import Moya
13 | import ObjectMapper
14 |
15 |
16 |
17 | extension Observable{
18 |
19 | //
20 | func mapObject(type: T.Type) -> Observable {
21 | return self.map { response in
22 | guard let dict = response as? [String : Any] else{
23 | throw RxSwiftMoyaError.ParseJSONError
24 | }
25 | return Mapper().map(JSON: dict)!
26 | }
27 | }
28 |
29 | func mapArray(type: T.Type) -> Observable<[T]> {
30 | return self.map { response in
31 | //if response is an array of dictionaries, then use ObjectMapper to map the dictionary
32 | //if not, throw an error
33 | guard let array = response as? [Any] else {
34 | throw RxSwiftMoyaError.ParseJSONError
35 | }
36 |
37 | guard let dicts = array as? [[String: Any]] else {
38 | throw RxSwiftMoyaError.ParseJSONError
39 | }
40 |
41 | return Mapper().mapArray(JSONArray: dicts)
42 | }
43 | }
44 |
45 |
46 |
47 |
48 | }
49 |
50 | enum RxSwiftMoyaError: String {
51 | case ParseJSONError
52 | case OtherError
53 | }
54 |
55 | extension RxSwiftMoyaError: Swift.Error { }
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Vendors/LLFMDB/LLKeyValueStore.h:
--------------------------------------------------------------------------------
1 | //
2 | // LLKeyValueStore.h
3 | // LLFMDB
4 | //
5 | // Created by liushaohua on 2017/8/10.
6 | // Copyright © 2017年 liushaohua. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface LLKeyValueStore : NSObject
12 |
13 | + (instancetype)shareStore;
14 |
15 | /**获取存储路径*/
16 | + (NSString *)dbPath;
17 |
18 | /**
19 | * 需要用到的时候去创建
20 | *
21 | * @param tableName 表的名字
22 | */
23 | - (void)createDBWithTableName:(NSString *)tableName;
24 |
25 | // 写入数据 value类型包括:NSString, NSNumber, NSDictionary和NSArray 操作完成会自动关闭数据库
26 | - (void)putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName;
27 | - (void)putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName;
28 | - (void)putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName;
29 |
30 | //读取数据 value类型包括:NSString, NSNumber, NSDictionary和NSArray
31 | - (NSString *)getStringById:(NSString *)stringId fromTable:(NSString *)tableName;
32 | - (NSNumber *)getNumberById:(NSString *)numberId fromTable:(NSString *)tableName;
33 | - (id)getObjectById:(NSString *)objectId fromTable:(NSString *)tableName;
34 |
35 | // 删除指定key的数据
36 | - (void)deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName;
37 |
38 | // 批量删除一组key数组的数据
39 | - (void)deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName;
40 | - (NSArray *)getAllItemsFromTable:(NSString *)tableName;
41 |
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwift/Vendors/LLProgramFramework+Bridging+Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // LLProgramFramework+Bridging+Header.h
3 | // LLProgramFrameworkSwift
4 | //
5 | // Created by 奥卡姆 on 2017/9/7.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | #ifndef LLProgramFramework_Bridging_Header_h
10 | #define LLProgramFramework_Bridging_Header_h
11 |
12 | #import "UINavigationController+FDFullscreenPopGesture.h"
13 | #import "LLKeyValueStore.h"
14 |
15 | #endif /* LLProgramFramework_Bridging_Header_h */
16 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwiftTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwiftTests/LLProgramFrameworkSwiftTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLProgramFrameworkSwiftTests.swift
3 | // LLProgramFrameworkSwiftTests
4 | //
5 | // Created by 奥卡姆 on 2017/9/5.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import LLProgramFrameworkSwift
11 |
12 | class LLProgramFrameworkSwiftTests: XCTestCase {
13 |
14 | override func setUp() {
15 | super.setUp()
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 | }
18 |
19 | override func tearDown() {
20 | // Put teardown code here. This method is called after the invocation of each test method in the class.
21 | super.tearDown()
22 | }
23 |
24 | func testExample() {
25 | // This is an example of a functional test case.
26 | // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 |
29 | func testPerformanceExample() {
30 | // This is an example of a performance test case.
31 | self.measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwiftUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/LLProgramFrameworkSwiftUITests/LLProgramFrameworkSwiftUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LLProgramFrameworkSwiftUITests.swift
3 | // LLProgramFrameworkSwiftUITests
4 | //
5 | // Created by 奥卡姆 on 2017/9/5.
6 | // Copyright © 2017年 aokamu. All rights reserved.
7 | //
8 |
9 | import XCTest
10 |
11 | class LLProgramFrameworkSwiftUITests: XCTestCase {
12 |
13 | override func setUp() {
14 | super.setUp()
15 |
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 |
18 | // In UI tests it is usually best to stop immediately when a failure occurs.
19 | continueAfterFailure = false
20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
21 | XCUIApplication().launch()
22 |
23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
24 | }
25 |
26 | override func tearDown() {
27 | // Put teardown code here. This method is called after the invocation of each test method in the class.
28 | super.tearDown()
29 | }
30 |
31 | func testExample() {
32 | // Use recording to get started writing UI tests.
33 | // Use XCTAssert and related functions to verify your tests produce the correct results.
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '8.0'
2 |
3 | target 'LLProgramFrameworkSwift' do
4 |
5 | use_frameworks!
6 |
7 | pod 'RxSwift', '~> 3.6.1'
8 | pod 'RxCocoa', '~> 3.6.1'
9 | pod 'Moya/RxSwift', '~> 8.0.5'
10 | pod 'Kingfisher’, '~> 3.11.0'
11 | pod 'FMDB', '~> 2.7.2'
12 | pod 'ObjectMapper', '~> 2.2.8'
13 | pod 'SnapKit', '~> 3.2.0'
14 | pod 'MJRefresh', '~> 3.1.12'
15 | pod 'SVProgressHUD', '~> 2.1.2'
16 |
17 |
18 | end
19 |
--------------------------------------------------------------------------------
/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Alamofire (4.5.0)
3 | - FMDB (2.7.2):
4 | - FMDB/standard (= 2.7.2)
5 | - FMDB/standard (2.7.2)
6 | - Kingfisher (3.11.0)
7 | - MJRefresh (3.1.12)
8 | - Moya/Core (8.0.5):
9 | - Alamofire (~> 4.1)
10 | - Result (~> 3.0)
11 | - Moya/RxSwift (8.0.5):
12 | - Moya/Core
13 | - RxSwift (~> 3.0)
14 | - ObjectMapper (2.2.8)
15 | - Result (3.2.3)
16 | - RxCocoa (3.6.1):
17 | - RxSwift (~> 3.6)
18 | - RxSwift (3.6.1)
19 | - SnapKit (3.2.0)
20 | - SVProgressHUD (2.1.2)
21 |
22 | DEPENDENCIES:
23 | - FMDB (~> 2.7.2)
24 | - Kingfisher (~> 3.11.0)
25 | - MJRefresh (~> 3.1.12)
26 | - Moya/RxSwift (~> 8.0.5)
27 | - ObjectMapper (~> 2.2.8)
28 | - RxCocoa (~> 3.6.1)
29 | - RxSwift (~> 3.6.1)
30 | - SnapKit (~> 3.2.0)
31 | - SVProgressHUD (~> 2.1.2)
32 |
33 | SPEC CHECKSUMS:
34 | Alamofire: f28cdffd29de33a7bfa022cbd63ae95a27fae140
35 | FMDB: 6198a90e7b6900cfc046e6bc0ef6ebb7be9236aa
36 | Kingfisher: c8911a7672c6217dec8c0520fb6e76ec4b7e0780
37 | MJRefresh: b96cdb21c4aa75a7b07654311ab2f315c497e806
38 | Moya: c37eec09a098ba9991b5a963b291fc5704bdb9ef
39 | ObjectMapper: 3d571bb5af471c779e1160828cd9ad5c4ef90958
40 | Result: 128640a6347e8d2ae48b142556739a2d13f90ce6
41 | RxCocoa: 84a08739ab186248c7f31ce4ee92d6f8a947d690
42 | RxSwift: f9de85ea20cd2f7716ee5409fc13523dc638e4e4
43 | SnapKit: 1ca44df72cfa543218d177cb8aab029d10d86ea7
44 | SVProgressHUD: c404a55d78acbeb7ebb78b76d3faf986475a6994
45 |
46 | PODFILE CHECKSUM: dda1ac1ec3642da987b881cba61a34df1cc0e50e
47 |
48 | COCOAPODS: 1.3.1
49 |
--------------------------------------------------------------------------------
/Pods/Alamofire/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Pods/FMDB/LICENSE.txt:
--------------------------------------------------------------------------------
1 | If you are using FMDB in your project, I'd love to hear about it. Let Gus know
2 | by sending an email to gus@flyingmeat.com.
3 |
4 | And if you happen to come across either Gus Mueller or Rob Ryan in a bar, you
5 | might consider purchasing a drink of their choosing if FMDB has been useful to
6 | you.
7 |
8 | Finally, and shortly, this is the MIT License.
9 |
10 | Copyright (c) 2008-2014 Flying Meat Inc.
11 |
12 | Permission is hereby granted, free of charge, to any person obtaining a copy
13 | of this software and associated documentation files (the "Software"), to deal
14 | in the Software without restriction, including without limitation the rights
15 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16 | copies of the Software, and to permit persons to whom the Software is
17 | furnished to do so, subject to the following conditions:
18 |
19 | The above copyright notice and this permission notice shall be included in
20 | all copies or substantial portions of the Software.
21 |
22 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28 | THE SOFTWARE.
--------------------------------------------------------------------------------
/Pods/FMDB/src/fmdb/FMDB.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | FOUNDATION_EXPORT double FMDBVersionNumber;
4 | FOUNDATION_EXPORT const unsigned char FMDBVersionString[];
5 |
6 | #import "FMDatabase.h"
7 | #import "FMResultSet.h"
8 | #import "FMDatabaseAdditions.h"
9 | #import "FMDatabaseQueue.h"
10 | #import "FMDatabasePool.h"
11 |
--------------------------------------------------------------------------------
/Pods/Kingfisher/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2017 Wei Wang
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/Pods/Kingfisher/Sources/Box.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Box.swift
3 | // Kingfisher
4 | //
5 | // Created by WANG WEI on 2016/09/12.
6 | // Copyright © 2016年 Wei Wang. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class Box {
12 | let value: T
13 | init(value: T) {
14 | self.value = value
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | @interface MJRefreshAutoFooter : MJRefreshFooter
12 | /** 是否自动刷新(默认为YES) */
13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
14 |
15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
17 |
18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
20 | @end
21 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | @interface MJRefreshBackFooter : MJRefreshFooter
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshFooter.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 上拉刷新控件
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshFooter : MJRefreshComponent
13 | /** 创建footer */
14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建footer */
16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 提示没有更多的数据 */
19 | - (void)endRefreshingWithNoMoreData;
20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData");
21 |
22 | /** 重置没有更多的数据(消除没有更多数据的状态) */
23 | - (void)resetNoMoreData;
24 |
25 | /** 忽略多少scrollView的contentInset的bottom */
26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
27 |
28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */
29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden;
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshHeader.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 下拉刷新控件:负责监控用户下拉的状态
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshHeader : MJRefreshComponent
13 | /** 创建header */
14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建header */
16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 这个key用来存储上一次下拉刷新成功的时间 */
19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey;
20 | /** 上一次下拉刷新成功的时间 */
21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;
22 |
23 | /** 忽略多少scrollView的contentInset的top */
24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter
12 | /** 菊花的样式 */
13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
14 | @end
15 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoFooter.h"
10 |
11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
12 | /** 文字距离圈圈、箭头的距离 */
13 | @property (assign, nonatomic) CGFloat labelLeftInset;
14 | /** 显示刷新状态的label */
15 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
16 |
17 | /** 设置state状态下的文字 */
18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
19 |
20 | /** 隐藏刷新状态的文字 */
21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden;
22 | @end
23 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
13 | /** 菊花的样式 */
14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
15 | @end
16 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackFooter.h"
10 |
11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter
12 | /** 文字距离圈圈、箭头的距离 */
13 | @property (assign, nonatomic) CGFloat labelLeftInset;
14 | /** 显示刷新状态的label */
15 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
16 | /** 设置state状态下的文字 */
17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
18 |
19 | /** 获取state状态下的title */
20 | - (NSString *)titleForState:(MJRefreshState)state;
21 | @end
22 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshGifHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | @interface MJRefreshGifHeader : MJRefreshStateHeader
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshNormalHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader
12 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
13 | /** 菊花的样式 */
14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
15 | @end
16 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshStateHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshHeader.h"
10 |
11 | @interface MJRefreshStateHeader : MJRefreshHeader
12 | #pragma mark - 刷新时间相关
13 | /** 利用这个block来决定显示的更新时间文字 */
14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime);
15 | /** 显示上一次刷新时间的label */
16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
17 |
18 | #pragma mark - 状态相关
19 | /** 文字距离圈圈、箭头的距离 */
20 | @property (assign, nonatomic) CGFloat labelLeftInset;
21 | /** 显示刷新状态的label */
22 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
23 | /** 设置state状态下的文字 */
24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "MJRefreshHeaderIdleText" = "下拉可以刷新";
2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新";
3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中...";
4 |
5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多";
6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據...";
7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢";
8 |
9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多";
10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多";
11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據...";
12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢";
13 |
14 | "MJRefreshHeaderLastTimeText" = "最後更新:";
15 | "MJRefreshHeaderDateTodayText" = "今天";
16 | "MJRefreshHeaderNoneLastDateText" = "無記錄";
17 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 |
4 | #import "UIScrollView+MJRefresh.h"
5 | #import "UIScrollView+MJExtension.h"
6 | #import "UIView+MJExtension.h"
7 |
8 | #import "MJRefreshNormalHeader.h"
9 | #import "MJRefreshGifHeader.h"
10 |
11 | #import "MJRefreshBackNormalFooter.h"
12 | #import "MJRefreshBackGifFooter.h"
13 | #import "MJRefreshAutoNormalFooter.h"
14 | #import "MJRefreshAutoGifFooter.h"
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+MJRefresh.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 16/6/13.
6 | // Copyright © 2016年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSBundle (MJRefresh)
12 | + (instancetype)mj_refreshBundle;
13 | + (UIImage *)mj_arrowImage;
14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value;
15 | + (NSString *)mj_localizedStringForKey:(NSString *)key;
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface UIScrollView (MJExtension)
13 | @property (assign, nonatomic) CGFloat mj_insetT;
14 | @property (assign, nonatomic) CGFloat mj_insetB;
15 | @property (assign, nonatomic) CGFloat mj_insetL;
16 | @property (assign, nonatomic) CGFloat mj_insetR;
17 |
18 | @property (assign, nonatomic) CGFloat mj_offsetX;
19 | @property (assign, nonatomic) CGFloat mj_offsetY;
20 |
21 | @property (assign, nonatomic) CGFloat mj_contentW;
22 | @property (assign, nonatomic) CGFloat mj_contentH;
23 | @end
24 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+MJRefresh.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 给ScrollView增加下拉刷新、上拉刷新的功能
9 |
10 | #import
11 | #import "MJRefreshConst.h"
12 |
13 | @class MJRefreshHeader, MJRefreshFooter;
14 |
15 | @interface UIScrollView (MJRefresh)
16 | /** 下拉刷新控件 */
17 | @property (strong, nonatomic) MJRefreshHeader *mj_header;
18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header");
19 | /** 上拉刷新控件 */
20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer;
21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer");
22 |
23 | #pragma mark - other
24 | - (NSInteger)mj_totalDataCount;
25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount);
26 | @end
27 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface UIView (MJExtension)
13 | @property (assign, nonatomic) CGFloat mj_x;
14 | @property (assign, nonatomic) CGFloat mj_y;
15 | @property (assign, nonatomic) CGFloat mj_w;
16 | @property (assign, nonatomic) CGFloat mj_h;
17 | @property (assign, nonatomic) CGSize mj_size;
18 | @property (assign, nonatomic) CGPoint mj_origin;
19 | @end
20 |
--------------------------------------------------------------------------------
/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Alamofire (4.5.0)
3 | - FMDB (2.7.2):
4 | - FMDB/standard (= 2.7.2)
5 | - FMDB/standard (2.7.2)
6 | - Kingfisher (3.11.0)
7 | - MJRefresh (3.1.12)
8 | - Moya/Core (8.0.5):
9 | - Alamofire (~> 4.1)
10 | - Result (~> 3.0)
11 | - Moya/RxSwift (8.0.5):
12 | - Moya/Core
13 | - RxSwift (~> 3.0)
14 | - ObjectMapper (2.2.8)
15 | - Result (3.2.3)
16 | - RxCocoa (3.6.1):
17 | - RxSwift (~> 3.6)
18 | - RxSwift (3.6.1)
19 | - SnapKit (3.2.0)
20 | - SVProgressHUD (2.1.2)
21 |
22 | DEPENDENCIES:
23 | - FMDB (~> 2.7.2)
24 | - Kingfisher (~> 3.11.0)
25 | - MJRefresh (~> 3.1.12)
26 | - Moya/RxSwift (~> 8.0.5)
27 | - ObjectMapper (~> 2.2.8)
28 | - RxCocoa (~> 3.6.1)
29 | - RxSwift (~> 3.6.1)
30 | - SnapKit (~> 3.2.0)
31 | - SVProgressHUD (~> 2.1.2)
32 |
33 | SPEC CHECKSUMS:
34 | Alamofire: f28cdffd29de33a7bfa022cbd63ae95a27fae140
35 | FMDB: 6198a90e7b6900cfc046e6bc0ef6ebb7be9236aa
36 | Kingfisher: c8911a7672c6217dec8c0520fb6e76ec4b7e0780
37 | MJRefresh: b96cdb21c4aa75a7b07654311ab2f315c497e806
38 | Moya: c37eec09a098ba9991b5a963b291fc5704bdb9ef
39 | ObjectMapper: 3d571bb5af471c779e1160828cd9ad5c4ef90958
40 | Result: 128640a6347e8d2ae48b142556739a2d13f90ce6
41 | RxCocoa: 84a08739ab186248c7f31ce4ee92d6f8a947d690
42 | RxSwift: f9de85ea20cd2f7716ee5409fc13523dc638e4e4
43 | SnapKit: 1ca44df72cfa543218d177cb8aab029d10d86ea7
44 | SVProgressHUD: c404a55d78acbeb7ebb78b76d3faf986475a6994
45 |
46 | PODFILE CHECKSUM: dda1ac1ec3642da987b881cba61a34df1cc0e50e
47 |
48 | COCOAPODS: 1.3.1
49 |
--------------------------------------------------------------------------------
/Pods/Moya/License.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2017 Artsy, Ash Furrow
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Pods/Moya/Sources/Moya/Cancellable.swift:
--------------------------------------------------------------------------------
1 | /// Protocol to define the opaque type returned from a request
2 | public protocol Cancellable {
3 | var isCancelled: Bool { get }
4 | func cancel()
5 | }
6 |
7 | internal class CancellableWrapper: Cancellable {
8 | internal var innerCancellable: Cancellable = SimpleCancellable()
9 |
10 | var isCancelled: Bool { return innerCancellable.isCancelled }
11 |
12 | internal func cancel() {
13 | innerCancellable.cancel()
14 | }
15 | }
16 |
17 | internal class SimpleCancellable: Cancellable {
18 | var isCancelled = false
19 | func cancel() {
20 | isCancelled = true
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/Moya/Sources/Moya/Image.swift:
--------------------------------------------------------------------------------
1 | #if os(iOS) || os(watchOS) || os(tvOS)
2 | import UIKit.UIImage
3 | public typealias ImageType = UIImage
4 | #elseif os(OSX)
5 | import AppKit.NSImage
6 | public typealias ImageType = NSImage
7 | #endif
8 |
9 | /// An alias for the SDK's image type.
10 | public typealias Image = ImageType
11 |
--------------------------------------------------------------------------------
/Pods/Moya/Sources/Moya/MultiTarget.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A `TargetType` used to enable `MoyaProvider` to process multiple `TargetType`s.
4 | public enum MultiTarget: TargetType {
5 | /// The embedded `TargetType`.
6 | case target(TargetType)
7 |
8 | public init(_ target: TargetType) {
9 | self = MultiTarget.target(target)
10 | }
11 |
12 | public var path: String {
13 | return target.path
14 | }
15 |
16 | public var baseURL: URL {
17 | return target.baseURL
18 | }
19 |
20 | public var method: Moya.Method {
21 | return target.method
22 | }
23 |
24 | public var parameters: [String: Any]? {
25 | return target.parameters
26 | }
27 |
28 | public var parameterEncoding: ParameterEncoding {
29 | return target.parameterEncoding
30 | }
31 |
32 | public var sampleData: Data {
33 | return target.sampleData
34 | }
35 |
36 | public var task: Task {
37 | return target.task
38 | }
39 |
40 | public var validate: Bool {
41 | return target.validate
42 | }
43 |
44 | /// The embedded `TargetType`.
45 | public var target: TargetType {
46 | switch self {
47 | case .target(let t): return t
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Pods/Moya/Sources/Moya/MultipartFormData.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// Represents "multipart/form-data" for an upload.
4 | public struct MultipartFormData {
5 |
6 | /// Method to provide the form data.
7 | public enum FormDataProvider {
8 | case data(Foundation.Data)
9 | case file(URL)
10 | case stream(InputStream, UInt64)
11 | }
12 |
13 | /// Initialize a new `MultipartFormData`.
14 | public init(provider: FormDataProvider, name: String, fileName: String? = nil, mimeType: String? = nil) {
15 | self.provider = provider
16 | self.name = name
17 | self.fileName = fileName
18 | self.mimeType = mimeType
19 | }
20 |
21 | /// The method being used for providing form data.
22 | public let provider: FormDataProvider
23 |
24 | /// The name.
25 | public let name: String
26 |
27 | /// The file name.
28 | public let fileName: String?
29 |
30 | /// The MIME type
31 | public let mimeType: String?
32 | }
33 |
--------------------------------------------------------------------------------
/Pods/Moya/Sources/Moya/Plugins/CredentialsPlugin.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Result
3 |
4 | /// Provides each request with optional URLCredentials.
5 | public final class CredentialsPlugin: PluginType {
6 |
7 | public typealias CredentialClosure = (TargetType) -> URLCredential?
8 | let credentialsClosure: CredentialClosure
9 |
10 | public init(credentialsClosure: @escaping CredentialClosure) {
11 | self.credentialsClosure = credentialsClosure
12 | }
13 |
14 | // MARK: Plugin
15 |
16 | public func willSend(_ request: RequestType, target: TargetType) {
17 | if let credentials = credentialsClosure(target) {
18 | _ = request.authenticate(usingCredential: credentials)
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Pods/Moya/Sources/Moya/Plugins/NetworkActivityPlugin.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Result
3 |
4 | /// Network activity change notification type.
5 | public enum NetworkActivityChangeType {
6 | case began, ended
7 | }
8 |
9 | /// Notify a request's network activity changes (request begins or ends).
10 | public final class NetworkActivityPlugin: PluginType {
11 |
12 | public typealias NetworkActivityClosure = (_ change: NetworkActivityChangeType) -> Void
13 | let networkActivityClosure: NetworkActivityClosure
14 |
15 | public init(networkActivityClosure: @escaping NetworkActivityClosure) {
16 | self.networkActivityClosure = networkActivityClosure
17 | }
18 |
19 | // MARK: Plugin
20 |
21 | /// Called by the provider as soon as the request is about to start
22 | public func willSend(_ request: RequestType, target: TargetType) {
23 | networkActivityClosure(.began)
24 | }
25 |
26 | /// Called by the provider as soon as a response arrives, even if the request is canceled.
27 | public func didReceive(_ result: Result, target: TargetType) {
28 | networkActivityClosure(.ended)
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Pods/ObjectMapper/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2014 Hearst
3 |
4 | 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:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | 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.
9 |
--------------------------------------------------------------------------------
/Pods/ObjectMapper/Sources/DictionaryTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DictionaryTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Milen Halachev on 7/20/16.
6 | // Copyright © 2016 hearst. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | ///Transforms [String: AnyObject] <-> [Key: Value] where Key is RawRepresentable as String, Value is Mappable
12 | public struct DictionaryTransform: TransformType where Key: Hashable, Key: RawRepresentable, Key.RawValue == String, Value: Mappable {
13 |
14 | public init() {
15 |
16 | }
17 |
18 | public func transformFromJSON(_ value: Any?) -> [Key: Value]? {
19 |
20 | guard let json = value as? [String: Any] else {
21 |
22 | return nil
23 | }
24 |
25 | let result = json.reduce([:]) { (result, element) -> [Key: Value] in
26 |
27 | guard
28 | let key = Key(rawValue: element.0),
29 | let valueJSON = element.1 as? [String: Any],
30 | let value = Value(JSON: valueJSON)
31 | else {
32 |
33 | return result
34 | }
35 |
36 | var result = result
37 | result[key] = value
38 | return result
39 | }
40 |
41 | return result
42 | }
43 |
44 | public func transformToJSON(_ value: [Key: Value]?) -> Any? {
45 |
46 | let result = value?.reduce([:]) { (result, element) -> [String: Any] in
47 |
48 | let key = element.0.rawValue
49 | let value = element.1.toJSON()
50 |
51 | var result = result
52 | result[key] = value
53 | return result
54 | }
55 |
56 | return result
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Pods/ObjectMapper/Sources/TransformType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TransformType.swift
3 | // ObjectMapper
4 | //
5 | // Created by Syo Ikeda on 2/4/15.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2016 Hearst
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | public protocol TransformType {
30 | associatedtype Object
31 | associatedtype JSON
32 |
33 | func transformFromJSON(_ value: Any?) -> Object?
34 | func transformToJSON(_ value: Object?) -> JSON?
35 | }
36 |
--------------------------------------------------------------------------------
/Pods/Result/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Rob Rix
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/Pods/RxCocoa/LICENSE.md:
--------------------------------------------------------------------------------
1 | **The MIT License**
2 | **Copyright © 2015 Krunoslav Zaher**
3 | **All rights reserved.**
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InfiniteSequence.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 6/13/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Sequence that repeats `repeatedValue` infinite number of times.
10 | struct InfiniteSequence : Sequence {
11 | typealias Element = E
12 | typealias Iterator = AnyIterator
13 |
14 | private let _repeatedValue: E
15 |
16 | init(repeatedValue: E) {
17 | _repeatedValue = repeatedValue
18 | }
19 |
20 | func makeIterator() -> Iterator {
21 | let repeatedValue = _repeatedValue
22 | return AnyIterator {
23 | return repeatedValue
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchQueue+Extensions.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 10/22/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Dispatch
10 |
11 | extension DispatchQueue {
12 | private static var token: DispatchSpecificKey<()> = {
13 | let key = DispatchSpecificKey<()>()
14 | DispatchQueue.main.setSpecific(key: key, value: ())
15 | return key
16 | }()
17 |
18 | static var isMain: Bool {
19 | return DispatchQueue.getSpecific(key: token) != nil
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/Platform/RecursiveLock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RecursiveLock.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 12/18/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NSRecursiveLock
10 |
11 | #if TRACE_RESOURCES
12 | class RecursiveLock: NSRecursiveLock {
13 | override init() {
14 | _ = Resources.incrementTotal()
15 | super.init()
16 | }
17 |
18 | override func lock() {
19 | super.lock()
20 | _ = Resources.incrementTotal()
21 | }
22 |
23 | override func unlock() {
24 | super.unlock()
25 | _ = Resources.decrementTotal()
26 | }
27 |
28 | deinit {
29 | _ = Resources.decrementTotal()
30 | }
31 | }
32 | #else
33 | typealias RecursiveLock = NSRecursiveLock
34 | #endif
35 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Common/NSLayoutConstraint+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/6/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !os(Linux)
10 |
11 | #if os(macOS)
12 | import Cocoa
13 | #else
14 | import UIKit
15 | #endif
16 |
17 | #if !RX_NO_MODULE
18 | import RxSwift
19 | #endif
20 |
21 | #if os(iOS) || os(macOS) || os(tvOS)
22 | extension Reactive where Base: NSLayoutConstraint {
23 | /// Bindable sink for `constant` property.
24 | public var constant: UIBindingObserver {
25 | return UIBindingObserver(UIElement: self.base) { constraint, constant in
26 | constraint.constant = constant
27 | }
28 | }
29 |
30 | /// Bindable sink for `active` property.
31 | @available(iOS 8, OSX 10.10, *)
32 | public var active: UIBindingObserver {
33 | return UIBindingObserver(UIElement: self.base) { constraint, value in
34 | constraint.isActive = value
35 | }
36 | }
37 | }
38 |
39 | #endif
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Common/RxTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTarget.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NSObject
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 |
15 | class RxTarget : NSObject
16 | , Disposable {
17 |
18 | private var retainSelf: RxTarget?
19 |
20 | override init() {
21 | super.init()
22 | self.retainSelf = self
23 |
24 | #if TRACE_RESOURCES
25 | _ = Resources.incrementTotal()
26 | #endif
27 |
28 | #if DEBUG
29 | MainScheduler.ensureExecutingOnScheduler()
30 | #endif
31 | }
32 |
33 | func dispose() {
34 | #if DEBUG
35 | MainScheduler.ensureExecutingOnScheduler()
36 | #endif
37 | self.retainSelf = nil
38 | }
39 |
40 | #if TRACE_RESOURCES
41 | deinit {
42 | _ = Resources.decrementTotal()
43 | }
44 | #endif
45 | }
46 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SectionedViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 1/10/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.IndexPath
10 |
11 | /// Data source with access to underlying sectioned model.
12 | public protocol SectionedViewDataSourceType {
13 | /// Returns model at index path.
14 | ///
15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown.
16 |
17 | /// - parameter indexPath: Model index path
18 | /// - returns: Model at index path.
19 | func model(at indexPath: IndexPath) throws -> Any
20 | }
21 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KVORepresentable.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 11/14/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Type that is KVO representable (KVO mechanism can be used to observe it).
10 | public protocol KVORepresentable {
11 | /// Associated KVO type.
12 | associatedtype KVOType
13 |
14 | /// Constructs `Self` using KVO value.
15 | init?(KVOValue: KVOType)
16 | }
17 |
18 | extension KVORepresentable {
19 | /// Initializes `KVORepresentable` with optional value.
20 | init?(KVOValue: KVOType?) {
21 | guard let KVOValue = KVOValue else {
22 | return nil
23 | }
24 |
25 | self.init(KVOValue: KVOValue)
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Foundation/Logging.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Logging.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/3/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.URLRequest
10 |
11 | /// Simple logging settings for RxCocoa library.
12 | public struct Logging {
13 | public typealias LogURLRequest = (URLRequest) -> Bool
14 |
15 | /// Log URL requests to standard output in curl format.
16 | public static var URLRequests: LogURLRequest = { _ in
17 | #if DEBUG
18 | return true
19 | #else
20 | return false
21 | #endif
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Foundation/NotificationCenter+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NotificationCenter+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 5/2/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NotificationCenter
10 | import struct Foundation.Notification
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: NotificationCenter {
17 | /**
18 | Transforms notifications posted to notification center to observable sequence of notifications.
19 |
20 | - parameter name: Optional name used to filter notifications.
21 | - parameter object: Optional object used to filter notifications.
22 | - returns: Observable sequence of posted notifications.
23 | */
24 | public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable {
25 | return Observable.create { [weak object] observer in
26 | let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in
27 | observer.on(.next(notification))
28 | }
29 |
30 | return Disposables.create {
31 | self.base.removeObserver(nsObserver)
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Runtime/_RX.m:
--------------------------------------------------------------------------------
1 | //
2 | // _RX.m
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import "include/_RX.h"
10 |
11 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Runtime/include/RxCocoaRuntime.h:
--------------------------------------------------------------------------------
1 | //
2 | // RxCocoaRuntime.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 2/21/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "_RX.h"
11 | #import "_RXDelegateProxy.h"
12 | #import "_RXKVOObserver.h"
13 | #import "_RXObjCRuntime.h"
14 |
15 | //! Project version number for RxCocoa.
16 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
17 |
18 | //! Project version string for RxCocoa.
19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
20 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Runtime/include/_RXDelegateProxy.h:
--------------------------------------------------------------------------------
1 | //
2 | // _RXDelegateProxy.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/4/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface _RXDelegateProxy : NSObject
14 |
15 | @property (nonatomic, weak, readonly) id _forwardToDelegate;
16 |
17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate;
18 |
19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector;
20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector;
21 |
22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments;
23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Runtime/include/_RXKVOObserver.h:
--------------------------------------------------------------------------------
1 | //
2 | // _RXKVOObserver.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/11/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /**
12 | ################################################################################
13 | This file is part of RX private API
14 | ################################################################################
15 | */
16 |
17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process
18 | @interface _RXKVOObserver : NSObject
19 |
20 | -(instancetype)initWithTarget:(id)target
21 | retainTarget:(BOOL)retainTarget
22 | keyPath:(NSString*)keyPath
23 | options:(NSKeyValueObservingOptions)options
24 | callback:(void (^)(id))callback;
25 |
26 | -(void)dispose;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/RxCocoa.h:
--------------------------------------------------------------------------------
1 | //
2 | // RxCocoa.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 2/21/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "_RX.h"
11 | #import "_RXDelegateProxy.h"
12 | #import "_RXKVOObserver.h"
13 | #import "_RXObjCRuntime.h"
14 |
15 | //! Project version number for RxCocoa.
16 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
17 |
18 | //! Project version string for RxCocoa.
19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlEvent+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ControlEvent+Driver.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 9/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !RX_NO_MODULE
10 | import RxSwift
11 | #endif
12 |
13 | extension ControlEvent {
14 | /// Converts `ControlEvent` to `Driver` trait.
15 | ///
16 | /// `ControlEvent` already can't fail, so no special case needs to be handled.
17 | public func asDriver() -> Driver {
18 | return self.asDriver { (error) -> Driver in
19 | #if DEBUG
20 | rxFatalError("Somehow driver received error from a source that shouldn't fail.")
21 | #else
22 | return Driver.empty()
23 | #endif
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlProperty+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ControlProperty+Driver.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 9/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !RX_NO_MODULE
10 | import RxSwift
11 | #endif
12 |
13 | extension ControlProperty {
14 | /// Converts `ControlProperty` to `Driver` trait.
15 | ///
16 | /// `ControlProperty` already can't fail, so no special case needs to be handled.
17 | public func asDriver() -> Driver {
18 | return self.asDriver { (error) -> Driver in
19 | #if DEBUG
20 | rxFatalError("Somehow driver received error from a source that shouldn't fail.")
21 | #else
22 | return Driver.empty()
23 | #endif
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Traits/Driver/Variable+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Variable+Driver.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/28/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !RX_NO_MODULE
10 | import RxSwift
11 | #endif
12 |
13 | extension Variable {
14 | /// Converts `Variable` to `Driver` unit.
15 | ///
16 | /// - returns: Driving observable sequence.
17 | public func asDriver() -> Driver {
18 | let source = self.asObservable()
19 | .observeOn(DriverSharingStrategy.scheduler)
20 | return Driver(source)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/Traits/SharedSequence/Variable+SharedSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Variable+SharedSequence.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/28/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !RX_NO_MODULE
10 | import RxSwift
11 | #endif
12 |
13 | extension Variable {
14 | /// Converts `Variable` to `SharedSequence` unit.
15 | ///
16 | /// - returns: Observable sequence.
17 | public func asSharedSequence(strategy: SharingStrategy.Type = SharingStrategy.self) -> SharedSequence {
18 | let source = self.asObservable()
19 | .observeOn(SharingStrategy.scheduler)
20 | return SharedSequence(source)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ItemEvents.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/20/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 | import UIKit
11 |
12 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath)
13 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath)
14 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath)
15 | #endif
16 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxCollectionViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/29/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods.
17 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ {
18 |
19 | /// Type of elements that can be bound to collection view.
20 | associatedtype Element
21 |
22 | /// New observable sequence event observed.
23 | ///
24 | /// - parameter collectionView: Bound collection view.
25 | /// - parameter observedEvent: Event
26 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event) -> Void
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxPickerViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Sergey Shulga on 05/07/2017.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods.
17 | public protocol RxPickerViewDataSourceType {
18 | /// Type of elements that can be bound to picker view.
19 | associatedtype Element
20 |
21 | /// New observable sequence event observed.
22 | ///
23 | /// - parameter pickerView: Bound picker view.
24 | /// - parameter observedEvent: Event
25 | func pickerView(_ pickerView: UIPickerView, observedEvent: Event)
26 | }
27 |
28 | #endif
29 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTableViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/26/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods.
17 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ {
18 |
19 | /// Type of elements that can be bound to table view.
20 | associatedtype Element
21 |
22 | /// New observable sequence event observed.
23 | ///
24 | /// - parameter tableView: Bound table view.
25 | /// - parameter observedEvent: Event
26 | func tableView(_ tableView: UITableView, observedEvent: Event) -> Void
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxCollectionViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/29/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | public class RxCollectionViewDelegateProxy
18 | : RxScrollViewDelegateProxy
19 | , UICollectionViewDelegate
20 | , UICollectionViewDelegateFlowLayout {
21 |
22 | /// Typed parent object.
23 | public weak private(set) var collectionView: UICollectionView?
24 |
25 | /// Initializes `RxCollectionViewDelegateProxy`
26 | ///
27 | /// - parameter parentObject: Parent object for delegate proxy.
28 | public required init(parentObject: AnyObject) {
29 | self.collectionView = castOrFatalError(parentObject)
30 | super.init(parentObject: parentObject)
31 | }
32 | }
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxPickerViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Segii Shulga on 5/12/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | public class RxPickerViewDelegateProxy
17 | : DelegateProxy
18 | , DelegateProxyType
19 | , UIPickerViewDelegate {
20 |
21 | /// For more information take a look at `DelegateProxyType`.
22 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
23 | let pickerView: UIPickerView = castOrFatalError(object)
24 | return pickerView.createRxDelegateProxy()
25 | }
26 |
27 | /// For more information take a look at `DelegateProxyType`.
28 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
29 | let pickerView: UIPickerView = castOrFatalError(object)
30 | pickerView.delegate = castOptionalOrFatalError(delegate)
31 | }
32 |
33 | /// For more information take a look at `DelegateProxyType`.
34 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
35 | let pickerView: UIPickerView = castOrFatalError(object)
36 | return pickerView.delegate
37 | }
38 | }
39 | #endif
40 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxSearchBarDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/4/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | public class RxSearchBarDelegateProxy
18 | : DelegateProxy
19 | , UISearchBarDelegate
20 | , DelegateProxyType {
21 |
22 | /// For more information take a look at `DelegateProxyType`.
23 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
24 | let searchBar: UISearchBar = castOrFatalError(object)
25 | return searchBar.delegate
26 | }
27 |
28 | /// For more information take a look at `DelegateProxyType`.
29 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
30 | let searchBar: UISearchBar = castOrFatalError(object)
31 | searchBar.delegate = castOptionalOrFatalError(delegate)
32 | }
33 |
34 | // MARK: Delegate proxy methods
35 |
36 | #if os(iOS)
37 | /// For more information take a look at `DelegateProxyType`.
38 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
39 | let searchBar: UISearchBar = castOrFatalError(object)
40 | return searchBar.createRxDelegateProxy()
41 | }
42 | #endif
43 |
44 | }
45 |
46 | #endif
47 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxSearchControllerDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Segii Shulga on 3/17/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | @available(iOS 8.0, *)
18 | public class RxSearchControllerDelegateProxy
19 | : DelegateProxy
20 | , DelegateProxyType
21 | , UISearchControllerDelegate {
22 |
23 | /// For more information take a look at `DelegateProxyType`.
24 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
25 | let pickerView: UISearchController = castOrFatalError(object)
26 | return pickerView.createRxDelegateProxy()
27 | }
28 |
29 | /// For more information take a look at `DelegateProxyType`.
30 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
31 | let searchController: UISearchController = castOrFatalError(object)
32 | searchController.delegate = castOptionalOrFatalError(delegate)
33 | }
34 |
35 | /// For more information take a look at `DelegateProxyType`.
36 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
37 | let searchController: UISearchController = castOrFatalError(object)
38 | return searchController.delegate
39 | }
40 |
41 | }
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTabBarControllerDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Yusuke Kita on 2016/12/07.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | public class RxTabBarControllerDelegateProxy
18 | : DelegateProxy
19 | , UITabBarControllerDelegate
20 | , DelegateProxyType {
21 |
22 | /// For more information take a look at `DelegateProxyType`.
23 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
24 | let tabBarController: UITabBarController = castOrFatalError(object)
25 | return tabBarController.delegate
26 | }
27 |
28 | /// For more information take a look at `DelegateProxyType`.
29 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
30 | let tabBarController: UITabBarController = castOrFatalError(object)
31 | tabBarController.delegate = castOptionalOrFatalError(delegate)
32 | }
33 |
34 | /// For more information take a look at `DelegateProxyType`.
35 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
36 | let tabBarController: UITabBarController = castOrFatalError(object)
37 | return tabBarController.createRxDelegateProxy()
38 | }
39 | }
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTabBarDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Jesse Farless on 5/14/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | public class RxTabBarDelegateProxy
18 | : DelegateProxy
19 | , UITabBarDelegate
20 | , DelegateProxyType {
21 |
22 | /// For more information take a look at `DelegateProxyType`.
23 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
24 | let tabBar: UITabBar = castOrFatalError(object)
25 | return tabBar.delegate
26 | }
27 |
28 | /// For more information take a look at `DelegateProxyType`.
29 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
30 | let tabBar: UITabBar = castOrFatalError(object)
31 | tabBar.delegate = castOptionalOrFatalError(delegate)
32 | }
33 |
34 | /// For more information take a look at `DelegateProxyType`.
35 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
36 | let tabBar: UITabBar = castOrFatalError(object)
37 | return tabBar.createRxDelegateProxy()
38 | }
39 |
40 | }
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTableViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/15/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | public class RxTableViewDelegateProxy
18 | : RxScrollViewDelegateProxy
19 | , UITableViewDelegate {
20 |
21 |
22 | /// Typed parent object.
23 | public weak private(set) var tableView: UITableView?
24 |
25 | /// Initializes `RxTableViewDelegateProxy`
26 | ///
27 | /// - parameter parentObject: Parent object for delegate proxy.
28 | public required init(parentObject: AnyObject) {
29 | self.tableView = castOrFatalError(parentObject)
30 | super.init(parentObject: parentObject)
31 | }
32 |
33 | }
34 |
35 | #endif
36 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTextStorageDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Segii Shulga on 12/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | public class RxTextStorageDelegateProxy
17 | : DelegateProxy
18 | , DelegateProxyType
19 | , NSTextStorageDelegate {
20 |
21 | /// For more information take a look at `DelegateProxyType`.
22 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
23 | let pickerView: NSTextStorage = castOrFatalError(object)
24 | return pickerView.createRxDelegateProxy()
25 | }
26 |
27 | /// For more information take a look at `DelegateProxyType`.
28 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
29 | let textStorage: NSTextStorage = castOrFatalError(object)
30 | textStorage.delegate = castOptionalOrFatalError(delegate)
31 | }
32 |
33 | /// For more information take a look at `DelegateProxyType`.
34 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
35 | let textStorage: NSTextStorage = castOrFatalError(object)
36 | return textStorage.delegate
37 | }
38 | }
39 | #endif
40 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTextViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Yuta ToKoRo on 7/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | /// For more information take a look at `DelegateProxyType`.
17 | public class RxTextViewDelegateProxy
18 | : RxScrollViewDelegateProxy
19 | , UITextViewDelegate {
20 |
21 | /// Typed parent object.
22 | public weak private(set) var textView: UITextView?
23 |
24 | /// Initializes `RxTextViewDelegateProxy`
25 | ///
26 | /// - parameter parentObject: Parent object for delegate proxy.
27 | public required init(parentObject: AnyObject) {
28 | self.textView = castOrFatalError(parentObject)
29 | super.init(parentObject: parentObject)
30 | }
31 |
32 | // MARK: delegate methods
33 |
34 | /// For more information take a look at `DelegateProxyType`.
35 | @objc public func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
36 | /**
37 | We've had some issues with observing text changes. This is here just in case we need the same hack in future and that
38 | we wouldn't need to change the public interface.
39 | */
40 | let forwardToDelegate = self.forwardToDelegate() as? UITextViewDelegate
41 | return forwardToDelegate?.textView?(textView,
42 | shouldChangeTextIn: range,
43 | replacementText: text) ?? true
44 | }
45 | }
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxWebViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 9/26/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | public class RxWebViewDelegateProxy
17 | : DelegateProxy
18 | , DelegateProxyType
19 | , UIWebViewDelegate {
20 |
21 | /// For more information take a look at `DelegateProxyType`.
22 | public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
23 | let pickerView: UIWebView = castOrFatalError(object)
24 | return pickerView.createRxDelegateProxy()
25 | }
26 |
27 | /// For more information take a look at `DelegateProxyType`.
28 | public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
29 | let webView: UIWebView = castOrFatalError(object)
30 | webView.delegate = castOptionalOrFatalError(delegate)
31 | }
32 |
33 | /// For more information take a look at `DelegateProxyType`.
34 | public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
35 | let webView: UIWebView = castOrFatalError(object)
36 | return webView.delegate
37 | }
38 |
39 |
40 | }
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIActivityIndicatorView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Ivan Persidskiy on 02/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UIActivityIndicatorView {
17 |
18 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods.
19 | public var isAnimating: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { activityIndicator, active in
21 | if active {
22 | activityIndicator.startAnimating()
23 | } else {
24 | activityIndicator.stopAnimating()
25 | }
26 | }
27 | }
28 |
29 | }
30 |
31 | #endif
32 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIAlertAction+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIAlertAction+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 5/7/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 |
13 | #if !RX_NO_MODULE
14 | import RxSwift
15 | #endif
16 |
17 | extension Reactive where Base: UIAlertAction {
18 |
19 | /// Bindable sink for `enabled` property.
20 | public var isEnabled: UIBindingObserver {
21 | return UIBindingObserver(UIElement: self.base) { alertAction, value in
22 | alertAction.isEnabled = value
23 | }
24 | }
25 |
26 | }
27 |
28 | #endif
29 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIApplication+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIApplication+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Mads Bøgeskov on 18/01/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UIApplication {
17 |
18 | /// Bindable sink for `networkActivityIndicatorVisible`.
19 | public var isNetworkActivityIndicatorVisible: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { application, active in
21 | application.isNetworkActivityIndicatorVisible = active
22 | }
23 | }
24 | }
25 | #endif
26 |
27 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIDatePicker+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIDatePicker+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Daniel Tartaglia on 5/31/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UIDatePicker {
17 | /// Reactive wrapper for `date` property.
18 | public var date: ControlProperty {
19 | return value
20 | }
21 |
22 | /// Reactive wrapper for `date` property.
23 | public var value: ControlProperty {
24 | return UIControl.rx.value(
25 | self.base,
26 | getter: { datePicker in
27 | datePicker.date
28 | }, setter: { datePicker, value in
29 | datePicker.date = value
30 | }
31 | )
32 | }
33 |
34 | /// Reactive wrapper for `countDownDuration` property.
35 | public var countDownDuration: ControlProperty {
36 | return UIControl.rx.value(
37 | self.base,
38 | getter: { datePicker in
39 | datePicker.countDownDuration
40 | }, setter: { datePicker, value in
41 | datePicker.countDownDuration = value
42 | }
43 | )
44 | }
45 | }
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIImageView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UIImageView {
17 |
18 | /// Bindable sink for `image` property.
19 | public var image: UIBindingObserver {
20 | return image(transitionType: nil)
21 | }
22 |
23 | /// Bindable sink for `image` property.
24 |
25 | /// - parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...)
26 | public func image(transitionType: String? = nil) -> UIBindingObserver {
27 | return UIBindingObserver(UIElement: base) { imageView, image in
28 | if let transitionType = transitionType {
29 | if image != nil {
30 | let transition = CATransition()
31 | transition.duration = 0.25
32 | transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
33 | transition.type = transitionType
34 | imageView.layer.add(transition, forKey: kCATransition)
35 | }
36 | }
37 | else {
38 | imageView.layer.removeAllAnimations()
39 | }
40 | imageView.image = image
41 | }
42 | }
43 | }
44 |
45 | #endif
46 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UILabel+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UILabel+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UILabel {
17 |
18 | /// Bindable sink for `text` property.
19 | public var text: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { label, text in
21 | label.text = text
22 | }
23 | }
24 |
25 | /// Bindable sink for `attributedText` property.
26 | public var attributedText: UIBindingObserver {
27 | return UIBindingObserver(UIElement: self.base) { label, text in
28 | label.attributedText = text
29 | }
30 | }
31 |
32 | }
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UINavigationItem+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationItem+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by kumapo on 2016/05/09.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UINavigationItem {
17 |
18 | /// Bindable sink for `title` property.
19 | public var title: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { navigationItem, text in
21 | navigationItem.title = text
22 | }
23 | }
24 |
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIPageControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIPageControl+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Francesco Puntillo on 14/04/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UIPageControl {
17 |
18 | /// Bindable sink for `currentPage` property.
19 | public var currentPage: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { controller, page in
21 | controller.currentPage = page
22 | }
23 | }
24 |
25 | /// Bindable sink for `numberOfPages` property.
26 | public var numberOfPages: UIBindingObserver {
27 | return UIBindingObserver(UIElement: self.base) { controller, page in
28 | controller.numberOfPages = page
29 | }
30 | }
31 |
32 | }
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIProgressView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIProgressView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Samuel Bae on 2/27/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UIProgressView {
17 |
18 | /// Bindable sink for `progress` property
19 | public var progress: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { progressView, progress in
21 | progressView.progress = progress
22 | }
23 | }
24 |
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIRefreshControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIRefreshControl+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Yosuke Ishikawa on 1/31/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UIRefreshControl {
17 |
18 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods.
19 | @available(*, deprecated, renamed: "isRefreshing")
20 | public var refreshing: UIBindingObserver {
21 | return self.isRefreshing
22 | }
23 |
24 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods.
25 | public var isRefreshing: UIBindingObserver {
26 | return UIBindingObserver(UIElement: self.base) { refreshControl, refresh in
27 | if refresh {
28 | refreshControl.beginRefreshing()
29 | } else {
30 | refreshControl.endRefreshing()
31 | }
32 | }
33 | }
34 |
35 | }
36 |
37 | #endif
38 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UISegmentedControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISegmentedControl+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Carlos García on 8/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 |
17 | extension Reactive where Base: UISegmentedControl {
18 | /// Reactive wrapper for `selectedSegmentIndex` property.
19 | public var selectedSegmentIndex: ControlProperty {
20 | return value
21 | }
22 |
23 | /// Reactive wrapper for `selectedSegmentIndex` property.
24 | public var value: ControlProperty {
25 | return UIControl.rx.value(
26 | self.base,
27 | getter: { segmentedControl in
28 | segmentedControl.selectedSegmentIndex
29 | }, setter: { segmentedControl, value in
30 | segmentedControl.selectedSegmentIndex = value
31 | }
32 | )
33 | }
34 |
35 | }
36 |
37 | #endif
38 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UISlider+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISlider+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Alexander van der Werff on 28/05/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UISlider {
17 |
18 | /// Reactive wrapper for `value` property.
19 | public var value: ControlProperty {
20 | return UIControl.rx.value(
21 | self.base,
22 | getter: { slider in
23 | slider.value
24 | }, setter: { slider, value in
25 | slider.value = value
26 | }
27 | )
28 | }
29 |
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIStepper+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIStepper+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Yuta ToKoRo on 9/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UIStepper {
17 |
18 | /// Reactive wrapper for `value` property.
19 | public var value: ControlProperty {
20 | return UIControl.rx.value(
21 | self.base,
22 | getter: { stepper in
23 | stepper.value
24 | }, setter: { stepper, value in
25 | stepper.value = value
26 | }
27 | )
28 | }
29 |
30 | }
31 |
32 | #endif
33 |
34 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISwitch+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Carlos García on 8/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 |
17 | extension Reactive where Base: UISwitch {
18 |
19 | /// Reactive wrapper for `isOn` property.
20 | public var isOn: ControlProperty {
21 | return value
22 | }
23 |
24 | /**
25 | Reactive wrapper for `isOn` property.
26 |
27 | **⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`s, so on those versions
28 | underlying observable sequence won't complete when nothing holds a strong reference
29 | to UISwitch.⚠️**
30 | */
31 | public var value: ControlProperty {
32 | return UIControl.rx.value(
33 | self.base,
34 | getter: { uiSwitch in
35 | uiSwitch.isOn
36 | }, setter: { uiSwitch, value in
37 | uiSwitch.isOn = value
38 | }
39 | )
40 | }
41 |
42 | }
43 |
44 | #endif
45 |
46 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UITabBarItem+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabBarItem+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Mateusz Derks on 04/03/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UITabBarItem {
17 |
18 | /// Bindable sink for `badgeValue` property.
19 | public var badgeValue: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { tabBarItem, badgeValue in
21 | tabBarItem.badgeValue = badgeValue
22 | }
23 | }
24 |
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UITextField+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITextField+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 2/21/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | #if !RX_NO_MODULE
12 | import RxSwift
13 | #endif
14 | import UIKit
15 |
16 | extension Reactive where Base: UITextField {
17 | /// Reactive wrapper for `text` property.
18 | public var text: ControlProperty {
19 | return value
20 | }
21 |
22 | /// Reactive wrapper for `text` property.
23 | public var value: ControlProperty {
24 | return UIControl.rx.value(
25 | base,
26 | getter: { textField in
27 | textField.text
28 | }, setter: { textField, value in
29 | // This check is important because setting text value always clears control state
30 | // including marked text selection which is imporant for proper input
31 | // when IME input method is used.
32 | if textField.text != value {
33 | textField.text = value
34 | }
35 | }
36 | )
37 | }
38 |
39 | }
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/6/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UIView {
17 | /// Bindable sink for `hidden` property.
18 | public var isHidden: UIBindingObserver {
19 | return UIBindingObserver(UIElement: self.base) { view, hidden in
20 | view.isHidden = hidden
21 | }
22 | }
23 |
24 | /// Bindable sink for `alpha` property.
25 | public var alpha: UIBindingObserver {
26 | return UIBindingObserver(UIElement: self.base) { view, alpha in
27 | view.alpha = alpha
28 | }
29 | }
30 |
31 | /// Bindable sink for `isUserInteractionEnabled` property.
32 | public var isUserInteractionEnabled: UIBindingObserver {
33 | return UIBindingObserver(UIElement: self.base) { view, userInteractionEnabled in
34 | view.isUserInteractionEnabled = userInteractionEnabled
35 | }
36 | }
37 |
38 | }
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/Pods/RxCocoa/RxCocoa/iOS/UIViewController+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Kyle Fuller on 27/05/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 | import UIKit
11 |
12 | #if !RX_NO_MODULE
13 | import RxSwift
14 | #endif
15 |
16 | extension Reactive where Base: UIViewController {
17 |
18 | /// Bindable sink for `title`.
19 | public var title: UIBindingObserver {
20 | return UIBindingObserver(UIElement: self.base) { viewController, title in
21 | viewController.title = title
22 | }
23 | }
24 |
25 | }
26 | #endif
27 |
--------------------------------------------------------------------------------
/Pods/RxSwift/LICENSE.md:
--------------------------------------------------------------------------------
1 | **The MIT License**
2 | **Copyright © 2015 Krunoslav Zaher**
3 | **All rights reserved.**
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InfiniteSequence.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 6/13/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Sequence that repeats `repeatedValue` infinite number of times.
10 | struct InfiniteSequence : Sequence {
11 | typealias Element = E
12 | typealias Iterator = AnyIterator
13 |
14 | private let _repeatedValue: E
15 |
16 | init(repeatedValue: E) {
17 | _repeatedValue = repeatedValue
18 | }
19 |
20 | func makeIterator() -> Iterator {
21 | let repeatedValue = _repeatedValue
22 | return AnyIterator {
23 | return repeatedValue
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchQueue+Extensions.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 10/22/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Dispatch
10 |
11 | extension DispatchQueue {
12 | private static var token: DispatchSpecificKey<()> = {
13 | let key = DispatchSpecificKey<()>()
14 | DispatchQueue.main.setSpecific(key: key, value: ())
15 | return key
16 | }()
17 |
18 | static var isMain: Bool {
19 | return DispatchQueue.getSpecific(key: token) != nil
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Pods/RxSwift/Platform/RecursiveLock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RecursiveLock.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 12/18/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NSRecursiveLock
10 |
11 | #if TRACE_RESOURCES
12 | class RecursiveLock: NSRecursiveLock {
13 | override init() {
14 | _ = Resources.incrementTotal()
15 | super.init()
16 | }
17 |
18 | override func lock() {
19 | super.lock()
20 | _ = Resources.incrementTotal()
21 | }
22 |
23 | override func unlock() {
24 | super.unlock()
25 | _ = Resources.decrementTotal()
26 | }
27 |
28 | deinit {
29 | _ = Resources.decrementTotal()
30 | }
31 | }
32 | #else
33 | typealias RecursiveLock = NSRecursiveLock
34 | #endif
35 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Cancelable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Cancelable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents disposable resource with state tracking.
10 | public protocol Cancelable : Disposable {
11 | /// Was resource disposed.
12 | var isDisposed: Bool { get }
13 | }
14 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Concurrency/Lock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Lock.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/31/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol Lock {
10 | func lock()
11 | func unlock()
12 | }
13 |
14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html
15 | typealias SpinLock = RecursiveLock
16 |
17 | extension RecursiveLock : Lock {
18 | @inline(__always)
19 | final func performLocked(_ action: () -> Void) {
20 | lock(); defer { unlock() }
21 | action()
22 | }
23 |
24 | @inline(__always)
25 | final func calculateLocked(_ action: () -> T) -> T {
26 | lock(); defer { unlock() }
27 | return action()
28 | }
29 |
30 | @inline(__always)
31 | final func calculateLockedOrFail(_ action: () throws -> T) throws -> T {
32 | lock(); defer { unlock() }
33 | let result = try action()
34 | return result
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LockOwnerType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol LockOwnerType : class, Lock {
10 | var _lock: RecursiveLock { get }
11 | }
12 |
13 | extension LockOwnerType {
14 | func lock() {
15 | _lock.lock()
16 | }
17 |
18 | func unlock() {
19 | _lock.unlock()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedDisposeType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedDisposeType : class, Disposable, Lock {
10 | func _synchronized_dispose()
11 | }
12 |
13 | extension SynchronizedDisposeType {
14 | func synchronizedDispose() {
15 | lock(); defer { unlock() }
16 | _synchronized_dispose()
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedOnType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedOnType : class, ObserverType, Lock {
10 | func _synchronized_on(_ event: Event)
11 | }
12 |
13 | extension SynchronizedOnType {
14 | func synchronizedOn(_ event: Event) {
15 | lock(); defer { unlock() }
16 | _synchronized_on(event)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Concurrency/SynchronizedSubscribeType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedSubscribeType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedSubscribeType : class, ObservableType, Lock {
10 | func _synchronized_subscribe(_ observer: O) -> Disposable where O.E == E
11 | }
12 |
13 | extension SynchronizedSubscribeType {
14 | func synchronizedSubscribe(_ observer: O) -> Disposable where O.E == E {
15 | lock(); defer { unlock() }
16 | return _synchronized_subscribe(observer)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedUnsubscribeType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedUnsubscribeType : class {
10 | associatedtype DisposeKey
11 |
12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey)
13 | }
14 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/ConnectableObservableType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ConnectableObservableType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /**
10 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence.
11 | */
12 | public protocol ConnectableObservableType : ObservableType {
13 | /**
14 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.
15 |
16 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.
17 | */
18 | func connect() -> Disposable
19 | }
20 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Disposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Disposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Respresents a disposable resource.
10 | public protocol Disposable {
11 | /// Dispose resource.
12 | func dispose()
13 | }
14 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BooleanDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Junior B. on 10/29/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents a disposable resource that can be checked for disposal status.
10 | public final class BooleanDisposable : Cancelable {
11 |
12 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true)
13 | private var _isDisposed = false
14 |
15 | /// Initializes a new instance of the `BooleanDisposable` class
16 | public init() {
17 | }
18 |
19 | /// Initializes a new instance of the `BooleanDisposable` class with given value
20 | public init(isDisposed: Bool) {
21 | self._isDisposed = isDisposed
22 | }
23 |
24 | /// - returns: Was resource disposed.
25 | public var isDisposed: Bool {
26 | return _isDisposed
27 | }
28 |
29 | /// Sets the status to disposed, which can be observer through the `isDisposed` property.
30 | public func dispose() {
31 | _isDisposed = true
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Disposables/Disposables.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Disposables.swift
3 | // RxSwift
4 | //
5 | // Created by Mohsen Ramezanpoor on 01/08/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// A collection of utility methods for common disposable operations.
10 | public struct Disposables {
11 | private init() {}
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DisposeBase.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 4/4/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Base class for all disposables.
10 | public class DisposeBase {
11 | init() {
12 | #if TRACE_RESOURCES
13 | let _ = Resources.incrementTotal()
14 | #endif
15 | }
16 |
17 | deinit {
18 | #if TRACE_RESOURCES
19 | let _ = Resources.decrementTotal()
20 | #endif
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NopDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/15/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents a disposable that does nothing on disposal.
10 | ///
11 | /// Nop = No Operation
12 | fileprivate struct NopDisposable : Disposable {
13 |
14 | fileprivate static let noOp: Disposable = NopDisposable()
15 |
16 | fileprivate init() {
17 |
18 | }
19 |
20 | /// Does nothing.
21 | public func dispose() {
22 | }
23 | }
24 |
25 | extension Disposables {
26 | /**
27 | Creates a disposable that does nothing on disposal.
28 | */
29 | static public func create() -> Disposable {
30 | return NopDisposable.noOp
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SubscriptionDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct SubscriptionDisposable : Disposable {
10 | private let _key: T.DisposeKey
11 | private weak var _owner: T?
12 |
13 | init(owner: T, key: T.DisposeKey) {
14 | _owner = owner
15 | _key = key
16 | }
17 |
18 | func dispose() {
19 | _owner?.synchronizedUnsubscribe(_key)
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Bag+Rx.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/19/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 |
10 | // MARK: forEach
11 |
12 | @inline(__always)
13 | func dispatch(_ bag: Bag<(Event) -> ()>, _ event: Event) {
14 | if bag._onlyFastPath {
15 | bag._value0?(event)
16 | return
17 | }
18 |
19 | let value0 = bag._value0
20 | let dictionary = bag._dictionary
21 |
22 | if let value0 = value0 {
23 | value0(event)
24 | }
25 |
26 | let pairs = bag._pairs
27 | for i in 0 ..< pairs.count {
28 | pairs[i].value(event)
29 | }
30 |
31 | if let dictionary = dictionary {
32 | for element in dictionary.values {
33 | element(event)
34 | }
35 | }
36 | }
37 |
38 | /// Dispatches `dispose` to all disposables contained inside bag.
39 | func disposeAll(in bag: Bag) {
40 | if bag._onlyFastPath {
41 | bag._value0?.dispose()
42 | return
43 | }
44 |
45 | let value0 = bag._value0
46 | let dictionary = bag._dictionary
47 |
48 | if let value0 = value0 {
49 | value0.dispose()
50 | }
51 |
52 | let pairs = bag._pairs
53 | for i in 0 ..< pairs.count {
54 | pairs[i].value.dispose()
55 | }
56 |
57 | if let dictionary = dictionary {
58 | for element in dictionary.values {
59 | element.dispose()
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Rx.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 12/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension String {
10 | /// This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)`
11 | func lastIndexOf(_ character: Character) -> Index? {
12 | var index = endIndex
13 | while index > startIndex {
14 | index = self.index(before: index)
15 | if self[index] == character {
16 | return index
17 | }
18 | }
19 |
20 | return nil
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/GroupedObservable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GroupedObservable.swift
3 | // RxSwift
4 | //
5 | // Created by Tomi Koskinen on 01/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents an observable sequence of elements that have a common key.
10 | public struct GroupedObservable : ObservableType {
11 | public typealias E = Element
12 |
13 | /// Gets the common key.
14 | public let key: Key
15 |
16 | private let source: Observable
17 |
18 | /// Initializes grouped observable sequence with key and source observable sequence.
19 | ///
20 | /// - parameter key: Grouped observable sequence key
21 | /// - parameter source: Observable sequence that represents sequence of elements for the key
22 | /// - returns: Grouped observable sequence of elements for the specific key
23 | public init(key: Key, source: Observable) {
24 | self.key = key
25 | self.source = source
26 | }
27 |
28 | /// Subscribes `observer` to receive events for this sequence.
29 | public func subscribe(_ observer: O) -> Disposable where O.E == E {
30 | return self.source.subscribe(observer)
31 | }
32 |
33 | /// Converts `self` to `Observable` sequence.
34 | public func asObservable() -> Observable {
35 | return source
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImmediateSchedulerType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 5/31/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents an object that immediately schedules units of work.
10 | public protocol ImmediateSchedulerType {
11 | /**
12 | Schedules an action to be executed immediately.
13 |
14 | - parameter state: State passed to the action to be executed.
15 | - parameter action: Action to be executed.
16 | - returns: The disposable object used to cancel the scheduled action (best effort).
17 | */
18 | func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable
19 | }
20 |
21 | extension ImmediateSchedulerType {
22 | /**
23 | Schedules an action to be executed recursively.
24 |
25 | - parameter state: State passed to the action to be executed.
26 | - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.
27 | - returns: The disposable object used to cancel the scheduled action (best effort).
28 | */
29 | public func scheduleRecursive(_ state: State, action: @escaping (_ state: State, _ recurse: (State) -> ()) -> ()) -> Disposable {
30 | let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self)
31 |
32 | recursiveScheduler.schedule(state)
33 |
34 | return Disposables.create(with: recursiveScheduler.dispose)
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Observable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// A type-erased `ObservableType`.
10 | ///
11 | /// It represents a push style sequence.
12 | public class Observable : ObservableType {
13 | /// Type of elements in sequence.
14 | public typealias E = Element
15 |
16 | init() {
17 | #if TRACE_RESOURCES
18 | let _ = Resources.incrementTotal()
19 | #endif
20 | }
21 |
22 | public func subscribe(_ observer: O) -> Disposable where O.E == E {
23 | rxAbstractMethod()
24 | }
25 |
26 | public func asObservable() -> Observable {
27 | return self
28 | }
29 |
30 | deinit {
31 | #if TRACE_RESOURCES
32 | let _ = Resources.decrementTotal()
33 | #endif
34 | }
35 |
36 | // this is kind of ugly I know :(
37 | // Swift compiler reports "Not supported yet" when trying to override protocol extensions, so ¯\_(ツ)_/¯
38 |
39 | /// Optimizations for map operator
40 | internal func composeMap(_ transform: @escaping (Element) throws -> R) -> Observable {
41 | return _map(source: self, transform: transform)
42 | }
43 | }
44 |
45 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObservableConvertibleType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 9/17/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Type that can be converted to observable sequence (`Observable`).
10 | public protocol ObservableConvertibleType {
11 | /// Type of elements in sequence.
12 | associatedtype E
13 |
14 | /// Converts `self` to `Observable` sequence.
15 | ///
16 | /// - returns: Observable sequence that represents `self`.
17 | func asObservable() -> Observable
18 | }
19 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observables/AddRef.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AddRef.swift
3 | // RxSwift
4 | //
5 | // Created by Junior B. on 30/10/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | final class AddRefSink : Sink, ObserverType {
10 | typealias Element = O.E
11 |
12 | override init(observer: O, cancel: Cancelable) {
13 | super.init(observer: observer, cancel: cancel)
14 | }
15 |
16 | func on(_ event: Event) {
17 | switch event {
18 | case .next(_):
19 | forwardOn(event)
20 | case .completed, .error(_):
21 | forwardOn(event)
22 | dispose()
23 | }
24 | }
25 | }
26 |
27 | final class AddRef : Producer {
28 | typealias EventHandler = (Event) throws -> Void
29 |
30 | private let _source: Observable
31 | private let _refCount: RefCountDisposable
32 |
33 | init(source: Observable, refCount: RefCountDisposable) {
34 | _source = source
35 | _refCount = refCount
36 | }
37 |
38 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
39 | let releaseDisposable = _refCount.retain()
40 | let sink = AddRefSink(observer: observer, cancel: cancel)
41 | let subscription = Disposables.create(releaseDisposable, _source.subscribe(sink))
42 |
43 | return (sink: sink, subscription: subscription)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AsMaybe.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/12/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | fileprivate final class AsMaybeSink : Sink, ObserverType {
10 | typealias ElementType = O.E
11 | typealias E = ElementType
12 |
13 | private var _element: Event? = nil
14 |
15 | func on(_ event: Event) {
16 | switch event {
17 | case .next:
18 | if _element != nil {
19 | forwardOn(.error(RxError.moreThanOneElement))
20 | dispose()
21 | }
22 |
23 | _element = event
24 | case .error:
25 | forwardOn(event)
26 | dispose()
27 | case .completed:
28 | if let element = _element {
29 | forwardOn(element)
30 | }
31 | forwardOn(.completed)
32 | dispose()
33 | }
34 | }
35 | }
36 |
37 | final class AsMaybe: Producer {
38 | fileprivate let _source: Observable
39 |
40 | init(source: Observable) {
41 | _source = source
42 | }
43 |
44 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
45 | let sink = AsMaybeSink(observer: observer, cancel: cancel)
46 | let subscription = _source.subscribe(sink)
47 | return (sink: sink, subscription: subscription)
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observables/Empty.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Empty.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension Observable {
10 | /**
11 | Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message.
12 |
13 | - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)
14 |
15 | - returns: An observable sequence with no elements.
16 | */
17 | public static func empty() -> Observable {
18 | return EmptyProducer()
19 | }
20 | }
21 |
22 | final fileprivate class EmptyProducer : Producer {
23 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
24 | observer.on(.completed)
25 | return Disposables.create()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observables/Error.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Error.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension Observable {
10 | /**
11 | Returns an observable sequence that terminates with an `error`.
12 |
13 | - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)
14 |
15 | - returns: The observable sequence that terminates with specified error.
16 | */
17 | public static func error(_ error: Swift.Error) -> Observable {
18 | return ErrorProducer(error: error)
19 | }
20 | }
21 |
22 | final fileprivate class ErrorProducer : Producer {
23 | private let _error: Swift.Error
24 |
25 | init(error: Swift.Error) {
26 | _error = error
27 | }
28 |
29 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
30 | observer.on(.error(_error))
31 | return Disposables.create()
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observables/Never.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Never.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension Observable {
10 |
11 | /**
12 | Returns a non-terminating observable sequence, which can be used to denote an infinite duration.
13 |
14 | - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)
15 |
16 | - returns: An observable sequence whose observers will never get called.
17 | */
18 | public static func never() -> Observable {
19 | return NeverProducer()
20 | }
21 | }
22 |
23 | final fileprivate class NeverProducer : Producer {
24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
25 | return Disposables.create()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observables/StartWith.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StartWith.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 4/6/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 |
11 | /**
12 | Prepends a sequence of values to an observable sequence.
13 |
14 | - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html)
15 |
16 | - parameter elements: Elements to prepend to the specified sequence.
17 | - returns: The source sequence prepended with the specified values.
18 | */
19 | public func startWith(_ elements: E ...)
20 | -> Observable {
21 | return StartWith(source: self.asObservable(), elements: elements)
22 | }
23 | }
24 |
25 | final fileprivate class StartWith: Producer {
26 | let elements: [Element]
27 | let source: Observable
28 |
29 | init(source: Observable, elements: [Element]) {
30 | self.source = source
31 | self.elements = elements
32 | super.init()
33 | }
34 |
35 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
36 | for e in elements {
37 | observer.on(.next(e))
38 | }
39 |
40 | return (sink: Disposables.create(), subscription: source.subscribe(observer))
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/ObserverType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObserverType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Supports push-style iteration over an observable sequence.
10 | public protocol ObserverType {
11 | /// The type of elements in sequence that observer can observe.
12 | associatedtype E
13 |
14 | /// Notify observer about sequence event.
15 | ///
16 | /// - parameter event: Event that occurred.
17 | func on(_ event: Event)
18 | }
19 |
20 | /// Convenience API extensions to provide alternate next, error, completed events
21 | extension ObserverType {
22 |
23 | /// Convenience method equivalent to `on(.next(element: E))`
24 | ///
25 | /// - parameter element: Next element to send to observer(s)
26 | public final func onNext(_ element: E) {
27 | on(.next(element))
28 | }
29 |
30 | /// Convenience method equivalent to `on(.completed)`
31 | public final func onCompleted() {
32 | on(.completed)
33 | }
34 |
35 | /// Convenience method equivalent to `on(.error(Swift.Error))`
36 | /// - parameter error: Swift.Error to send to observer(s)
37 | public final func onError(_ error: Swift.Error) {
38 | on(.error(error))
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AnonymousObserver.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | final class AnonymousObserver : ObserverBase {
10 | typealias Element = ElementType
11 |
12 | typealias EventHandler = (Event) -> Void
13 |
14 | private let _eventHandler : EventHandler
15 |
16 | init(_ eventHandler: @escaping EventHandler) {
17 | #if TRACE_RESOURCES
18 | let _ = Resources.incrementTotal()
19 | #endif
20 | _eventHandler = eventHandler
21 | }
22 |
23 | override func onCore(_ event: Event) {
24 | return _eventHandler(event)
25 | }
26 |
27 | #if TRACE_RESOURCES
28 | deinit {
29 | let _ = Resources.decrementTotal()
30 | }
31 | #endif
32 | }
33 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObserverBase.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/15/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | class ObserverBase : Disposable, ObserverType {
10 | typealias E = ElementType
11 |
12 | private var _isStopped: AtomicInt = 0
13 |
14 | func on(_ event: Event) {
15 | switch event {
16 | case .next:
17 | if _isStopped == 0 {
18 | onCore(event)
19 | }
20 | case .error, .completed:
21 | if AtomicCompareAndSwap(0, 1, &_isStopped) {
22 | onCore(event)
23 | }
24 | }
25 | }
26 |
27 | func onCore(_ event: Event) {
28 | rxAbstractMethod()
29 | }
30 |
31 | func dispose() {
32 | _ = AtomicCompareAndSwap(0, 1, &_isStopped)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/RxMutableBox.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxMutableBox.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 5/22/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Creates mutable reference wrapper for any type.
10 | final class RxMutableBox : CustomDebugStringConvertible {
11 | /// Wrapped value
12 | var value : T
13 |
14 | /// Creates reference wrapper for `value`.
15 | ///
16 | /// - parameter value: Value to wrap.
17 | init (_ value: T) {
18 | self.value = value
19 | }
20 | }
21 |
22 | extension RxMutableBox {
23 | /// - returns: Box description.
24 | var debugDescription: String {
25 | return "MutatingBox(\(self.value))"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HistoricalScheduler.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 12/27/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.Date
10 |
11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` for relative time.
12 | public class HistoricalScheduler : VirtualTimeScheduler {
13 |
14 | /**
15 | Creates a new historical scheduler with initial clock value.
16 |
17 | - parameter initialClock: Initial value for virtual clock.
18 | */
19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) {
20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter())
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/ImmediateScheduler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImmediateScheduler.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/17/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents an object that schedules units of work to run immediately on the current thread.
10 | private final class ImmediateScheduler : ImmediateSchedulerType {
11 |
12 | private let _asyncLock = AsyncLock()
13 |
14 | /**
15 | Schedules an action to be executed immediately.
16 |
17 | In case `schedule` is called recursively from inside of `action` callback, scheduled `action` will be enqueued
18 | and executed after current `action`. (`AsyncLock` behavior)
19 |
20 | - parameter state: State passed to the action to be executed.
21 | - parameter action: Action to be executed.
22 | - returns: The disposable object used to cancel the scheduled action (best effort).
23 | */
24 | func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {
25 | let disposable = SingleAssignmentDisposable()
26 | _asyncLock.invoke(AnonymousInvocable {
27 | if disposable.isDisposed {
28 | return
29 | }
30 | disposable.setDisposable(action(state))
31 | })
32 |
33 | return disposable
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AnonymousInvocable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct AnonymousInvocable : InvocableType {
10 | private let _action: () -> ()
11 |
12 | init(_ action: @escaping () -> ()) {
13 | _action = action
14 | }
15 |
16 | func invoke() {
17 | _action()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InvocableScheduledItem.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct InvocableScheduledItem : InvocableType {
10 |
11 | let _invocable: I
12 | let _state: I.Value
13 |
14 | init(invocable: I, state: I.Value) {
15 | _invocable = invocable
16 | _state = state
17 | }
18 |
19 | func invoke() {
20 | _invocable.invoke(_state)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InvocableType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol InvocableType {
10 | func invoke()
11 | }
12 |
13 | protocol InvocableWithValueType {
14 | associatedtype Value
15 |
16 | func invoke(_ value: Value)
17 | }
18 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScheduledItem.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 9/2/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct ScheduledItem
10 | : ScheduledItemType
11 | , InvocableType {
12 | typealias Action = (T) -> Disposable
13 |
14 | private let _action: Action
15 | private let _state: T
16 |
17 | private let _disposable = SingleAssignmentDisposable()
18 |
19 | var isDisposed: Bool {
20 | return _disposable.isDisposed
21 | }
22 |
23 | init(action: @escaping Action, state: T) {
24 | _action = action
25 | _state = state
26 | }
27 |
28 | func invoke() {
29 | _disposable.setDisposable(_action(_state))
30 | }
31 |
32 | func dispose() {
33 | _disposable.dispose()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScheduledItemType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol ScheduledItemType
10 | : Cancelable
11 | , InvocableType {
12 | func invoke()
13 | }
14 |
--------------------------------------------------------------------------------
/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SubjectType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents an object that is both an observable sequence as well as an observer.
10 | public protocol SubjectType : ObservableType {
11 | /// The type of the observer that represents this subject.
12 | ///
13 | /// Usually this type is type of subject itself, but it doesn't have to be.
14 | associatedtype SubjectObserverType : ObserverType
15 |
16 | /// Returns observer interface for subject.
17 | ///
18 | /// - returns: Observer interface for subject.
19 | func asObserver() -> SubjectObserverType
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-2016 Sam Vermette, Tobias Tiemerding and contributors.
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
24 | A different license may apply to other resources included in this package,
25 | including Freepik Icons. Please consult their
26 | respective headers for the terms of their individual licenses.
27 |
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SVIndefiniteAnimatedView.h
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2014-2016 Guillaume Campagna. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @interface SVIndefiniteAnimatedView : UIView
11 |
12 | @property (nonatomic, assign) CGFloat strokeThickness;
13 | @property (nonatomic, assign) CGFloat radius;
14 | @property (nonatomic, strong) UIColor *strokeColor;
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SVProgressAnimatedView.h
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2016 Tobias Tiemerding. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @interface SVProgressAnimatedView : UIView
11 |
12 | @property (nonatomic, assign) CGFloat radius;
13 | @property (nonatomic, assign) CGFloat strokeThickness;
14 | @property (nonatomic, strong) UIColor *strokeColor;
15 | @property (nonatomic, assign) CGFloat strokeEnd;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuniuliuniu/LLProgramFrameworkSwift/0bed545b96ddfbd3c175116d8a68b294eb34af7a/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h:
--------------------------------------------------------------------------------
1 | //
2 | // SVRadialGradientLayer.h
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2014-2016 Tobias Tiemerding. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @interface SVRadialGradientLayer : CALayer
11 |
12 | @property (nonatomic) CGPoint gradientCenter;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m:
--------------------------------------------------------------------------------
1 | //
2 | // SVRadialGradientLayer.m
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2014-2016 Tobias Tiemerding. All rights reserved.
6 | //
7 |
8 | #import "SVRadialGradientLayer.h"
9 |
10 | @implementation SVRadialGradientLayer
11 |
12 | - (void)drawInContext:(CGContextRef)context {
13 | size_t locationsCount = 2;
14 | CGFloat locations[2] = {0.0f, 1.0f};
15 | CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f};
16 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
17 | CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount);
18 | CGColorSpaceRelease(colorSpace);
19 |
20 | float radius = MIN(self.bounds.size.width , self.bounds.size.height);
21 | CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation);
22 | CGGradientRelease(gradient);
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/SnapKit/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Pods/SnapKit/Source/ConstraintInsets.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | public typealias ConstraintInsets = UIEdgeInsets
33 | #else
34 | public typealias ConstraintInsets = EdgeInsets
35 | #endif
36 |
--------------------------------------------------------------------------------
/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #endif
27 |
28 |
29 | @available(iOS 9.0, OSX 10.11, *)
30 | public extension ConstraintLayoutGuide {
31 |
32 | public var snp: ConstraintLayoutGuideDSL {
33 | return ConstraintLayoutGuideDSL(guide: self)
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Pods/SnapKit/Source/ConstraintLayoutGuide.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | @available(iOS 9.0, *)
33 | public typealias ConstraintLayoutGuide = UILayoutGuide
34 | #else
35 | @available(OSX 10.11, *)
36 | public typealias ConstraintLayoutGuide = NSLayoutGuide
37 | #endif
38 |
--------------------------------------------------------------------------------
/Pods/SnapKit/Source/ConstraintLayoutSupport.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | @available(iOS 8.0, *)
33 | public typealias ConstraintLayoutSupport = UILayoutSupport
34 | #else
35 | public class ConstraintLayoutSupport {}
36 | #endif
37 |
--------------------------------------------------------------------------------
/Pods/SnapKit/Source/ConstraintView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | public typealias ConstraintView = UIView
33 | #else
34 | public typealias ConstraintView = NSView
35 | #endif
36 |
--------------------------------------------------------------------------------
/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #endif
27 |
28 |
29 | @available(iOS 8.0, *)
30 | public extension ConstraintLayoutSupport {
31 |
32 | public var snp: ConstraintLayoutSupportDSL {
33 | return ConstraintLayoutSupportDSL(support: self)
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Alamofire/Alamofire.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Alamofire
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Alamofire/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.5.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/FMDB/FMDB-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_FMDB : NSObject
3 | @end
4 | @implementation PodsDummy_FMDB
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/FMDB/FMDB-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/FMDB/FMDB-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "FMDatabase.h"
14 | #import "FMDatabaseAdditions.h"
15 | #import "FMDatabasePool.h"
16 | #import "FMDatabaseQueue.h"
17 | #import "FMDB.h"
18 | #import "FMResultSet.h"
19 |
20 | FOUNDATION_EXPORT double FMDBVersionNumber;
21 | FOUNDATION_EXPORT const unsigned char FMDBVersionString[];
22 |
23 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/FMDB/FMDB.modulemap:
--------------------------------------------------------------------------------
1 | framework module FMDB {
2 | umbrella header "FMDB-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/FMDB/FMDB.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FMDB
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_LDFLAGS = -l"sqlite3"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FMDB
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/FMDB/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.7.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Kingfisher/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.11.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Kingfisher/Kingfisher-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Kingfisher : NSObject
3 | @end
4 | @implementation PodsDummy_Kingfisher
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Kingfisher/Kingfisher-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Kingfisher/Kingfisher-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "Kingfisher.h"
14 |
15 | FOUNDATION_EXPORT double KingfisherVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char KingfisherVersionString[];
17 |
18 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Kingfisher/Kingfisher.modulemap:
--------------------------------------------------------------------------------
1 | framework module Kingfisher {
2 | umbrella header "Kingfisher-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Kingfisher/Kingfisher.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Kingfisher
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_LDFLAGS = -framework "CFNetwork"
5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
6 | PODS_BUILD_DIR = $BUILD_DIR
7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_ROOT = ${SRCROOT}
9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Kingfisher
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | SWIFT_VERSION = 3.0
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.1.12
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJRefresh : NSObject
3 | @end
4 | @implementation PodsDummy_MJRefresh
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "MJRefreshAutoFooter.h"
14 | #import "MJRefreshBackFooter.h"
15 | #import "MJRefreshComponent.h"
16 | #import "MJRefreshFooter.h"
17 | #import "MJRefreshHeader.h"
18 | #import "MJRefreshAutoGifFooter.h"
19 | #import "MJRefreshAutoNormalFooter.h"
20 | #import "MJRefreshAutoStateFooter.h"
21 | #import "MJRefreshBackGifFooter.h"
22 | #import "MJRefreshBackNormalFooter.h"
23 | #import "MJRefreshBackStateFooter.h"
24 | #import "MJRefreshGifHeader.h"
25 | #import "MJRefreshNormalHeader.h"
26 | #import "MJRefreshStateHeader.h"
27 | #import "MJRefresh.h"
28 | #import "MJRefreshConst.h"
29 | #import "NSBundle+MJRefresh.h"
30 | #import "UIScrollView+MJExtension.h"
31 | #import "UIScrollView+MJRefresh.h"
32 | #import "UIView+MJExtension.h"
33 |
34 | FOUNDATION_EXPORT double MJRefreshVersionNumber;
35 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[];
36 |
37 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh.modulemap:
--------------------------------------------------------------------------------
1 | framework module MJRefresh {
2 | umbrella header "MJRefresh-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | PODS_BUILD_DIR = $BUILD_DIR
5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Moya/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 8.0.5
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Moya/Moya-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Moya : NSObject
3 | @end
4 | @implementation PodsDummy_Moya
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Moya/Moya-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Moya/Moya-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double MoyaVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char MoyaVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Moya/Moya.modulemap:
--------------------------------------------------------------------------------
1 | framework module Moya {
2 | umbrella header "Moya-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Moya/Moya.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Moya
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Result" "$PODS_CONFIGURATION_BUILD_DIR/RxSwift"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
5 | OTHER_LDFLAGS = -framework "Foundation"
6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
7 | PODS_BUILD_DIR = $BUILD_DIR
8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Moya
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ObjectMapper/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.2.8
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ObjectMapper/ObjectMapper-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_ObjectMapper : NSObject
3 | @end
4 | @implementation PodsDummy_ObjectMapper
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ObjectMapper/ObjectMapper-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ObjectMapper/ObjectMapper-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double ObjectMapperVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char ObjectMapperVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ObjectMapper/ObjectMapper.modulemap:
--------------------------------------------------------------------------------
1 | framework module ObjectMapper {
2 | umbrella header "ObjectMapper-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ObjectMapper/ObjectMapper.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/ObjectMapper
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ObjectMapper
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | SWIFT_VERSION = 3.1
12 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-LLProgramFrameworkSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-LLProgramFrameworkSwift/Pods-LLProgramFrameworkSwift-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_LLProgramFrameworkSwift : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_LLProgramFrameworkSwift
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-LLProgramFrameworkSwift/Pods-LLProgramFrameworkSwift-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_LLProgramFrameworkSwiftVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_LLProgramFrameworkSwiftVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-LLProgramFrameworkSwift/Pods-LLProgramFrameworkSwift.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_LLProgramFrameworkSwift {
2 | umbrella header "Pods-LLProgramFrameworkSwift-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Result/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.2.3
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Result/Result-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Result : NSObject
3 | @end
4 | @implementation PodsDummy_Result
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Result/Result-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Result/Result-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double ResultVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char ResultVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Result/Result.modulemap:
--------------------------------------------------------------------------------
1 | framework module Result {
2 | umbrella header "Result-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Result/Result.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Result
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Result
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxCocoa/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.6.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RxCocoa : NSObject
3 | @end
4 | @implementation PodsDummy_RxCocoa
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "RxCocoa.h"
14 | #import "RxCocoaRuntime.h"
15 | #import "_RX.h"
16 | #import "_RXDelegateProxy.h"
17 | #import "_RXKVOObserver.h"
18 | #import "_RXObjCRuntime.h"
19 |
20 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
22 |
23 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap:
--------------------------------------------------------------------------------
1 | framework module RxCocoa {
2 | umbrella header "RxCocoa-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
6 | PODS_BUILD_DIR = $BUILD_DIR
7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_ROOT = ${SRCROOT}
9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.6.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxSwift/RxSwift-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RxSwift : NSObject
3 | @end
4 | @implementation PodsDummy_RxSwift
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double RxSwiftVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxSwift/RxSwift.modulemap:
--------------------------------------------------------------------------------
1 | framework module RxSwift {
2 | umbrella header "RxSwift-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RxSwift/RxSwift.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SVProgressHUD/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SVProgressHUD : NSObject
3 | @end
4 | @implementation PodsDummy_SVProgressHUD
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "SVIndefiniteAnimatedView.h"
14 | #import "SVProgressAnimatedView.h"
15 | #import "SVProgressHUD.h"
16 | #import "SVRadialGradientLayer.h"
17 |
18 | FOUNDATION_EXPORT double SVProgressHUDVersionNumber;
19 | FOUNDATION_EXPORT const unsigned char SVProgressHUDVersionString[];
20 |
21 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.modulemap:
--------------------------------------------------------------------------------
1 | framework module SVProgressHUD {
2 | umbrella header "SVProgressHUD-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_LDFLAGS = -framework "QuartzCore"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SVProgressHUD
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SnapKit/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.2.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SnapKit/SnapKit-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SnapKit : NSObject
3 | @end
4 | @implementation PodsDummy_SnapKit
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double SnapKitVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char SnapKitVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SnapKit/SnapKit.modulemap:
--------------------------------------------------------------------------------
1 | framework module SnapKit {
2 | umbrella header "SnapKit-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SnapKit/SnapKit.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SnapKit
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LLProgramFramework.Swift
2 |
3 |
4 | ## 本项目是一个拿来即用的Swift基础框架:框架结构如下,框架内部已经写了基于RXSwift的Demo 可以参考 具体使用可查看使用详情[RxSwift+Moya+ObjectMapper优雅的网络请求及模型转换](http://www.jianshu.com/p/0248e7104c39)
5 |
6 |
7 | 
8 |
9 |
10 | #### Update 9/22 Fix iOS 11 and iPhone X
11 | #### Update 9/26 加入 Plugin 插件 拦截全局的网络请求
12 |
13 | ### 项目结构
14 |
15 | * General 工具类综合
16 | * Category ------分类
17 | * CostumUI ------自定义UI控件
18 | * Helper ------正则 提示框辅助类等
19 | * Resources ------资源文件
20 | * Sections ------模块组
21 | * Main
22 | * Home
23 | * Me
24 | * Service ------网络请求库
25 | * Macro ------pch以及全局变量
26 | * Vendors ------手动集成第三方库
27 | * [LLFMDB](https://github.com/liuniuliuniu/LLFMDB) ------ 个人二次封装的FMDB 一键缓存的数据库
28 |
29 | ###Cocoapod第三方库
30 |
31 | * RxSwift ------RxSwift 基础库
32 | * RxCocoa ------ 对 UIKit Foundation 进行 Rx 化
33 | * Moya/RxSwift ------ 为RxSwift专用提供,对Alamofire进行封装的一个网络请求库
34 | * ObjectMapper ------ Json转模型之必备良品,很Swift
35 | * Kingfisher ------ 图片加载库 Swift版的SD
36 | * SnapKit ------ 视图约束库
37 | * FMDB ------ 轻量级的数据库
38 | * MJRefresh ------ 刷新库
39 | * SVProgressHUD ------ 提示HUD
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------