├── .gitignore ├── 02-publishers-and-subscribers └── projects │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ ├── Starter.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── challenge │ ├── .keep │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── Starter.playground │ ├── Contents.swift │ ├── Sources │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 03-transforming-operators └── projects │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ ├── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── timeline.xctimeline │ ├── Starter.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── challenge │ ├── .keep │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── Starter.playground │ ├── Contents.swift │ ├── Sources │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 04-filtering-operators └── projects │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ ├── Starter.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── challenge │ ├── .keep │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── Starter.playground │ ├── Contents.swift │ ├── Sources │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 05-combining-operators └── projects │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── Starter.playground │ ├── Contents.swift │ ├── Sources │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 06-time-manipulation-operators └── projects │ ├── Final.playground │ ├── Pages │ │ ├── Collect.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Debounce.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Delay.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── MeasureInterval.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Throttle.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── Timeout.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Sources │ │ ├── data.swift │ │ ├── deltaTime.swift │ │ ├── model.swift │ │ └── views.swift │ └── contents.xcplayground │ ├── Starter.playground │ ├── Pages │ │ ├── Collect.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Debounce.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Delay.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── MeasureInterval.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Throttle.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── Timeout.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Sources │ │ ├── Data.swift │ │ ├── DeltaTime.swift │ │ ├── Model.swift │ │ └── Views.swift │ └── contents.xcplayground │ └── challenge │ ├── .keep │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── data.swift │ └── contents.xcplayground │ └── Starter.playground │ ├── Contents.swift │ ├── Sources │ └── Data.swift │ └── contents.xcplayground ├── 07-sequence-operators └── projects │ ├── Final.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── Starter.playground │ ├── Contents.swift │ ├── Sources │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 08-in-practice-project-collage └── projects │ ├── challenge │ ├── CollageNeue.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── CollageNeue │ │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── app-icon-white-FF5A00-bg.png │ │ ├── Contents.json │ │ └── IMG_1907.imageset │ │ │ ├── Contents.json │ │ │ └── IMG_1907.jpg │ │ ├── CollageNeueApp.swift │ │ ├── Info.plist │ │ ├── MainView.swift │ │ ├── Model │ │ └── CollageNeueModel.swift │ │ ├── PhotosView.swift │ │ └── Utilities │ │ ├── PHPhotoLibrary+Combine.swift │ │ ├── PhotoWriter.swift │ │ ├── UIImage+Collage.swift │ │ └── UIViewController+Combine.swift │ ├── final │ ├── CollageNeue.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── CollageNeue │ │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── app-icon-white-FF5A00-bg.png │ │ ├── Contents.json │ │ └── IMG_1907.imageset │ │ │ ├── Contents.json │ │ │ └── IMG_1907.jpg │ │ ├── CollageNeueApp.swift │ │ ├── Info.plist │ │ ├── MainView.swift │ │ ├── Model │ │ └── CollageNeueModel.swift │ │ ├── PhotosView.swift │ │ └── Utilities │ │ ├── PHPhotoLibrary+Combine.swift │ │ ├── PhotoWriter.swift │ │ ├── UIImage+Collage.swift │ │ └── UIViewController+Combine.swift │ └── starter │ ├── CollageNeue.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── CollageNeue │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ └── app-icon-white-FF5A00-bg.png │ ├── Contents.json │ └── IMG_1907.imageset │ │ ├── Contents.json │ │ └── IMG_1907.jpg │ ├── CollageNeueApp.swift │ ├── Info.plist │ ├── MainView.swift │ ├── Model │ └── CollageNeueModel.swift │ ├── PhotosView.swift │ └── Utilities │ ├── PHPhotoLibrary+Combine.swift │ ├── PhotoWriter.swift │ ├── UIImage+Collage.swift │ └── UIViewController+Combine.swift ├── 14-in-practice-project-news └── projects │ ├── challenge │ ├── .keep │ ├── HackerNewsUIKit.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── HackerNewsUIKit │ │ ├── API.swift │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── app-icon-white-FF5A00-bg.png │ │ └── Contents.json │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ ├── SceneDelegate.swift │ │ ├── StoriesTableViewController.swift │ │ └── Story.swift │ ├── final │ ├── .keep │ └── API.playground │ │ ├── Contents.swift │ │ ├── Sources │ │ └── Story.swift │ │ ├── contents.xcplayground │ │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── starter │ ├── .keep │ └── API.playground │ ├── Contents.swift │ ├── Sources │ └── Story.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 15-in-practice-combine-and-swiftui └── projects │ ├── challenge │ ├── .keep │ ├── HNReader.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── HNReader │ │ ├── App │ │ └── App.swift │ │ ├── Assets │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── HN-1024.png │ │ │ │ ├── Icon-60@2x.png │ │ │ │ ├── Icon-60@3x.png │ │ │ │ ├── Icon-Small@2x.png │ │ │ │ ├── Icon-Small@3x.png │ │ │ │ ├── Icon-Spotlight-40@2x.png │ │ │ │ └── Icon-Spotlight-40@3x.png │ │ │ ├── Contents.json │ │ │ └── HN-1024.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── HN-1024.png │ │ └── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── Info.plist │ │ ├── Model │ │ ├── FilterKeyword.swift │ │ ├── ReaderViewModel.swift │ │ ├── Settings.swift │ │ └── Story.swift │ │ ├── Network │ │ └── API.swift │ │ ├── Util │ │ └── JSONFile.swift │ │ └── View │ │ ├── AddKeywordView.swift │ │ ├── Helpers │ │ ├── LargeInlineButton.swift │ │ ├── PostedBy.swift │ │ └── TimeBadge.swift │ │ ├── ReaderView.swift │ │ └── SettingsView.swift │ ├── final │ ├── .keep │ ├── HNReader.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── HNReader │ │ ├── App │ │ └── App.swift │ │ ├── Assets │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ └── app-icon-white-FF5A00-bg.png │ │ │ ├── Contents.json │ │ │ └── HN-1024.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── HN-1024.png │ │ └── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── Info.plist │ │ ├── Model │ │ ├── FilterKeyword.swift │ │ ├── ReaderViewModel.swift │ │ ├── Settings.swift │ │ └── Story.swift │ │ ├── Network │ │ └── API.swift │ │ ├── Util │ │ └── JSONFile.swift │ │ └── View │ │ ├── AddKeywordView.swift │ │ ├── Helpers │ │ ├── LargeInlineButton.swift │ │ ├── PostedBy.swift │ │ └── TimeBadge.swift │ │ ├── ReaderView.swift │ │ └── SettingsView.swift │ └── starter │ ├── .keep │ ├── HNReader.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── HNReader │ ├── App │ └── App.swift │ ├── Assets │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── app-icon-white-FF5A00-bg.png │ │ ├── Contents.json │ │ └── HN-1024.imageset │ │ │ ├── Contents.json │ │ │ └── HN-1024.png │ └── Base.lproj │ │ └── LaunchScreen.storyboard │ ├── Info.plist │ ├── Model │ ├── FilterKeyword.swift │ ├── ReaderViewModel.swift │ ├── Settings.swift │ └── Story.swift │ ├── Network │ └── API.swift │ ├── Util │ └── JSONFile.swift │ └── View │ ├── AddKeywordView.swift │ ├── Helpers │ ├── LargeInlineButton.swift │ ├── PostedBy.swift │ └── TimeBadge.swift │ ├── ReaderView.swift │ └── SettingsView.swift ├── 16-error-handling └── projects │ ├── Final.playground │ ├── Pages │ │ ├── Catching and retrying.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Designing your fallible APIs.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Mapping errors.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Never.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── Try* Operators.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Resources │ │ ├── hq.jpg │ │ ├── lq.jpg │ │ └── na.jpg │ ├── Sources │ │ ├── PhotoService.swift │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ └── contents.xcworkspacedata │ └── Starter.playground │ ├── Pages │ ├── Catching and retrying.xcplaygroundpage │ │ └── Contents.swift │ ├── Designing your fallible APIs.xcplaygroundpage │ │ └── Contents.swift │ ├── Mapping errors.xcplaygroundpage │ │ └── Contents.swift │ ├── Never.xcplaygroundpage │ │ └── Contents.swift │ └── try* operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Resources │ ├── hq.jpg │ ├── lq.jpg │ └── na.jpg │ ├── Sources │ ├── PhotoService.swift │ └── SupportCode.swift │ ├── contents.xcplayground │ └── playground.xcworkspace │ └── contents.xcworkspacedata ├── 17-schedulers └── projects │ ├── Final.playground │ ├── Pages │ │ ├── DispatchQueue.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── ImmediateScheduler.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── OperationQueue.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── RunLoop.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── subscribeOn-receiveOn.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Sources │ │ ├── Computation.swift │ │ ├── DeltaTime.swift │ │ ├── Model.swift │ │ ├── Record.swift │ │ ├── Thread.swift │ │ └── Views.swift │ └── contents.xcplayground │ ├── Starter.playground │ ├── Pages │ │ ├── DispatchQueue.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── ImmediateScheduler.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── OperationQueue.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── RunLoop.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── subscribeOn-receiveOn.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Sources │ │ ├── Computation.swift │ │ ├── DeltaTime.swift │ │ ├── Model.swift │ │ ├── Record.swift │ │ ├── Thread.swift │ │ └── Views.swift │ └── contents.xcplayground │ └── challenge │ ├── .keep │ ├── challenge1 │ ├── Final.playground │ │ ├── Pages │ │ │ └── DispatchQueueChallenge1.xcplaygroundpage │ │ │ │ └── Contents.swift │ │ ├── Sources │ │ │ ├── Computation.swift │ │ │ ├── DeltaTime.swift │ │ │ ├── Model.swift │ │ │ ├── Record.swift │ │ │ ├── Thread.swift │ │ │ └── Views.swift │ │ └── contents.xcplayground │ └── Starter.playground │ │ ├── Pages │ │ └── DispatchQueueChallenge1.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── Sources │ │ ├── Computation.swift │ │ ├── DeltaTime.swift │ │ ├── Model.swift │ │ ├── Record.swift │ │ ├── Thread.swift │ │ └── Views.swift │ │ └── contents.xcplayground │ └── challenge2 │ ├── Final.playground │ ├── Pages │ │ └── DispatchQueueChallenge2.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Sources │ │ ├── Computation.swift │ │ ├── DeltaTime.swift │ │ ├── Model.swift │ │ ├── Record.swift │ │ ├── Thread.swift │ │ └── Views.swift │ └── contents.xcplayground │ └── Starter.playground │ ├── Pages │ └── DispatchQueueChallenge2.xcplaygroundpage │ │ └── Contents.swift │ ├── Sources │ ├── Computation.swift │ ├── DeltaTime.swift │ ├── Model.swift │ ├── Record.swift │ ├── Thread.swift │ └── Views.swift │ └── contents.xcplayground ├── 18-custom-publishers-and-handling-backpressure └── projects │ ├── Final.playground │ ├── Contents.swift │ ├── Pages │ │ ├── DispatchTimer publisher.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── PausableSink.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── ShareReplay operator.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── Unwrap operator.xcplaygroundpage │ │ │ └── Contents.swift │ ├── Sources │ │ └── TimeLogger.swift │ └── contents.xcplayground │ └── Starter.playground │ ├── Contents.swift │ ├── Pages │ ├── DispatchTimer publisher.xcplaygroundpage │ │ └── Contents.swift │ ├── PausableSink.xcplaygroundpage │ │ └── Contents.swift │ ├── ShareReplay operator.xcplaygroundpage │ │ └── Contents.swift │ └── Unwrap operator.xcplaygroundpage │ │ └── Contents.swift │ ├── Sources │ └── TimeLogger.swift │ └── contents.xcplayground ├── 19-testing └── projects │ ├── challenge │ ├── .keep │ ├── challenge1 │ │ ├── final │ │ │ ├── .keep │ │ │ ├── ColorCalc.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ └── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── ColorCalc │ │ │ │ ├── App │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ └── SceneDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── Contents.json │ │ │ │ ├── Base.lproj │ │ │ │ │ └── LaunchScreen.storyboard │ │ │ │ ├── Extensions │ │ │ │ │ └── Color+.swift │ │ │ │ ├── Info.plist │ │ │ │ ├── Models │ │ │ │ │ └── ColorName.swift │ │ │ │ ├── Preview Content │ │ │ │ │ └── Preview Assets.xcassets │ │ │ │ │ │ └── Contents.json │ │ │ │ ├── View Models │ │ │ │ │ └── CalculatorViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── CalculatorButton.swift │ │ │ │ │ ├── CalculatorView.swift │ │ │ │ │ └── DisplayView.swift │ │ │ └── ColorCalcTests │ │ │ │ ├── ColorCalcTests.swift │ │ │ │ ├── CombineOperatorsTests.swift │ │ │ │ ├── Info.plist │ │ │ │ └── ShareReplay.swift │ │ └── starter │ │ │ ├── .keep │ │ │ ├── ColorCalc.xcodeproj │ │ │ ├── project.pbxproj │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── ColorCalc │ │ │ ├── App │ │ │ │ ├── AppDelegate.swift │ │ │ │ └── SceneDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj │ │ │ │ └── LaunchScreen.storyboard │ │ │ ├── Extensions │ │ │ │ └── Color+.swift │ │ │ ├── Info.plist │ │ │ ├── Models │ │ │ │ └── ColorName.swift │ │ │ ├── Preview Content │ │ │ │ └── Preview Assets.xcassets │ │ │ │ │ └── Contents.json │ │ │ ├── View Models │ │ │ │ └── CalculatorViewModel.swift │ │ │ └── Views │ │ │ │ ├── CalculatorButton.swift │ │ │ │ ├── CalculatorView.swift │ │ │ │ └── DisplayView.swift │ │ │ └── ColorCalcTests │ │ │ ├── ColorCalcTests.swift │ │ │ ├── CombineOperatorsTests.swift │ │ │ ├── Info.plist │ │ │ └── ShareReplay.swift │ └── challenge2 │ │ ├── final │ │ ├── .keep │ │ ├── ColorCalc.xcodeproj │ │ │ ├── project.pbxproj │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── ColorCalc │ │ │ ├── App │ │ │ │ ├── AppDelegate.swift │ │ │ │ └── SceneDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj │ │ │ │ └── LaunchScreen.storyboard │ │ │ ├── Extensions │ │ │ │ └── Color+.swift │ │ │ ├── Info.plist │ │ │ ├── Models │ │ │ │ └── ColorName.swift │ │ │ ├── Preview Content │ │ │ │ └── Preview Assets.xcassets │ │ │ │ │ └── Contents.json │ │ │ ├── View Models │ │ │ │ └── CalculatorViewModel.swift │ │ │ └── Views │ │ │ │ ├── CalculatorButton.swift │ │ │ │ ├── CalculatorView.swift │ │ │ │ └── DisplayView.swift │ │ └── ColorCalcTests │ │ │ ├── ColorCalcTests.swift │ │ │ ├── CombineOperatorsTests.swift │ │ │ ├── Info.plist │ │ │ └── ShareReplay.swift │ │ └── starter │ │ ├── .keep │ │ ├── ColorCalc.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── ColorCalc │ │ ├── App │ │ │ ├── AppDelegate.swift │ │ │ └── SceneDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── Extensions │ │ │ └── Color+.swift │ │ ├── Info.plist │ │ ├── Models │ │ │ └── ColorName.swift │ │ ├── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── View Models │ │ │ └── CalculatorViewModel.swift │ │ └── Views │ │ │ ├── CalculatorButton.swift │ │ │ ├── CalculatorView.swift │ │ │ └── DisplayView.swift │ │ └── ColorCalcTests │ │ ├── ColorCalcTests.swift │ │ ├── CombineOperatorsTests.swift │ │ ├── Info.plist │ │ └── ShareReplay.swift │ ├── final │ ├── .keep │ ├── ColorCalc.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── ColorCalc │ │ ├── App │ │ │ ├── AppDelegate.swift │ │ │ └── SceneDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── Extensions │ │ │ └── Color+.swift │ │ ├── Info.plist │ │ ├── Models │ │ │ └── ColorName.swift │ │ ├── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── View Models │ │ │ └── CalculatorViewModel.swift │ │ └── Views │ │ │ ├── CalculatorButton.swift │ │ │ ├── CalculatorView.swift │ │ │ └── DisplayView.swift │ └── ColorCalcTests │ │ ├── ColorCalcTests.swift │ │ ├── CombineOperatorsTests.swift │ │ ├── Info.plist │ │ └── ShareReplay.swift │ └── starter │ ├── .keep │ ├── ColorCalc.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ ├── ColorCalc │ ├── App │ │ ├── AppDelegate.swift │ │ └── SceneDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ ├── Extensions │ │ └── Color+.swift │ ├── Info.plist │ ├── Models │ │ └── ColorName.swift │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── View Models │ │ └── CalculatorViewModel.swift │ └── Views │ │ ├── CalculatorButton.swift │ │ ├── CalculatorView.swift │ │ └── DisplayView.swift │ └── ColorCalcTests │ ├── ColorCalcTests.swift │ ├── CombineOperatorsTests.swift │ ├── Info.plist │ └── ShareReplay.swift ├── 20-in-practice-building-a-complete-app └── projects │ ├── challenge │ ├── .keep │ ├── final │ │ ├── .keep │ │ ├── ChuckNorrisJokes.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── ChuckNorrisJokes.xcscheme │ │ ├── ChuckNorrisJokes │ │ │ ├── App │ │ │ │ ├── AppDelegate.swift │ │ │ │ └── SceneDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ │ └── ItunesArtwork@2x.png │ │ │ │ ├── Colors │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Gray.colorset │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Green.colorset │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── Red.colorset │ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj │ │ │ │ └── LaunchScreen.storyboard │ │ │ ├── ChuckNorrisJokesStyleKit.swift │ │ │ ├── Info.plist │ │ │ ├── Models │ │ │ │ ├── ChuckNorrisJokes.xcdatamodeld │ │ │ │ │ └── ChuckNorrisJokes.xcdatamodel │ │ │ │ │ │ └── contents │ │ │ │ └── JokeManagedObject+.swift │ │ │ ├── Preview Content │ │ │ │ └── Preview Assets.xcassets │ │ │ │ │ └── Contents.json │ │ │ ├── SampleJoke.json │ │ │ └── Views │ │ │ │ ├── HUDView.swift │ │ │ │ ├── JokeCardView.swift │ │ │ │ ├── JokeView.swift │ │ │ │ ├── LargeInlineButton.swift │ │ │ │ └── SavedJokesView.swift │ │ ├── ChuckNorrisJokesModel │ │ │ ├── ChuckNorrisJokesModel.h │ │ │ ├── Extensions │ │ │ │ └── URLComponents+.swift │ │ │ ├── Info.plist │ │ │ ├── Models │ │ │ │ └── Joke.swift │ │ │ ├── Protocols │ │ │ │ └── JokeServiceDataPublisher.swift │ │ │ ├── Services │ │ │ │ └── JokesService.swift │ │ │ └── View Models │ │ │ │ └── JokesViewModel.swift │ │ └── ChuckNorrisJokesTests │ │ │ ├── Info.plist │ │ │ ├── Services │ │ │ └── MockJokesService.swift │ │ │ ├── TestJoke.json │ │ │ └── Tests │ │ │ └── JokesViewModelTests.swift │ └── starter │ │ ├── .keep │ │ ├── ChuckNorrisJokes.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── ChuckNorrisJokes.xcscheme │ │ ├── ChuckNorrisJokes │ │ ├── App │ │ │ ├── AppDelegate.swift │ │ │ └── SceneDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Colors │ │ │ │ ├── Contents.json │ │ │ │ ├── Gray.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── Green.colorset │ │ │ │ │ └── Contents.json │ │ │ │ └── Red.colorset │ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── ChuckNorrisJokesStyleKit.swift │ │ ├── Info.plist │ │ ├── Models │ │ │ ├── ChuckNorrisJokes.xcdatamodeld │ │ │ │ └── ChuckNorrisJokes.xcdatamodel │ │ │ │ │ └── contents │ │ │ └── JokeManagedObject+.swift │ │ ├── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── SampleJoke.json │ │ └── Views │ │ │ ├── HUDView.swift │ │ │ ├── JokeCardView.swift │ │ │ ├── JokeView.swift │ │ │ ├── LargeInlineButton.swift │ │ │ └── SavedJokesView.swift │ │ ├── ChuckNorrisJokesModel │ │ ├── ChuckNorrisJokesModel.h │ │ ├── Extensions │ │ │ └── URLComponents+.swift │ │ ├── Info.plist │ │ ├── Models │ │ │ └── Joke.swift │ │ ├── Protocols │ │ │ └── JokeServiceDataPublisher.swift │ │ ├── Services │ │ │ └── JokesService.swift │ │ └── View Models │ │ │ └── JokesViewModel.swift │ │ └── ChuckNorrisJokesTests │ │ ├── Info.plist │ │ ├── Services │ │ └── MockJokesService.swift │ │ ├── TestJoke.json │ │ └── Tests │ │ └── JokesViewModelTests.swift │ ├── final │ ├── .keep │ ├── ChuckNorrisJokes.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── ChuckNorrisJokes.xcscheme │ ├── ChuckNorrisJokes │ │ ├── App │ │ │ ├── AppDelegate.swift │ │ │ └── SceneDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Colors │ │ │ │ ├── Contents.json │ │ │ │ ├── Gray.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── Green.colorset │ │ │ │ │ └── Contents.json │ │ │ │ └── Red.colorset │ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── ChuckNorrisJokesStyleKit.swift │ │ ├── Info.plist │ │ ├── Models │ │ │ ├── ChuckNorrisJokes.xcdatamodeld │ │ │ │ └── ChuckNorrisJokes.xcdatamodel │ │ │ │ │ └── contents │ │ │ └── JokeManagedObject+.swift │ │ ├── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── SampleJoke.json │ │ └── Views │ │ │ ├── HUDView.swift │ │ │ ├── JokeCardView.swift │ │ │ ├── JokeView.swift │ │ │ ├── LargeInlineButton.swift │ │ │ └── SavedJokesView.swift │ ├── ChuckNorrisJokesModel │ │ ├── ChuckNorrisJokesModel.h │ │ ├── Extensions │ │ │ └── URLComponents+.swift │ │ ├── Info.plist │ │ ├── Models │ │ │ └── Joke.swift │ │ ├── Protocols │ │ │ └── JokeServiceDataPublisher.swift │ │ ├── Services │ │ │ └── JokesService.swift │ │ └── View Models │ │ │ └── JokesViewModel.swift │ └── ChuckNorrisJokesTests │ │ ├── Info.plist │ │ ├── Services │ │ └── MockJokesService.swift │ │ ├── TestJoke.json │ │ └── Tests │ │ └── JokesViewModelTests.swift │ └── starter │ ├── .keep │ ├── ChuckNorrisJokes.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── ChuckNorrisJokes.xcscheme │ ├── ChuckNorrisJokes │ ├── App │ │ ├── AppDelegate.swift │ │ └── SceneDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Colors │ │ │ ├── Contents.json │ │ │ ├── Gray.colorset │ │ │ │ └── Contents.json │ │ │ ├── Green.colorset │ │ │ │ └── Contents.json │ │ │ └── Red.colorset │ │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ ├── ChuckNorrisJokesStyleKit.swift │ ├── Info.plist │ ├── Models │ │ └── ChuckNorrisJokes.xcdatamodeld │ │ │ └── ChuckNorrisJokes.xcdatamodel │ │ │ └── contents │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── SampleJoke.json │ └── Views │ │ ├── HUDView.swift │ │ ├── JokeCardView.swift │ │ ├── JokeView.swift │ │ ├── LargeInlineButton.swift │ │ └── SavedJokesView.swift │ ├── ChuckNorrisJokesModel │ ├── ChuckNorrisJokesModel.h │ ├── Extensions │ │ └── URLComponents+.swift │ ├── Info.plist │ ├── Models │ │ └── Joke.swift │ ├── Protocols │ │ └── JokeServiceDataPublisher.swift │ ├── Services │ │ └── JokesService.swift │ └── View Models │ │ └── JokesViewModel.swift │ └── ChuckNorrisJokesTests │ ├── Info.plist │ ├── Services │ └── MockJokesService.swift │ ├── TestJoke.json │ └── Tests │ └── JokesViewModelTests.swift ├── LICENSE ├── README.md └── scripts ├── make-codex-branch.sh └── make-codex-subdirectory.sh /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/.gitignore -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Final.playground/Contents.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Final.playground/Contents.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /02-publishers-and-subscribers/projects/challenge/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/02-publishers-and-subscribers/projects/challenge/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /03-transforming-operators/projects/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Final.playground/Contents.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /03-transforming-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /03-transforming-operators/projects/Final.playground/timeline.xctimeline: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Final.playground/timeline.xctimeline -------------------------------------------------------------------------------- /03-transforming-operators/projects/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /03-transforming-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Final.playground/Contents.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /03-transforming-operators/projects/challenge/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/03-transforming-operators/projects/challenge/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /04-filtering-operators/projects/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Final.playground/Contents.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /04-filtering-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /04-filtering-operators/projects/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /04-filtering-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Final.playground/Contents.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /04-filtering-operators/projects/challenge/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/04-filtering-operators/projects/challenge/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /05-combining-operators/projects/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Final.playground/Contents.swift -------------------------------------------------------------------------------- /05-combining-operators/projects/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /05-combining-operators/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /05-combining-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /05-combining-operators/projects/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /05-combining-operators/projects/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /05-combining-operators/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /05-combining-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/05-combining-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Pages/Collect.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Pages/Collect.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Pages/Debounce.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Pages/Debounce.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Pages/Delay.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Pages/Delay.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Pages/MeasureInterval.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Pages/MeasureInterval.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Pages/Throttle.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Pages/Throttle.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Pages/Timeout.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Pages/Timeout.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Sources/data.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Sources/data.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Sources/deltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Sources/deltaTime.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Sources/model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Sources/model.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/Sources/views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/Sources/views.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Pages/Collect.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Pages/Collect.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Pages/Debounce.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Pages/Debounce.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Pages/Delay.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Pages/Delay.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Pages/MeasureInterval.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Pages/MeasureInterval.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Pages/Throttle.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Pages/Throttle.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Pages/Timeout.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Pages/Timeout.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Sources/Data.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Sources/Data.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Sources/Model.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/Sources/Views.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/challenge/Final.playground/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/Final.playground/Sources/data.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/challenge/Final.playground/Sources/data.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/challenge/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/challenge/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/Starter.playground/Sources/Data.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/challenge/Starter.playground/Sources/Data.swift -------------------------------------------------------------------------------- /06-time-manipulation-operators/projects/challenge/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/06-time-manipulation-operators/projects/challenge/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /07-sequence-operators/projects/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Final.playground/Contents.swift -------------------------------------------------------------------------------- /07-sequence-operators/projects/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /07-sequence-operators/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /07-sequence-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /07-sequence-operators/projects/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /07-sequence-operators/projects/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /07-sequence-operators/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /07-sequence-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/07-sequence-operators/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/IMG_1907.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/IMG_1907.imageset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/IMG_1907.imageset/IMG_1907.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Assets.xcassets/IMG_1907.imageset/IMG_1907.jpg -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/CollageNeueApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/CollageNeueApp.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Info.plist -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/MainView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/MainView.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Model/CollageNeueModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Model/CollageNeueModel.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/PhotosView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/PhotosView.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/PHPhotoLibrary+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/PHPhotoLibrary+Combine.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/PhotoWriter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/PhotoWriter.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/UIImage+Collage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/UIImage+Collage.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/UIViewController+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/challenge/CollageNeue/Utilities/UIViewController+Combine.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/IMG_1907.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/IMG_1907.imageset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/IMG_1907.imageset/IMG_1907.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Assets.xcassets/IMG_1907.imageset/IMG_1907.jpg -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/CollageNeueApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/CollageNeueApp.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Info.plist -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/MainView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/MainView.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Model/CollageNeueModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Model/CollageNeueModel.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/PhotosView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/PhotosView.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Utilities/PHPhotoLibrary+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Utilities/PHPhotoLibrary+Combine.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Utilities/PhotoWriter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Utilities/PhotoWriter.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Utilities/UIImage+Collage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Utilities/UIImage+Collage.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/final/CollageNeue/Utilities/UIViewController+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/final/CollageNeue/Utilities/UIViewController+Combine.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/IMG_1907.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/IMG_1907.imageset/Contents.json -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/IMG_1907.imageset/IMG_1907.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Assets.xcassets/IMG_1907.imageset/IMG_1907.jpg -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/CollageNeueApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/CollageNeueApp.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Info.plist -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/MainView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/MainView.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Model/CollageNeueModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Model/CollageNeueModel.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/PhotosView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/PhotosView.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/PHPhotoLibrary+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/PHPhotoLibrary+Combine.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/PhotoWriter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/PhotoWriter.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/UIImage+Collage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/UIImage+Collage.swift -------------------------------------------------------------------------------- /08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/UIViewController+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/08-in-practice-project-collage/projects/starter/CollageNeue/Utilities/UIViewController+Combine.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/API.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/API.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/AppDelegate.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Assets.xcassets/AppIcon.appiconset/app-icon-white-FF5A00-bg.png -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Base.lproj/Main.storyboard -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Info.plist -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/SceneDelegate.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/StoriesTableViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/StoriesTableViewController.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/challenge/HackerNewsUIKit/Story.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/final/API.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/final/API.playground/Contents.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/final/API.playground/Sources/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/final/API.playground/Sources/Story.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/final/API.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/final/API.playground/contents.xcplayground -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/final/API.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/final/API.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/starter/API.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/starter/API.playground/Contents.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/starter/API.playground/Sources/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/starter/API.playground/Sources/Story.swift -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/starter/API.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/starter/API.playground/contents.xcplayground -------------------------------------------------------------------------------- /14-in-practice-project-news/projects/starter/API.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/14-in-practice-project-news/projects/starter/API.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/App/App.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/App/App.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/HN-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/HN-1024.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/HN-1024.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/HN-1024.imageset/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/HN-1024.imageset/HN-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Assets.xcassets/HN-1024.imageset/HN-1024.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Assets/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Info.plist -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/FilterKeyword.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/FilterKeyword.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/ReaderViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/ReaderViewModel.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/Settings.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/Settings.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Model/Story.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Network/API.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Network/API.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Util/JSONFile.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/Util/JSONFile.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/AddKeywordView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/AddKeywordView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/Helpers/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/Helpers/LargeInlineButton.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/Helpers/PostedBy.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/Helpers/PostedBy.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/Helpers/TimeBadge.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/Helpers/TimeBadge.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/ReaderView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/ReaderView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/SettingsView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/challenge/HNReader/View/SettingsView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/App/App.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/App/App.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/HN-1024.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/HN-1024.imageset/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/HN-1024.imageset/HN-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Assets.xcassets/HN-1024.imageset/HN-1024.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Assets/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Info.plist -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/FilterKeyword.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/FilterKeyword.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/ReaderViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/ReaderViewModel.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/Settings.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/Settings.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Model/Story.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Network/API.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Network/API.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/Util/JSONFile.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/Util/JSONFile.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/View/AddKeywordView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/View/AddKeywordView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/View/Helpers/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/View/Helpers/LargeInlineButton.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/View/Helpers/PostedBy.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/View/Helpers/PostedBy.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/View/Helpers/TimeBadge.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/View/Helpers/TimeBadge.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/View/ReaderView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/View/ReaderView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/final/HNReader/View/SettingsView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/final/HNReader/View/SettingsView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/App/App.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/App/App.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/HN-1024.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/HN-1024.imageset/Contents.json -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/HN-1024.imageset/HN-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Assets.xcassets/HN-1024.imageset/HN-1024.png -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Assets/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Info.plist -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/FilterKeyword.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/FilterKeyword.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/ReaderViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/ReaderViewModel.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/Settings.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/Settings.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Model/Story.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Network/API.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Network/API.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/Util/JSONFile.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/Util/JSONFile.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/AddKeywordView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/AddKeywordView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/Helpers/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/Helpers/LargeInlineButton.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/Helpers/PostedBy.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/Helpers/PostedBy.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/Helpers/TimeBadge.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/Helpers/TimeBadge.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/ReaderView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/ReaderView.swift -------------------------------------------------------------------------------- /15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/SettingsView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/15-in-practice-combine-and-swiftui/projects/starter/HNReader/View/SettingsView.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Pages/Catching and retrying.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Pages/Catching and retrying.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Pages/Designing your fallible APIs.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Pages/Designing your fallible APIs.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Pages/Mapping errors.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Pages/Mapping errors.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Pages/Never.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Pages/Never.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Pages/Try* Operators.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Pages/Try* Operators.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Resources/hq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Resources/hq.jpg -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Resources/lq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Resources/lq.jpg -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Resources/na.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Resources/na.jpg -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Sources/PhotoService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Sources/PhotoService.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /16-error-handling/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Final.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Pages/Catching and retrying.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Pages/Catching and retrying.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Pages/Designing your fallible APIs.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Pages/Designing your fallible APIs.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Pages/Mapping errors.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Pages/Mapping errors.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Pages/Never.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Pages/Never.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Pages/try* operators.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Pages/try* operators.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Resources/hq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Resources/hq.jpg -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Resources/lq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Resources/lq.jpg -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Resources/na.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Resources/na.jpg -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Sources/PhotoService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Sources/PhotoService.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/Sources/SupportCode.swift -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /16-error-handling/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/16-error-handling/projects/Starter.playground/playground.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Pages/DispatchQueue.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Pages/DispatchQueue.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Pages/ImmediateScheduler.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Pages/ImmediateScheduler.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Pages/OperationQueue.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Pages/OperationQueue.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Pages/RunLoop.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Pages/RunLoop.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Pages/subscribeOn-receiveOn.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Pages/subscribeOn-receiveOn.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Sources/Computation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Sources/Computation.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Sources/Model.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Sources/Record.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Sources/Record.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Sources/Thread.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Sources/Thread.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/Sources/Views.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Pages/DispatchQueue.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Pages/DispatchQueue.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Pages/ImmediateScheduler.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Pages/ImmediateScheduler.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Pages/OperationQueue.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Pages/OperationQueue.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Pages/RunLoop.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Pages/RunLoop.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Pages/subscribeOn-receiveOn.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Pages/subscribeOn-receiveOn.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Sources/Computation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Sources/Computation.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Sources/Model.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Sources/Record.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Sources/Record.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Sources/Thread.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Sources/Thread.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/Sources/Views.swift -------------------------------------------------------------------------------- /17-schedulers/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Pages/DispatchQueueChallenge1.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Pages/DispatchQueueChallenge1.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Computation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Computation.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Model.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Record.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Record.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Thread.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Thread.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/Sources/Views.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Pages/DispatchQueueChallenge1.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Pages/DispatchQueueChallenge1.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Computation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Computation.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Model.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Record.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Record.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Thread.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Thread.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/Sources/Views.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge1/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge1/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Pages/DispatchQueueChallenge2.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Pages/DispatchQueueChallenge2.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Computation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Computation.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Model.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Record.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Record.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Thread.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Thread.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/Sources/Views.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Pages/DispatchQueueChallenge2.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Pages/DispatchQueueChallenge2.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Computation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Computation.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/DeltaTime.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/DeltaTime.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Model.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Record.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Record.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Thread.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Thread.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Views.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/Sources/Views.swift -------------------------------------------------------------------------------- /17-schedulers/projects/challenge/challenge2/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/17-schedulers/projects/challenge/challenge2/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Final.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Final.playground/Contents.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Final.playground/Pages/PausableSink.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Final.playground/Pages/PausableSink.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Final.playground/Pages/Unwrap operator.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Final.playground/Pages/Unwrap operator.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Final.playground/Sources/TimeLogger.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Final.playground/Sources/TimeLogger.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Final.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Final.playground/contents.xcplayground -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Contents.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Pages/PausableSink.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Pages/PausableSink.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Pages/Unwrap operator.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Pages/Unwrap operator.xcplaygroundpage/Contents.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Sources/TimeLogger.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Starter.playground/Sources/TimeLogger.swift -------------------------------------------------------------------------------- /18-custom-publishers-and-handling-backpressure/projects/Starter.playground/contents.xcplayground: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/18-custom-publishers-and-handling-backpressure/projects/Starter.playground/contents.xcplayground -------------------------------------------------------------------------------- /19-testing/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/App/AppDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/App/SceneDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Extensions/Color+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Extensions/Color+.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Models/ColorName.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Models/ColorName.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/View Models/CalculatorViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/View Models/CalculatorViewModel.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Views/CalculatorButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Views/CalculatorButton.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Views/CalculatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Views/CalculatorView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalc/Views/DisplayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalc/Views/DisplayView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalcTests/ColorCalcTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalcTests/ColorCalcTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalcTests/CombineOperatorsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalcTests/CombineOperatorsTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalcTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalcTests/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/final/ColorCalcTests/ShareReplay.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/final/ColorCalcTests/ShareReplay.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/App/AppDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/App/SceneDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Extensions/Color+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Extensions/Color+.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Models/ColorName.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Models/ColorName.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/View Models/CalculatorViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/View Models/CalculatorViewModel.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Views/CalculatorButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Views/CalculatorButton.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Views/CalculatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Views/CalculatorView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalc/Views/DisplayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalc/Views/DisplayView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalcTests/ColorCalcTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalcTests/ColorCalcTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalcTests/CombineOperatorsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalcTests/CombineOperatorsTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalcTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalcTests/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge1/starter/ColorCalcTests/ShareReplay.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge1/starter/ColorCalcTests/ShareReplay.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/App/AppDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/App/SceneDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Extensions/Color+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Extensions/Color+.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Models/ColorName.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Models/ColorName.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/View Models/CalculatorViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/View Models/CalculatorViewModel.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Views/CalculatorButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Views/CalculatorButton.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Views/CalculatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Views/CalculatorView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalc/Views/DisplayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalc/Views/DisplayView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalcTests/ColorCalcTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalcTests/ColorCalcTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalcTests/CombineOperatorsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalcTests/CombineOperatorsTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalcTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalcTests/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/final/ColorCalcTests/ShareReplay.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/final/ColorCalcTests/ShareReplay.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/App/AppDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/App/SceneDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Extensions/Color+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Extensions/Color+.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Models/ColorName.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Models/ColorName.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/View Models/CalculatorViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/View Models/CalculatorViewModel.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Views/CalculatorButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Views/CalculatorButton.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Views/CalculatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Views/CalculatorView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalc/Views/DisplayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalc/Views/DisplayView.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalcTests/ColorCalcTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalcTests/ColorCalcTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalcTests/CombineOperatorsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalcTests/CombineOperatorsTests.swift -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalcTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalcTests/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/challenge/challenge2/starter/ColorCalcTests/ShareReplay.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/challenge/challenge2/starter/ColorCalcTests/ShareReplay.swift -------------------------------------------------------------------------------- /19-testing/projects/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/App/AppDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/App/SceneDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Extensions/Color+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Extensions/Color+.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Models/ColorName.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Models/ColorName.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/View Models/CalculatorViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/View Models/CalculatorViewModel.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Views/CalculatorButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Views/CalculatorButton.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Views/CalculatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Views/CalculatorView.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalc/Views/DisplayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalc/Views/DisplayView.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalcTests/ColorCalcTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalcTests/ColorCalcTests.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalcTests/CombineOperatorsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalcTests/CombineOperatorsTests.swift -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalcTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalcTests/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/final/ColorCalcTests/ShareReplay.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/final/ColorCalcTests/ShareReplay.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/App/AppDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/App/SceneDelegate.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Extensions/Color+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Extensions/Color+.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Models/ColorName.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Models/ColorName.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/View Models/CalculatorViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/View Models/CalculatorViewModel.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Views/CalculatorButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Views/CalculatorButton.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Views/CalculatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Views/CalculatorView.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalc/Views/DisplayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalc/Views/DisplayView.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalcTests/ColorCalcTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalcTests/ColorCalcTests.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalcTests/CombineOperatorsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalcTests/CombineOperatorsTests.swift -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalcTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalcTests/Info.plist -------------------------------------------------------------------------------- /19-testing/projects/starter/ColorCalcTests/ShareReplay.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/19-testing/projects/starter/ColorCalcTests/ShareReplay.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/App/AppDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/App/SceneDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Models/JokeManagedObject+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Models/JokeManagedObject+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/SampleJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/SampleJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/HUDView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/HUDView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/JokeCardView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/JokeCardView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/JokeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/JokeView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/LargeInlineButton.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/SavedJokesView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokes/Views/SavedJokesView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Extensions/URLComponents+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Extensions/URLComponents+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Models/Joke.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Models/Joke.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Services/JokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/Services/JokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/View Models/JokesViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesModel/View Models/JokesViewModel.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/Services/MockJokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/Services/MockJokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/TestJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/TestJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/final/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/App/AppDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/App/SceneDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Models/JokeManagedObject+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Models/JokeManagedObject+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/SampleJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/SampleJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/HUDView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/HUDView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/JokeCardView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/JokeCardView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/JokeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/JokeView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/LargeInlineButton.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/SavedJokesView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokes/Views/SavedJokesView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Extensions/URLComponents+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Extensions/URLComponents+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Models/Joke.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Models/Joke.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Services/JokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/Services/JokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/View Models/JokesViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesModel/View Models/JokesViewModel.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/Services/MockJokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/Services/MockJokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/TestJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/TestJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/challenge/starter/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/App/AppDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/App/SceneDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Gray.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Gray.colorset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Green.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Green.colorset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Red.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Colors/Red.colorset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Models/JokeManagedObject+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Models/JokeManagedObject+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/SampleJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/SampleJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/HUDView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/HUDView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/JokeCardView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/JokeCardView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/JokeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/JokeView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/LargeInlineButton.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/SavedJokesView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokes/Views/SavedJokesView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Extensions/URLComponents+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Extensions/URLComponents+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Models/Joke.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Models/Joke.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Services/JokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/Services/JokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/View Models/JokesViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesModel/View Models/JokesViewModel.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/Services/MockJokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/Services/MockJokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/TestJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/TestJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/final/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/App/AppDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/App/SceneDelegate.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Gray.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Gray.colorset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Green.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Green.colorset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Red.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Colors/Red.colorset/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/ChuckNorrisJokesStyleKit.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/SampleJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/SampleJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/HUDView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/HUDView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/JokeCardView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/JokeCardView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/JokeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/JokeView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/LargeInlineButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/LargeInlineButton.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/SavedJokesView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokes/Views/SavedJokesView.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/ChuckNorrisJokesModel.h -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Extensions/URLComponents+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Extensions/URLComponents+.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Models/Joke.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Models/Joke.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Protocols/JokeServiceDataPublisher.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Services/JokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/Services/JokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/View Models/JokesViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesModel/View Models/JokesViewModel.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/Info.plist -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/Services/MockJokesService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/Services/MockJokesService.swift -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/TestJoke.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/TestJoke.json -------------------------------------------------------------------------------- /20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/20-in-practice-building-a-complete-app/projects/starter/ChuckNorrisJokesTests/Tests/JokesViewModelTests.swift -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/README.md -------------------------------------------------------------------------------- /scripts/make-codex-branch.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/scripts/make-codex-branch.sh -------------------------------------------------------------------------------- /scripts/make-codex-subdirectory.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodecocodes/comb-materials/HEAD/scripts/make-codex-subdirectory.sh --------------------------------------------------------------------------------