├── .github
└── workflows
│ ├── checks.yml
│ └── release.yml
├── .gitignore
├── Documentation
├── Contribute.md
├── Examples.md
├── Ignoring.md
├── Images
│ ├── BuildPhaseExample.png
│ ├── CustomImport.png
│ ├── DemoRenameImage.gif
│ ├── DemoUseImage.gif
│ ├── ExplicitCustomModule.png
│ ├── ManualBuildPhaseExample.png
│ ├── NamespacedSubfolders.png
│ ├── RswiftSPMInstallation.mp4
│ ├── RunBuildToolPluginsBlank.png
│ ├── RunBuildToolPluginsRswift.png
│ └── RunXcodeModifyPackages.png
├── Migration.md
├── QandA.md
└── Readme.md
├── Examples
├── FileSystemSynchronized
│ ├── FileSystemSynchronized.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── MainUI
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ └── hand.ignoreme.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── hand.ignoreme.png
│ │ ├── Base.lproj
│ │ │ └── MyStoryboard.storyboard
│ │ ├── ContentView.swift
│ │ ├── Folder3 copy
│ │ │ ├── Folder3 copy 2
│ │ │ │ ├── hand3 three.png
│ │ │ │ └── hand3-two.png
│ │ │ ├── hand2 three.png
│ │ │ └── hand2-two.png
│ │ ├── Info.plist
│ │ ├── MainUI.entitlements
│ │ ├── MainUIApp.swift
│ │ ├── Preview Content
│ │ │ └── Preview Assets.xcassets
│ │ │ │ └── Contents.json
│ │ ├── User1.png
│ │ ├── View.xib
│ │ └── nl.lproj
│ │ │ └── MyStoryboard.strings
│ └── TheAppClip
│ │ ├── ClipAssets.xcassets
│ │ ├── Contents.json
│ │ └── MyColor.colorset
│ │ │ └── Contents.json
│ │ ├── ContentView.swift
│ │ ├── Group1
│ │ ├── Base.lproj
│ │ │ └── MySiriIntents.intentdefinition
│ │ ├── Folder1
│ │ │ └── .gitkeep
│ │ ├── Folder2
│ │ │ ├── Folder3 copy 2
│ │ │ │ ├── hand3 three.png
│ │ │ │ └── hand3-two.png
│ │ │ ├── hand three.png
│ │ │ └── hand-two.png
│ │ └── nl.lproj
│ │ │ └── MySiriIntents.strings
│ │ ├── Info.plist
│ │ ├── Preview Content
│ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ │ ├── Subdir
│ │ ├── Colors@3x.jpg
│ │ └── Inner group
│ │ │ ├── Nogeeen
│ │ │ └── person.png
│ │ │ └── User.png
│ │ ├── TheAppClip.entitlements
│ │ ├── TheAppClipApp.swift
│ │ ├── en.lproj
│ │ └── Localizable.strings
│ │ └── nl.lproj
│ │ └── Localizable.strings
├── LocalizedStringApp
│ ├── LocalizedStringApp.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── swiftpm
│ │ │ │ └── Package.resolved
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── LocalizedStringApp Dutch.xcscheme
│ │ │ ├── LocalizedStringApp English (GB).xcscheme
│ │ │ ├── LocalizedStringApp English.xcscheme
│ │ │ ├── LocalizedStringApp French (Canada).xcscheme
│ │ │ ├── LocalizedStringApp French.xcscheme
│ │ │ ├── LocalizedStringApp Turkish.xcscheme
│ │ │ └── LocalizedStringApp.xcscheme
│ ├── LocalizedStringApp
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── eight.strings
│ │ │ └── nine.strings
│ │ ├── Info.plist
│ │ ├── ca.lproj
│ │ │ └── four.strings
│ │ ├── en-GB.lproj
│ │ │ └── five.strings
│ │ ├── en.lproj
│ │ │ ├── MyStoryboard.storyboard
│ │ │ ├── five.strings
│ │ │ ├── nine.strings
│ │ │ ├── seven.strings
│ │ │ ├── three.strings
│ │ │ └── two.strings
│ │ ├── fr-CA.lproj
│ │ │ ├── five.strings
│ │ │ └── six.strings
│ │ ├── fr.lproj
│ │ │ ├── eight.strings
│ │ │ ├── five.strings
│ │ │ ├── nine.strings
│ │ │ ├── seven.strings
│ │ │ ├── six.strings
│ │ │ └── ten.stringsdict
│ │ ├── nl.lproj
│ │ │ ├── eight.strings
│ │ │ ├── four.strings
│ │ │ ├── nine.strings
│ │ │ ├── seven.strings
│ │ │ ├── ten.stringsdict
│ │ │ └── three.strings
│ │ └── one.strings
│ └── LocalizedStringAppTests
│ │ ├── Info.plist
│ │ └── LocalizedStringAppTests.swift
├── ResourceApp
│ ├── .rswiftignore
│ ├── Podfile
│ ├── Podfile.lock
│ ├── ResourceApp.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── swiftpm
│ │ │ │ └── Package.resolved
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── ResourceApp.xcscheme
│ ├── ResourceApp.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── swiftpm
│ │ │ └── Package.resolved
│ ├── ResourceApp
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ ├── Main.storyboard
│ │ │ └── Secondary.storyboard
│ │ ├── CellCollectionView.xib
│ │ ├── CellView.xib
│ │ ├── CustomSegue.swift
│ │ ├── Duplicate.storyboard
│ │ ├── Duplicate.xib
│ │ ├── Duplicate
│ │ │ ├── ADuplicateCellView.xib
│ │ │ ├── duplicate.storyboard
│ │ │ └── duplicate.xib
│ │ ├── DuplicateCellView.xib
│ │ ├── ExplicitInclude.ignoreme.png
│ │ ├── Files
│ │ │ ├── #column
│ │ │ ├── Duplicate.json
│ │ │ ├── Some.json
│ │ │ ├── __FILE__
│ │ │ ├── associatedtype
│ │ │ └── duplicateJson
│ │ ├── FirstViewController.swift
│ │ ├── Fonts
│ │ │ ├── AveriaLibre-B.ttf
│ │ │ ├── AveriaLibre-BI.ttf
│ │ │ ├── AveriaLibre-L.ttf
│ │ │ ├── AveriaLibre.ttf
│ │ │ └── GdyBkltter1911.ttf
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── AppIcon-1.png
│ │ │ │ ├── AppIcon-2.png
│ │ │ │ ├── AppIcon-3.png
│ │ │ │ ├── AppIcon.png
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── My Red.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── Namespace
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Second.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── second.pdf
│ │ │ │ └── first.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── first.pdf
│ │ │ ├── Second.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── second.pdf
│ │ │ ├── Some Folder
│ │ │ │ ├── A Nested Folder
│ │ │ │ │ ├── first nested.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── first.pdf
│ │ │ │ │ └── second nested.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── second.pdf
│ │ │ │ ├── eerste.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── first.pdf
│ │ │ │ └── second.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── second.pdf
│ │ │ ├── TheAppIcon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── The App Icon.png
│ │ │ └── first.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── first.pdf
│ │ ├── Images
│ │ │ ├── Colors.jpg
│ │ │ ├── Colors@2x.jpg
│ │ │ ├── Colors@2x~ipad.jpg
│ │ │ ├── Colors@3x.jpg
│ │ │ ├── Colors~ipad@2x.jpg
│ │ │ ├── Keep.dont.ignoreme.png
│ │ │ ├── Sky.tiff
│ │ │ ├── The App Icon.png
│ │ │ ├── User@white.png
│ │ │ ├── User@white@2x.png
│ │ │ ├── User@white@3x.png
│ │ │ └── icon.ignoreme.png
│ │ ├── Images2.xcassets
│ │ │ ├── Conflicting.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── first.pdf
│ │ │ ├── Contents.json
│ │ │ ├── Namespace 1
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Inner
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Namespace 2
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Folder
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── first.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── first.pdf
│ │ │ │ ├── Second.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── second.pdf
│ │ │ │ └── third.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── first.pdf
│ │ │ ├── Namespace-
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Inner
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Namespace
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Folder
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── first.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── first.pdf
│ │ │ │ ├── Second.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── second.pdf
│ │ │ │ └── third.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── first.pdf
│ │ │ └── conflicting
│ │ │ │ ├── Contents.json
│ │ │ │ └── first.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── first.pdf
│ │ ├── Info.plist
│ │ ├── Localized
│ │ │ ├── Base.lproj
│ │ │ │ └── hello.txt
│ │ │ ├── es.lproj
│ │ │ │ └── hello.txt
│ │ │ └── nl.lproj
│ │ │ │ └── hello.txt
│ │ ├── Media.xcassets
│ │ │ ├── Contents.json
│ │ │ ├── Folder
│ │ │ │ ├── Contents.json
│ │ │ │ └── Not dupe.colorset
│ │ │ │ │ └── Contents.json
│ │ │ ├── Keyboard Focus Indicator color.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── My Red.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── Not dupe.colorset
│ │ │ │ └── Contents.json
│ │ │ └── Slightly transparant.colorset
│ │ │ │ └── Contents.json
│ │ ├── My View.xib
│ │ ├── MyViewController.swift
│ │ ├── References.storyboard
│ │ ├── Relative To Project
│ │ │ └── RelativeToProject.xib
│ │ ├── SceneDelegate.swift
│ │ ├── SecondViewController.swift
│ │ ├── SegueIdentifiers.storyboard
│ │ ├── Settings.bundle
│ │ │ ├── Root.plist
│ │ │ └── en.lproj
│ │ │ │ └── Root.strings
│ │ ├── Specials.storyboard
│ │ ├── Strings
│ │ │ ├── @@.strings
│ │ │ ├── Base.lproj
│ │ │ │ ├── Settings.strings
│ │ │ │ └── Settings.stringsdict
│ │ │ ├── Duplicate#.strings
│ │ │ ├── Duplicate.strings
│ │ │ ├── Generic.strings
│ │ │ ├── Generic.stringsdict
│ │ │ ├── en.lproj
│ │ │ │ └── Localizable.strings
│ │ │ ├── es.lproj
│ │ │ │ └── Localizable.strings
│ │ │ ├── ja.lproj
│ │ │ │ └── Localizable.strings
│ │ │ └── nl.lproj
│ │ │ │ ├── Settings.strings
│ │ │ │ └── Settings.stringsdict
│ │ ├── SupplementaryElement.xib
│ │ ├── TabBarItem.storyboard
│ │ ├── WhitespaceReuseIdentifer.xib
│ │ ├── Xib with ViewController.xib
│ │ └── hand.ignoreme.png
│ └── ResourceAppTests
│ │ ├── FilesTests.swift
│ │ ├── FontsTests.swift
│ │ ├── IgnoreTests.swift
│ │ ├── Info.plist
│ │ ├── InfoPlistTests.swift
│ │ ├── NibTests.swift
│ │ ├── ResourceAppTests.swift
│ │ ├── SegueTests.swift
│ │ ├── StoryboardTests.swift
│ │ ├── StringsTests.swift
│ │ └── ValidationTests.swift
├── RswiftAppWithStaticFrameworks
│ ├── App
│ │ ├── Info.plist
│ │ ├── Resources
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AccentColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ └── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ └── Sources
│ │ │ ├── AppDelegate.swift
│ │ │ ├── SceneDelegate.swift
│ │ │ └── ViewController.swift
│ ├── AppTests
│ │ └── AppTests.swift
│ ├── Bar
│ │ ├── Info.plist
│ │ ├── Resources
│ │ │ └── Colors@3x.jpg
│ │ └── Sources
│ │ │ └── Bar.swift
│ ├── Foo
│ │ ├── Info.plist
│ │ ├── Resources
│ │ │ └── User.png
│ │ └── Sources
│ │ │ └── Foo.swift
│ ├── RswiftAppWithStaticFrameworks.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── swiftpm
│ │ │ │ └── Package.resolved
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── App.xcscheme
│ │ │ ├── Bar.xcscheme
│ │ │ └── Foo.xcscheme
│ └── copy_bundles.sh
├── RswiftUI
│ ├── RswiftUI.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── swiftpm
│ │ │ └── Package.resolved
│ ├── RswiftUI
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ └── hand.ignoreme.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── hand.ignoreme.png
│ │ ├── ContentView.swift
│ │ ├── Info.plist
│ │ ├── Preview Content
│ │ │ └── Preview Assets.xcassets
│ │ │ │ └── Contents.json
│ │ └── RswiftUIApp.swift
│ └── RswiftUIAppClip
│ │ ├── ClipAssets.xcassets
│ │ ├── Contents.json
│ │ └── MyColor.colorset
│ │ │ └── Contents.json
│ │ ├── ContentView.swift
│ │ ├── Info.plist
│ │ ├── Preview Content
│ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ │ ├── RswiftUIAppClip.entitlements
│ │ └── RswiftUIAppClipApp.swift
├── RtvApp
│ ├── .rswiftignore
│ ├── ResourceApp-tvOS
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── Brand Assets.brandassets
│ │ │ │ ├── App Icon - Large.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── App Icon - Small.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Top Shelf Image Wide.imageset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Top Shelf Image.imageset
│ │ │ │ │ └── Contents.json
│ │ │ ├── BrightWhite.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── ImageStackAsset.imagestack
│ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── allWhiteSmall.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── first.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── second.pdf
│ │ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ └── Main.storyboard
│ │ └── Info.plist
│ ├── ResourceAppTests-tvOS
│ │ ├── ImageTests.swift
│ │ ├── Info.plist
│ │ └── ValidationTests.swift
│ └── RtvApp.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── swiftpm
│ │ │ └── Package.resolved
│ │ └── xcshareddata
│ │ └── xcschemes
│ │ ├── ResourceApp-tvOS.xcscheme
│ │ └── ResourceAppTests-tvOS.xcscheme
└── RwatchApp
│ ├── .rswiftignore
│ ├── ResourceApp-watchOS-Extension
│ ├── Assets.xcassets
│ │ ├── Complication.complicationset
│ │ │ ├── Circular.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── Extra Large.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Graphic Bezel.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Graphic Circular.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Graphic Corner.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Graphic Extra Large.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Graphic Large Rectangular.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Modular.imageset
│ │ │ │ └── Contents.json
│ │ │ └── Utilitarian.imageset
│ │ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── MyColor.colorset
│ │ │ └── Contents.json
│ │ └── hand.ignoreme.imageset
│ │ │ ├── Contents.json
│ │ │ └── hand.ignoreme.png
│ ├── ExtensionDelegate.swift
│ ├── Info.plist
│ ├── InterfaceController.swift
│ ├── NotificationController.swift
│ ├── PushNotificationPayload.apns
│ └── Strings
│ │ ├── en.lproj
│ │ └── Localizable.strings
│ │ ├── es.lproj
│ │ └── Localizable.strings
│ │ └── ja.lproj
│ │ └── Localizable.strings
│ ├── ResourceApp-watchOS
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ └── Interface.storyboard
│ └── Info.plist
│ └── RwatchApp.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── swiftpm
│ │ └── Package.resolved
│ └── xcshareddata
│ └── xcschemes
│ ├── ResourceApp-watchOS (Notification).xcscheme
│ └── ResourceApp-watchOS.xcscheme
├── License
├── Package.resolved
├── Package.swift
├── Plugins
├── RswiftGenerateInternalResources
│ └── RswiftGenerateInternalResources.swift
├── RswiftGeneratePublicResources
│ └── RswiftGeneratePublicResources.swift
├── RswiftGenerateResourcesCommand
│ └── RswiftGenerateResourcesCommand.swift
└── RswiftModifyXcodePackages
│ └── RswiftModifyXcodePackages.swift
├── R.swift.podspec
├── README.md
├── Sources
├── RswiftGenerators
│ ├── AccessibilityIdentifier+Generator.swift
│ ├── AssetCatalog+Generator.swift
│ ├── Extensions
│ │ ├── Array+Extensions.swift
│ │ └── String+Extensions.swift
│ ├── FileResource+Generator.swift
│ ├── FontResource+Generator.swift
│ ├── Nib+Generator.swift
│ ├── PropertyListResource+Generator.swift
│ ├── ReuseIdentifier+Generator.swift
│ ├── Segue+Generator.swift
│ ├── Shared
│ │ ├── AssetCatalogMergedNamespaces.swift
│ │ ├── LocaleReference+Generator.swift
│ │ ├── SwiftIdentifier.swift
│ │ └── TypeReference+Generator.swift
│ ├── Storyboard+Generator.swift
│ ├── StringsTable+Generator.swift
│ ├── SwiftSyntax
│ │ ├── Struct.swift
│ │ └── StructMembersBuilder.swift
│ └── XcodeProject+Generator.swift
├── RswiftParsers
│ ├── ProjectResources.swift
│ ├── Resources
│ │ ├── AssetCatalog+Parser.swift
│ │ ├── FileResource+Parser.swift
│ │ ├── FontResource+Parser.swift
│ │ ├── ImageResource+Parser.swift
│ │ ├── Nib+Parser.swift
│ │ ├── PropertyList+Parser.swift
│ │ ├── Storyboard+Parser.swift
│ │ └── StringsTable+Parser.swift
│ └── Shared
│ │ ├── Bundle+Extensions.swift
│ │ ├── DeploymentTarget+Parser.swift
│ │ ├── FormatPart+Extensions.swift
│ │ ├── GeneratedId.swift
│ │ ├── Glob.swift
│ │ ├── IgnoreFile.swift
│ │ ├── ResourceParsingError.swift
│ │ ├── SourceTreeURLs.swift
│ │ ├── SupportedExtensions.swift
│ │ ├── TypeReference+Extensions.swift
│ │ ├── URL+Extensions.swift
│ │ └── Xcodeproj.swift
├── RswiftResources
│ ├── AssetCatalog.swift
│ ├── ColorResource.swift
│ ├── DataResource.swift
│ ├── FileResource.swift
│ ├── FontResource.swift
│ ├── ImageResource.swift
│ ├── Integrations
│ │ ├── Bundle+Extensions.swift
│ │ ├── ColorResource+Integrations.swift
│ │ ├── DataResource+Integrations.swift
│ │ ├── FileResource+Integrations.swift
│ │ ├── FontResource+Integrations.swift
│ │ ├── ImageResource+Integrations.swift
│ │ ├── NibReference+Integrations.swift
│ │ ├── ReuseIdentifier+Integrations.swift
│ │ ├── SegueIdentifier+Integrations.swift
│ │ ├── StoryboardReference+Integrations.swift
│ │ └── StringResource+Integrations.swift
│ ├── NibResource.swift
│ ├── PropertyListResource.swift
│ ├── Shared
│ │ ├── DeploymentTarget.swift
│ │ ├── LocaleReference.swift
│ │ ├── ModuleReference.swift
│ │ ├── NameCatalog.swift
│ │ ├── Reusable.swift
│ │ ├── StoryboardReference.swift
│ │ ├── StringParam+Extensions.swift
│ │ ├── StringParam.swift
│ │ ├── StringsTable.swift
│ │ ├── TypeReference.swift
│ │ ├── Unifiable.swift
│ │ └── ValidationError.swift
│ ├── StoryboardResource.swift
│ └── StringResource.swift
└── rswift
│ ├── App.swift
│ ├── Config.swift
│ └── RswiftCore.swift
└── Tests
├── RswiftGeneratorsTests
└── MainTests.swift
└── RswiftParsersTests
├── GlobTests.swift
└── NibParserDelegateTests.swift
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | xcuserdata
3 | DerivedData
4 | Pods
5 | *.xccheckout
6 | *.generated.swift
7 |
8 | fastlane/test_output
9 | fastlane/README.md
10 | fastlane/report.xml
11 | fastlane/settoken.sh
12 |
13 | build
14 | .build
15 | .swiftpm
16 | rswift.xcarchive
17 | rswift.xcodeproj
18 |
19 | rswift.log
20 | rswift-tv.log
21 | rswift-watchos.log
22 |
--------------------------------------------------------------------------------
/Documentation/Images/BuildPhaseExample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/BuildPhaseExample.png
--------------------------------------------------------------------------------
/Documentation/Images/CustomImport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/CustomImport.png
--------------------------------------------------------------------------------
/Documentation/Images/DemoRenameImage.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/DemoRenameImage.gif
--------------------------------------------------------------------------------
/Documentation/Images/DemoUseImage.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/DemoUseImage.gif
--------------------------------------------------------------------------------
/Documentation/Images/ExplicitCustomModule.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/ExplicitCustomModule.png
--------------------------------------------------------------------------------
/Documentation/Images/ManualBuildPhaseExample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/ManualBuildPhaseExample.png
--------------------------------------------------------------------------------
/Documentation/Images/NamespacedSubfolders.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/NamespacedSubfolders.png
--------------------------------------------------------------------------------
/Documentation/Images/RswiftSPMInstallation.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/RswiftSPMInstallation.mp4
--------------------------------------------------------------------------------
/Documentation/Images/RunBuildToolPluginsBlank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/RunBuildToolPluginsBlank.png
--------------------------------------------------------------------------------
/Documentation/Images/RunBuildToolPluginsRswift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/RunBuildToolPluginsRswift.png
--------------------------------------------------------------------------------
/Documentation/Images/RunXcodeModifyPackages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Documentation/Images/RunXcodeModifyPackages.png
--------------------------------------------------------------------------------
/Documentation/Readme.md:
--------------------------------------------------------------------------------
1 | # Documentation for R.swift
2 |
3 | - [Questions and Answers](QandA.md)
4 | - [Usage examples](Examples.md)
5 | - [Ignoring resources](Ignoring.md)
6 | - [Pointers for migration between major versions](Migration.md)
7 | - [About contributing](Contribute.md)
8 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/FileSystemSynchronized.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/FileSystemSynchronized.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Assets.xcassets/hand.ignoreme.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "hand.ignoreme.png",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Assets.xcassets/hand.ignoreme.imageset/hand.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/MainUI/Assets.xcassets/hand.ignoreme.imageset/hand.ignoreme.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // MainUI
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 | var body: some View {
12 | Text("Hello, SwiftUI App!")
13 | .padding()
14 |
15 | Image(R.image.handIgnoreme)
16 | .resizable()
17 | .aspectRatio(1, contentMode: .fit)
18 | .frame(width: 140)
19 | }
20 | }
21 |
22 | struct ContentView_Previews: PreviewProvider {
23 | static var previews: some View {
24 | ContentView()
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Folder3 copy/Folder3 copy 2/hand3 three.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/MainUI/Folder3 copy/Folder3 copy 2/hand3 three.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Folder3 copy/Folder3 copy 2/hand3-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/MainUI/Folder3 copy/Folder3 copy 2/hand3-two.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Folder3 copy/hand2 three.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/MainUI/Folder3 copy/hand2 three.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Folder3 copy/hand2-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/MainUI/Folder3 copy/hand2-two.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | NSUserActivityTypes
24 |
25 | FirstIntentIntent
26 |
27 | UIApplicationSceneManifest
28 |
29 | UIApplicationSupportsMultipleScenes
30 |
31 |
32 | UIApplicationSupportsIndirectInputEvents
33 |
34 | UILaunchScreen
35 |
36 | UIRequiredDeviceCapabilities
37 |
38 | armv7
39 |
40 | UISupportedInterfaceOrientations
41 |
42 | UIInterfaceOrientationPortrait
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 | UISupportedInterfaceOrientations~ipad
47 |
48 | UIInterfaceOrientationPortrait
49 | UIInterfaceOrientationPortraitUpsideDown
50 | UIInterfaceOrientationLandscapeLeft
51 | UIInterfaceOrientationLandscapeRight
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/MainUI.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.application-groups
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/MainUIApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MainUIApp.swift
3 | // MainUI
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct MainUIApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | .onAppear {
16 | // From Assets (in this target)
17 | print(R.image.handIgnoreme()!)
18 |
19 | // From root folder (in this target)
20 | print(R.image.user1()!)
21 | print(R.storyboard.myStoryboard.instantiateInitialViewController()!)
22 |
23 | // From Folders3 copy (in this target)
24 | print(R.image.hand3Two()!)
25 | print(R.image.hand3Three()!)
26 | print(R.image.hand2Two()!)
27 | print(R.image.hand2Three()!)
28 |
29 | // From Subdir (in TheAppClip target)
30 | print(R.image.person()!)
31 |
32 | // From root folder (in TheAppClip target)
33 | print(R.string.localizable.helloWorld())
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/User1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/MainUI/User1.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/View.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/MainUI/nl.lproj/MyStoryboard.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Second label"; ObjectID = "cgd-Ta-I3o"; */
3 | "cgd-Ta-I3o.text" = "Tweede label";
4 |
5 | /* Class = "UILabel"; text = "The first"; ObjectID = "oox-ej-MK4"; */
6 | "oox-ej-MK4.text" = "De eerste";
7 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/ClipAssets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/ClipAssets.xcassets/MyColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "platform" : "ios",
6 | "reference" : "systemTealColor"
7 | },
8 | "idiom" : "universal"
9 | },
10 | {
11 | "appearances" : [
12 | {
13 | "appearance" : "luminosity",
14 | "value" : "dark"
15 | }
16 | ],
17 | "color" : {
18 | "platform" : "ios",
19 | "reference" : "systemOrangeColor"
20 | },
21 | "idiom" : "universal"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // TheAppClip
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 | var body: some View {
12 | Text("Hello, App Clip!")
13 | .padding()
14 |
15 | Image(R.image.handIgnoreme)
16 | .resizable()
17 | .aspectRatio(1, contentMode: .fit)
18 | .frame(width: 140)
19 | .border(Color(R.color.myColor))
20 | }
21 | }
22 |
23 | struct ContentView_Previews: PreviewProvider {
24 | static var previews: some View {
25 | ContentView()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder1/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder1/.gitkeep
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/Folder3 copy 2/hand3 three.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/Folder3 copy 2/hand3 three.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/Folder3 copy 2/hand3-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/Folder3 copy 2/hand3-two.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/hand three.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/hand three.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/hand-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Group1/Folder2/hand-two.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Group1/nl.lproj/MySiriIntents.strings:
--------------------------------------------------------------------------------
1 | "0yVZNa" = "de omschrijving";
2 |
3 | "YPNLgh" = "Eerste Intent";
4 |
5 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Subdir/Colors@3x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Subdir/Colors@3x.jpg
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Subdir/Inner group/Nogeeen/person.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Subdir/Inner group/Nogeeen/person.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/Subdir/Inner group/User.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/FileSystemSynchronized/TheAppClip/Subdir/Inner group/User.png
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/TheAppClip.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.parent-application-identifiers
6 |
7 | $(AppIdentifierPrefix)nl.mathijskadijk.MainUI
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/TheAppClipApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TheAppClipApp.swift
3 | // TheAppClip
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct TheAppClipApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | .onAppear {
16 | // From ClipAssets (in this target)
17 | print(R.color.myColor()!)
18 |
19 | // From Group1 (in this target)
20 | print(R.image.handTwo()!)
21 | print(R.image.handThree()!)
22 | print(R.image.hand3Two()!)
23 | print(R.image.hand3Three()!)
24 | print(R.image.hand3Three()!)
25 |
26 | // From Subdir (in this target)
27 | print(R.image.colorsJpg()!)
28 | print(R.image.user()!)
29 |
30 | // From root folder (in this target)
31 | print(R.string.localizable.helloWorld())
32 |
33 | // From Assets (in MainUI)
34 | print(R.image.handIgnoreme()!)
35 |
36 | // From root folder (in MainUI)
37 | print(R.storyboard.myStoryboard.instantiateInitialViewController()!)
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | FileSystemSynchronized
4 |
5 | Created by Tom Lokhorst on 2024-11-03.
6 |
7 | */
8 |
9 | "hello.world" = "Hello world";
10 |
--------------------------------------------------------------------------------
/Examples/FileSystemSynchronized/TheAppClip/nl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | FileSystemSynchronized
4 |
5 | Created by Tom Lokhorst on 2024-11-03.
6 |
7 | */
8 |
9 | "hello.world" = "Hallo wereld";
10 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "cd466d6e8c5ffd2f2b61165d37b0646f09068e1e",
18 | "version" : "2.9.0"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/Base.lproj/eight.strings:
--------------------------------------------------------------------------------
1 | /*
2 | eight.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-26.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "eight1" = "eight 1, localized base";
10 | "eight2" = "eight 2, localized base";
11 | "eight3" = "eight 3, localized base";
12 |
13 | "eightArg1" = "eight 1 %@, localized base";
14 | "eightArg2" = "eight 2 %@, localized base";
15 | "eightArg3" = "eight 3 %@, localized base";
16 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/Base.lproj/nine.strings:
--------------------------------------------------------------------------------
1 | /*
2 | nine.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-31.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "nine1" = "nine 1, localized base";
10 | "nine2" = "nine 2, localized base";
11 | "nine3" = "nine 3, localized base";
12 |
13 | "nineArg1" = "nine 1 %@, localized base";
14 | "nineArg2" = "nine 2 %@, localized base";
15 | "nineArg3" = "nine 3 %@, localized base";
16 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSApplicationCategoryType
22 |
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/ca.lproj/four.strings:
--------------------------------------------------------------------------------
1 | /*
2 | four.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "four1" = "four 1, localized catalan";
10 | "fourArg" = "four %@, localized catalan";
11 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en-GB.lproj/five.strings:
--------------------------------------------------------------------------------
1 | /*
2 | five.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "five1" = "five 1, localized english gb";
10 |
11 |
12 |
13 | "fiveArg1" = "five 1 %@, localized english gb";
14 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en.lproj/MyStoryboard.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en.lproj/five.strings:
--------------------------------------------------------------------------------
1 | /*
2 | five.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "five1" = "five 1, localized english";
10 | "five2" = "five 2, localized english";
11 | "five3" = "five 3, localized english";
12 |
13 | "fiveArg1" = "five 1 %@, localized english";
14 | "fiveArg2" = "five 2 %@, localized english";
15 | "fiveArg3" = "five 3 %@, localized english";
16 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en.lproj/nine.strings:
--------------------------------------------------------------------------------
1 | /*
2 | nine.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-31.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "nine1" = "nine 1, localized english";
10 | "nine2" = "nine 2, localized english";
11 |
12 |
13 | "nineArg1" = "nine 1 %@, localized english";
14 | "nineArg2" = "nine 2 %@, localized english";
15 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en.lproj/seven.strings:
--------------------------------------------------------------------------------
1 | /*
2 | seven.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-22.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "seven1" = "seven 1, localized english";
10 | "seven2" = "seven 2, localized english";
11 |
12 |
13 | "sevenArg1" = "seven 1 %@, localized english";
14 | "sevenArg2" = "seven 2 %@, localized english";
15 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en.lproj/three.strings:
--------------------------------------------------------------------------------
1 | /*
2 | three.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "three1" = "three 1, localized english";
10 | "three2" = "three 2, localized english";
11 |
12 | "threeArg1" = "three 1 %@, localized english";
13 | "threeArg2" = "three 2 %@, localized english";
14 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/en.lproj/two.strings:
--------------------------------------------------------------------------------
1 | /*
2 | two.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "two1" = "two 1, localized english";
10 | "two2" = "two 2, %@ localized english";
11 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr-CA.lproj/five.strings:
--------------------------------------------------------------------------------
1 | /*
2 | five.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "five1" = "five 1, localized french canada";
10 |
11 |
12 |
13 | "fiveArg1" = "five 1 %@, localized french canada";
14 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr-CA.lproj/six.strings:
--------------------------------------------------------------------------------
1 | /*
2 | six.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "six1" = "six 1, localized french canada";
10 |
11 | "sixArg1" = "six 1 %@, localized french canada";
12 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr.lproj/eight.strings:
--------------------------------------------------------------------------------
1 | /*
2 | eight.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-26.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "eight1" = "eight 1, localized french";
10 | "eight2" = "eight 2, localized french";
11 |
12 |
13 | "eightArg1" = "eight 1 %@, localized french";
14 | "eightArg2" = "eight 2 %@, localized french";
15 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr.lproj/five.strings:
--------------------------------------------------------------------------------
1 | /*
2 | five.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "five1" = "five 1, localized french";
10 | "five2" = "five 2, localized french";
11 |
12 | "five4" = "five 4, localized french";
13 | "fiveArg1" = "five 1 %@, localized french";
14 | "fiveArg2" = "five 2 %@, localized french";
15 |
16 | "fiveArg4" = "five 4 %@, localized french";
17 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr.lproj/nine.strings:
--------------------------------------------------------------------------------
1 | /*
2 | nine.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-31.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "nine1" = "nine 1, localized french";
10 | "nine2" = "nine 2, localized french";
11 |
12 |
13 | "nineArg1" = "nine 1 %@, localized french";
14 | "nineArg2" = "nine 2 %@, localized french";
15 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr.lproj/seven.strings:
--------------------------------------------------------------------------------
1 | /*
2 | seven.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-22.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "seven1" = "seven 1, localized french";
10 | "seven2" = "seven 2, localized french";
11 | "seven3" = "seven 3, localized french";
12 | "seven4" = "seven 4, localized french";
13 | "sevenArg1" = "seven 1 %@, localized french";
14 | "sevenArg2" = "seven 2 %@, localized french";
15 | "sevenArg3" = "seven 3 %@, localized french";
16 | "sevenArg4" = "seven 4 %@, localized french";
17 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr.lproj/six.strings:
--------------------------------------------------------------------------------
1 | /*
2 | six.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "six1" = "six 1, localized french";
10 | "six2" = "six 2, localized french";
11 | "sixArg1" = "six 1 %@, localized french";
12 | "sixArg2" = "six 2 %@, localized french";
13 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/fr.lproj/ten.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ten1
6 |
7 | NSStringLocalizedFormatKey
8 | ten 1 - %#@things@, localized french
9 | things
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d thing
17 | other
18 | %d things
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/nl.lproj/eight.strings:
--------------------------------------------------------------------------------
1 | /*
2 | eight.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-26.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "eight1" = "eight 1, localized dutch";
10 |
11 |
12 | "eight4" = "eight 4, localized dutch";
13 | "eightArg1" = "eight 1 %@, localized dutch";
14 |
15 |
16 | "eightArg4" = "eight 4 %@, localized dutch";
17 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/nl.lproj/four.strings:
--------------------------------------------------------------------------------
1 | /*
2 | four.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "four1" = "four 1, localized dutch";
10 | "fourArg" = "four %@, localized dutch";
11 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/nl.lproj/nine.strings:
--------------------------------------------------------------------------------
1 | /*
2 | nine.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-31.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "nine1" = "nine 1, localized dutch";
10 |
11 |
12 | "nine4" = "nine 4, localized dutch";
13 | "nineArg1" = "nine 1 %@, localized dutch";
14 |
15 |
16 | "nineArg4" = "nine 4 %@, localized dutch";
17 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/nl.lproj/seven.strings:
--------------------------------------------------------------------------------
1 | /*
2 | seven.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-22.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "seven1" = "seven 1, localized dutch";
10 |
11 |
12 | "seven4" = "seven 4, localized dutch";
13 | "sevenArg1" = "seven 1 %@, localized dutch";
14 |
15 |
16 | "sevenArg4" = "seven 4 %@, localized dutch";
17 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/nl.lproj/ten.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ten1
6 |
7 | NSStringLocalizedFormatKey
8 | ten 1 - %#@things@, localized dutch
9 | things
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d thing
17 | other
18 | %d things
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/nl.lproj/three.strings:
--------------------------------------------------------------------------------
1 | /*
2 | three.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "three1" = "three 1, localized dutch";
10 |
11 | "three3" = "three 3, localized dutch";
12 | "threeArg1" = "three 1 %@, localized dutch";
13 |
14 | "threeArg3" = "three 3 %@, localized dutch";
15 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringApp/one.strings:
--------------------------------------------------------------------------------
1 | /*
2 | one.strings
3 | LocalizedStringApp
4 |
5 | Created by Tom Lokhorst on 2019-08-21.
6 | Copyright © 2019 R.swift. All rights reserved.
7 | */
8 |
9 | "one1" = "one 1, not localized";
10 | "one2" = "one 2, not localized";
11 | "oneArg" = "one %@, not localized";
12 |
--------------------------------------------------------------------------------
/Examples/LocalizedStringApp/LocalizedStringAppTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/.rswiftignore:
--------------------------------------------------------------------------------
1 | # Filtering single file
2 | ResourceApp/Images/Sky.tiff
3 |
4 | # Corrupt line
5 |
6 | # Ignore all files containing '.ignoreme.'
7 | **/*.ignoreme.*
8 |
9 | # Explicitly include single file
10 | !ResourceApp/ExplicitInclude.ignoreme.png
11 |
12 | # Explicitly include all files containing '.dont.ignoreme.'
13 | !**/*.dont.ignoreme.*
14 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 | workspace 'ResourceApp'
3 |
4 | target 'ResourceApp' do
5 | platform :ios, '12.0'
6 | project 'ResourceApp'
7 |
8 | pod 'SWRevealViewController'
9 | end
10 |
11 | post_install do |installer|
12 | installer.pods_project.targets.each do |target|
13 | target.build_configurations.each do |config|
14 | config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
15 | end
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - SWRevealViewController (2.3.0)
3 |
4 | DEPENDENCIES:
5 | - SWRevealViewController
6 |
7 | SPEC REPOS:
8 | trunk:
9 | - SWRevealViewController
10 |
11 | SPEC CHECKSUMS:
12 | SWRevealViewController: 6d3fd97f70112fd7cef9de14df4260eacce4c63a
13 |
14 | PODFILE CHECKSUM: e2c390a1550dbee3d41134bbc3a65772c599b62c
15 |
16 | COCOAPODS: 1.16.2
17 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "cd466d6e8c5ffd2f2b61165d37b0646f09068e1e",
18 | "version" : "2.9.0"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "1e761a55dd8d73b4e9cc227a297f438413953571",
18 | "version" : "2.11.1"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/CellCollectionView.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/CellView.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/CustomSegue.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CustomSegue.swift
3 | // ResourceApp
4 | //
5 | // Created by Tom Lokhorst on 2019-06-10.
6 | // Copyright © 2019 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CustomSegue: UIStoryboardSegue {
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Duplicate.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Duplicate.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Duplicate/ADuplicateCellView.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Duplicate/duplicate.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Duplicate/duplicate.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/DuplicateCellView.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/ExplicitInclude.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/ExplicitInclude.ignoreme.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Files/#column:
--------------------------------------------------------------------------------
1 | #column is a Swift keyword as of Swift 2.2
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Files/Duplicate.json:
--------------------------------------------------------------------------------
1 | { "some": "json" }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Files/Some.json:
--------------------------------------------------------------------------------
1 | { "some": "json" }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Files/__FILE__:
--------------------------------------------------------------------------------
1 | __FILE__ is a reserved keyword in Swift
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Files/associatedtype:
--------------------------------------------------------------------------------
1 | associatedtype is a Swift keyword as of Swift 2.2
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Files/duplicateJson:
--------------------------------------------------------------------------------
1 | { "some": "json" }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/FirstViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FirstViewController.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 20-07-15.
6 | // Copyright (c) 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class FirstViewController: UIViewController {
12 |
13 | @IBOutlet weak var titleLabel: UILabel!
14 |
15 | override func viewDidLoad() {
16 | super.viewDidLoad()
17 | // Do any additional setup after loading the view, typically from a nib.
18 | titleLabel.font = R.font.averiaLibreBoldItalic(size: 36)
19 | tabBarItem.image = R.image.userWhite()
20 | }
21 |
22 | override func didReceiveMemoryWarning() {
23 | super.didReceiveMemoryWarning()
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 |
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre-B.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre-B.ttf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre-BI.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre-BI.ttf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre-L.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre-L.ttf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Fonts/AveriaLibre.ttf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Fonts/GdyBkltter1911.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Fonts/GdyBkltter1911.ttf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon-1.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon-2.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon-3.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/AppIcon.appiconset/AppIcon.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/My Red.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "display-p3",
11 | "components" : {
12 | "red" : 0.8784313725,
13 | "alpha" : 1,
14 | "blue" : 0,
15 | "green" : 0.4392156863
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/Second.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "second.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/Second.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/Second.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/first.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/first.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Namespace/first.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Second.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "second.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Second.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Second.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/A Nested Folder/first nested.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/A Nested Folder/first nested.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/A Nested Folder/first nested.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/A Nested Folder/second nested.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "second.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/A Nested Folder/second nested.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/A Nested Folder/second nested.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/eerste.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/eerste.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/eerste.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/second.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "second.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/second.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/Some Folder/second.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/TheAppIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "The App Icon.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/TheAppIcon.imageset/The App Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/TheAppIcon.imageset/The App Icon.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/first.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images.xcassets/first.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images.xcassets/first.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Colors.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Colors.jpg
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Colors@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Colors@2x.jpg
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Colors@2x~ipad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Colors@2x~ipad.jpg
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Colors@3x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Colors@3x.jpg
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Colors~ipad@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Colors~ipad@2x.jpg
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Keep.dont.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Keep.dont.ignoreme.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/Sky.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/Sky.tiff
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/The App Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/The App Icon.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/User@white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/User@white.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/User@white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/User@white@2x.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/User@white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/User@white@3x.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images/icon.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images/icon.ignoreme.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Conflicting.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Conflicting.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Conflicting.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Inner/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Inner/Namespace 2/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Inner/Namespace 2/Folder/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Inner/Namespace 2/Folder/first.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Inner/Namespace 2/Folder/first.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Inner/Namespace 2/Folder/first.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Second.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "second.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Second.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/Second.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/third.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/third.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace 1/third.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Inner/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Inner/Namespace/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Inner/Namespace/Folder/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Inner/Namespace/Folder/first.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Inner/Namespace/Folder/first.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Inner/Namespace/Folder/first.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Second.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "second.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Second.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/Second.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/third.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/third.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/Namespace-/third.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/conflicting/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/conflicting/first.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "first.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Images2.xcassets/conflicting/first.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Images2.xcassets/conflicting/first.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Localized/Base.lproj/hello.txt:
--------------------------------------------------------------------------------
1 | Hello, World!
2 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Localized/es.lproj/hello.txt:
--------------------------------------------------------------------------------
1 | ¡Hola Mundo!
2 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Localized/nl.lproj/hello.txt:
--------------------------------------------------------------------------------
1 | Hallo, Wereld!
2 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/Folder/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/Folder/Not dupe.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : 0.7860491071,
13 | "alpha" : 1,
14 | "blue" : 1,
15 | "green" : 1
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/Keyboard Focus Indicator color.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : 0.2313725490196079,
13 | "alpha" : 1,
14 | "blue" : 0.9882352941176471,
15 | "green" : 0.6
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/My Red.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "display-p3",
11 | "components" : {
12 | "red" : 0.7215686274999999,
13 | "alpha" : 1,
14 | "blue" : 0.1019607843,
15 | "green" : 0.02745098039
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/Not dupe.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "display-p3",
11 | "components" : {
12 | "red" : 1,
13 | "alpha" : 1,
14 | "blue" : 1,
15 | "green" : 0.7767578125
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Media.xcassets/Slightly transparant.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "extended-gray",
11 | "components" : {
12 | "white" : 0,
13 | "alpha" : 0.4
14 | }
15 | }
16 | }
17 | ]
18 | }
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/MyViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyViewController.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 08-08-15.
6 | // Copyright © 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class MyViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | // Dispose of any resources that can be recreated.
22 | }
23 |
24 |
25 | /*
26 | // MARK: - Navigation
27 |
28 | // In a storyboard-based application, you will often want to do a little preparation before navigation
29 | override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
30 | // Get the new view controller using segue.destinationViewController.
31 | // Pass the selected object to the new view controller.
32 | }
33 | */
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/SecondViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SecondViewController.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 20-07-15.
6 | // Copyright (c) 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SecondViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | // Do any additional setup after loading the view, typically from a nib.
16 |
17 | let _ = MyViewController(nib: R.nib.myView)
18 | }
19 |
20 | override func didReceiveMemoryWarning() {
21 | super.didReceiveMemoryWarning()
22 | // Dispose of any resources that can be recreated.
23 | }
24 |
25 | @IBAction func unwindSomethingSomthing(_ segue: UIStoryboardSegue) {
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Settings.bundle/Root.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | StringsTable
6 | Root
7 | PreferenceSpecifiers
8 |
9 |
10 | Type
11 | PSGroupSpecifier
12 | Title
13 | Group
14 |
15 |
16 | Type
17 | PSTextFieldSpecifier
18 | Title
19 | Name
20 | Key
21 | name_preference
22 | DefaultValue
23 |
24 | IsSecure
25 |
26 | KeyboardType
27 | Alphabet
28 | AutocapitalizationType
29 | None
30 | AutocorrectionType
31 | No
32 |
33 |
34 | Type
35 | PSToggleSwitchSpecifier
36 | Title
37 | Enabled
38 | Key
39 | enabled_preference
40 | DefaultValue
41 |
42 |
43 |
44 | Type
45 | PSSliderSpecifier
46 | Key
47 | slider_preference
48 | DefaultValue
49 | 0.5
50 | MinimumValue
51 | 0
52 | MaximumValue
53 | 1
54 | MinimumValueImage
55 |
56 | MaximumValueImage
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Settings.bundle/en.lproj/Root.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/Settings.bundle/en.lproj/Root.strings
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/@@.strings:
--------------------------------------------------------------------------------
1 | /*
2 | @@.strings
3 | ResourceApp
4 |
5 | Created by Tom Lokhorst on 2016-04-17.
6 | Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | "at" = "@";
10 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/Base.lproj/Settings.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Settings.strings
3 | ResourceApp
4 |
5 | Created by Tom Lokhorst on 2016-04-17.
6 | Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | "Title" = "Settings";
10 |
11 | "Not translated" = "Base language; Not translated";
12 |
13 | "Multiline \\key/
14 | \"weird\"?!" = "ABC
15 | \"\\DEF/\"
16 | GHI Base";
17 | "Copy.Progress" = "%1$d of %2$i files copied, %3$f.2%% completed.";
18 | "We need a couple things\r\nbefore you get started." = "We need a couple things\r\nbefore you get started.";
19 |
20 | "FormatSpecifiers1" = "number 1: %d, number 2: %i, string 3: %@";
21 | "FormatSpecifiers2" = "string 3: %3$@, number 2: %2$d, number 1: %1$i";
22 | "FormatSpecifiers3" = "Nothing";
23 | "FormatSpecifiers4" = "number 1: %1$d";
24 | "FormatSpecifiers5" = "number 1: %d, string 3: %@";
25 | "FormatSpecifiers6" = "number 1: %1$i, string 3: %3$@";
26 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/Duplicate#.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Duplicate_.strings
3 | ResourceApp
4 |
5 | Created by Tom Lokhorst on 2016-04-17.
6 | Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | "duplicate2" = "Duplicate 2";
10 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/Duplicate.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Duplicate.strings
3 | ResourceApp
4 |
5 | Created by Tom Lokhorst on 2016-04-17.
6 | Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | "duplicate1" = "Duplicate 1";
10 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/Generic.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Generic.strings
3 | ResourceApp
4 |
5 | Created by Tom Lokhorst on 2016-04-17.
6 | Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | "loremipsum" = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
10 | "#" = "hashtag";
11 | "precision1" = "one - %012.2f";
12 | "precision2" = "two - %12.2f";
13 | "precision3" = "three - %12.4f";
14 | "precision4" = "four - %.2f";
15 | "discount10" = "Today, 10%% off!";
16 | "discountX" = "Today, %d%% off!";
17 | "url" = "http%%3A%%2F%%2Fwww.abc.xyz";
18 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | //
2 | // Localizable.strings
3 | // ResourceApp
4 | //
5 | // Created by Nolan Warner on 2016/03/01.
6 | // Copyright © 2016 Nolan Warner. All rights reserved.
7 | //
8 |
9 | one = Zero; // Duplicate keys are ignored, a warning from R.swift would be nice
10 | one = One;
11 | two = 2;
12 |
13 | "quote" = "There are %d lights!";
14 | "discount10" = "Today, 10%% off!";
15 | "discountX" = "Today, %d%% off!";
16 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/es.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | //
2 | // Localizable.strings
3 | // ResourceApp
4 | //
5 | // Created by Nolan Warner on 2016/03/01.
6 | // Copyright © 2016 Nolan Warner. All rights reserved.
7 | //
8 |
9 |
10 | one = Uno;
11 | two = 2;
12 |
13 | "quote" = "Hay %d luces!";
14 | "discount10" = "Today, 10%% off!";
15 | "discountX" = "Today, %d%% off!";
16 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | //
2 | // Localizable.strings
3 | // ResourceApp
4 | //
5 | // Created by Nolan Warner on 2016/03/01.
6 | // Copyright © 2016 Nolan Warner. All rights reserved.
7 | //
8 |
9 |
10 | one = "一つ";
11 | two = 2;
12 |
13 | "quote" = "%dつの光があります!";
14 | "discount10" = "Today, 10%% off!";
15 | "discountX" = "Today, %d%% off!";
16 | "japanese only" = "Not translated in other languages, and there is no Base";
17 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/Strings/nl.lproj/Settings.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Settings.strings
3 | ResourceApp
4 |
5 | Created by Tom Lokhorst on 2016-04-17.
6 | Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | "Title" = "Instellingen";
10 |
11 | "Only Dutch" = "Alleen Nederlands. Doesn't apepar in Base translation";
12 |
13 | "Multiline \\key/
14 | \"weird\"?!" = "ABC
15 | \"\\DEF/\"
16 | GHI Dutch";
17 | "Copy.Progress" = "Van de %2$d bestanden zijn er %1$d gekopieerd, %3$.2f%% compleet.";
18 | "We need a couple things\r\nbefore you get started." = "We hebben een aantal dingen nodig\r\nvoordat je begint.";
19 |
20 | "FormatSpecifiers1" = "number 1: %d, number 2: %i";
21 | "FormatSpecifiers2" = "string 3: %3$@, number 1: %1$i";
22 | "FormatSpecifiers3" = "number 2: %2$d, string 3: %3$@, number 1: %1$i";
23 | "FormatSpecifiers4" = "number 1: %d, number 2: %i, string 3: %@";
24 | "FormatSpecifiers5" = "number 1: %d, number 2: %i, string 3: %@";
25 | "FormatSpecifiers6" = "number 1: %1$i, string 3: %3$@";
26 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/SupplementaryElement.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/WhitespaceReuseIdentifer.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceApp/hand.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/ResourceApp/ResourceApp/hand.ignoreme.png
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/FilesTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FilesTests.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 25-09-15.
6 | // Copyright © 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import XCTest
11 | @testable import ResourceApp
12 |
13 | class FilesTests: XCTestCase {
14 |
15 | func testNoNilResourceFiles() {
16 | XCTAssertNotNil(R.file.someJson())
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/FontsTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FontsTests.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 26-08-15.
6 | // Copyright © 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import XCTest
11 | import RswiftResources
12 | @testable import ResourceApp
13 |
14 | class FontsTests: XCTestCase {
15 |
16 | func testNoNilFonts() {
17 | XCTAssertNotNil(R.font.averiaLibreBold(size: 10))
18 | XCTAssertNotNil(R.font.averiaLibreBoldItalic(size: 20))
19 | XCTAssertNotNil(R.font.averiaLibreLight(size: 30))
20 | XCTAssertNotNil(R.font.averiaLibreRegular(size: 40))
21 | XCTAssertNotNil(R.font.goudyBookletter1911(size: 50))
22 | }
23 |
24 | func testNoValidationError() {
25 | XCTAssertNoThrow(try R.font.validate())
26 | }
27 |
28 | func testAllFonts() {
29 | XCTAssertEqual(Array(R.font.map(\.name)), ["AveriaLibre-Bold", "AveriaLibre-BoldItalic", "AveriaLibre-Light", "AveriaLibre-Regular", "GoudyBookletter1911"])
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/IgnoreTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IgnoreTests.swift
3 | // ResourceAppTests
4 | //
5 | // Created by Mathijs Kadijk on 15-06-18.
6 | // Copyright © 2018 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import XCTest
11 | import RswiftResources
12 | @testable import ResourceApp
13 |
14 | class IgnoreTests: XCTestCase {
15 | func testExplicitInclude() {
16 | XCTAssertNotNil(R.image.keepDontIgnoreme())
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/NibTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NibTests.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 27-08-15.
6 | // Copyright © 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import XCTest
11 | @testable import ResourceApp
12 |
13 | class NibTests: XCTestCase {
14 |
15 | func testNibName() {
16 | XCTAssertEqual(R.nib.myView.name, "My View")
17 | }
18 |
19 | func testRelativeToProjectGroup() {
20 | XCTAssertTrue(R.nib.relativeToProject(owner: nil) != nil)
21 | XCTAssertTrue(R.nib.relativeToProject.firstView(owner: nil) != nil)
22 | }
23 |
24 | func testNibIsOfCorrectType() {
25 | XCTAssertTrue(type(of: R.nib.supplementaryElement).Reusable.classForCoder() == UICollectionReusableView.classForCoder())
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/SegueTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SegueTests.swift
3 | // ResourceApp
4 | //
5 | // Created by Tom Lokhorst on 2016-08-08.
6 | // Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import ResourceApp
11 |
12 | class SegueTests: XCTestCase {
13 |
14 | func testSegueNames() {
15 | XCTAssertEqual(R.segue.firstViewController.toSomeStoryboard.identifier, "toSomeStoryboard")
16 | XCTAssertEqual(R.segue.secondViewController.attachedSegue.identifier, "attachedSegue")
17 | XCTAssertEqual(R.segue.secondViewController.recognizerSegue.identifier, "recognizerSegue")
18 | XCTAssertEqual(R.segue.secondViewController.toThird.identifier, "toThird")
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/StoryboardTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StoryboardTests.swift
3 | // ResourceApp
4 | //
5 | // Created by Mathijs Kadijk on 10-01-16.
6 | // Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import ResourceApp
11 |
12 | class StoryboardTests: XCTestCase {
13 |
14 | func testStoryboardNames() {
15 | XCTAssertEqual(R.storyboard.main.name, "Main")
16 | XCTAssertEqual(R.storyboard.secondary.name, "Secondary")
17 | XCTAssertEqual(R.storyboard.specials.name, "Specials")
18 | }
19 |
20 | func testStoryboardInitialViewControllers() {
21 | XCTAssertNotNil(R.storyboard.main.instantiateInitialViewController(), "Initial view controller is missing")
22 | XCTAssertNotNil(R.storyboard.secondary.instantiateInitialViewController(), "Initial view controller is missing")
23 | }
24 |
25 | func testStoryboardSpecificViewControllers() {
26 | XCTAssertNotNil(R.storyboard.main.thirdViewController(), "Specific view controller is missing")
27 | XCTAssertNotNil(R.storyboard.specials.glkVC(), "Specific view controller is missing")
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Examples/ResourceApp/ResourceAppTests/ValidationTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValidationTests.swift
3 | // ResourceAppTests
4 | //
5 | // Created by Mathijs Kadijk on 20-07-15.
6 | // Copyright (c) 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import XCTest
11 | import RswiftResources
12 | @testable import ResourceApp
13 |
14 | class ValidationTests: XCTestCase {
15 |
16 | func testRunGlobalValidateMethod() {
17 | do {
18 | try R.validate()
19 | XCTFail("No error thrown")
20 | } catch let error as ValidationError {
21 | XCTAssertEqual(error.description, "[R.swift] Image named 'First' is used in storyboard 'Secondary', but couldn't be loaded.")
22 | } catch {
23 | XCTFail("Wrong error thrown")
24 | }
25 | }
26 |
27 | func testRunSpecificValidateMethods() {
28 | do {
29 | try R.storyboard.main.validate()
30 | } catch {
31 | XCTFail("Wrong error thrown")
32 | }
33 |
34 | do {
35 | try R.storyboard.secondary.validate()
36 | XCTFail("No error thrown")
37 | } catch let error as ValidationError {
38 | XCTAssertEqual(error.description, "[R.swift] Image named 'First' is used in storyboard 'Secondary', but couldn't be loaded.")
39 | } catch {
40 | XCTFail("Wrong error thrown")
41 | }
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/App/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/App/Resources/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/App/Sources/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Foo
3 | import Bar
4 |
5 | @main
6 | final class AppDelegate: UIResponder, UIApplicationDelegate {
7 |
8 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
9 | FooClass().foo()
10 | BarClass().bar()
11 | return true
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/App/Sources/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Foo
3 | import Bar
4 |
5 | final class ViewController: UIViewController {
6 |
7 | @IBOutlet weak var fooImageView: UIImageView!
8 | @IBOutlet weak var barImageView: UIImageView!
9 |
10 | override func viewDidLoad() {
11 | super.viewDidLoad()
12 | fooImageView.image = FooClass().sampleImage()
13 | barImageView.image = BarClass().sampleImage()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/AppTests/AppTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppTests.swift
3 | // AppTests
4 | //
5 | // Created by Tom Lokhorst on 2022-11-10.
6 | //
7 |
8 | import XCTest
9 | @testable import Foo
10 | @testable import Bar
11 |
12 | final class AppTests: XCTestCase {
13 |
14 | func testNotNil() throws {
15 | let fooBundle = Bundle.main.path(forResource: "Foo", ofType: "bundle").flatMap(Bundle.init(path:))!
16 | let barBundle = Bundle.main.path(forResource: "Bar", ofType: "bundle").flatMap(Bundle.init(path:))!
17 |
18 | let fooR = Foo._R(bundle: fooBundle)
19 | let barR = Bar._R(bundle: barBundle)
20 |
21 | XCTAssertNotNil(UIImage(resource: fooR.image.user))
22 | XCTAssertNotNil(UIImage(resource: barR.image.colorsJpg))
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/Bar/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/Bar/Resources/Colors@3x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RswiftAppWithStaticFrameworks/Bar/Resources/Colors@3x.jpg
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/Bar/Sources/Bar.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | let bundle = Bundle.main.path(forResource: "Bar", ofType: "bundle").flatMap(Bundle.init(path:))!
4 |
5 | public final class BarClass {
6 | public init() {}
7 | public func bar() {
8 | print("bar")
9 | }
10 |
11 | public func sampleImage() -> UIImage {
12 | R.image(bundle: bundle).colorsJpg()!
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/Foo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/Foo/Resources/User.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RswiftAppWithStaticFrameworks/Foo/Resources/User.png
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/Foo/Sources/Foo.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | let bundle = Bundle.main.path(forResource: "Foo", ofType: "bundle").flatMap(Bundle.init(path:))!
4 |
5 | public final class FooClass {
6 | public init() {}
7 | public func foo() {
8 | print("foo")
9 | }
10 |
11 | public func sampleImage() -> UIImage {
12 | R.image(bundle: bundle).user()!
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/RswiftAppWithStaticFrameworks.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "1e761a55dd8d73b4e9cc227a297f438413953571",
18 | "version" : "2.11.1"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/RswiftAppWithStaticFrameworks/copy_bundles.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | find "${BUILT_PRODUCTS_DIR}" -d 1 -name "*.framework" | while read framework
3 | do
4 | find -L "${framework}" -name "*.bundle" -d 1 | while read source
5 | do
6 | destination="${TARGET_BUILD_DIR}/${EXECUTABLE_FOLDER_PATH}"
7 | rsync -auv "${source}" "${destination}" || exit 1
8 | done
9 | done
10 | exit 0
11 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "cd466d6e8c5ffd2f2b61165d37b0646f09068e1e",
18 | "version" : "2.9.0"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/Assets.xcassets/hand.ignoreme.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "hand.ignoreme.png",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/Assets.xcassets/hand.ignoreme.imageset/hand.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RswiftUI/RswiftUI/Assets.xcassets/hand.ignoreme.imageset/hand.ignoreme.png
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // RswiftUI
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 | var body: some View {
12 | Text("Hello, SwiftUI App!")
13 | .padding()
14 |
15 | Image(R.image.handIgnoreme)
16 | .resizable()
17 | .aspectRatio(1, contentMode: .fit)
18 | .frame(width: 140)
19 | }
20 | }
21 |
22 | struct ContentView_Previews: PreviewProvider {
23 | static var previews: some View {
24 | ContentView()
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 |
28 | UIApplicationSupportsIndirectInputEvents
29 |
30 | UILaunchScreen
31 |
32 | UIRequiredDeviceCapabilities
33 |
34 | armv7
35 |
36 | UISupportedInterfaceOrientations
37 |
38 | UIInterfaceOrientationPortrait
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UISupportedInterfaceOrientations~ipad
43 |
44 | UIInterfaceOrientationPortrait
45 | UIInterfaceOrientationPortraitUpsideDown
46 | UIInterfaceOrientationLandscapeLeft
47 | UIInterfaceOrientationLandscapeRight
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUI/RswiftUIApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RswiftUIApp.swift
3 | // RswiftUI
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct RswiftUIApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/ClipAssets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/ClipAssets.xcassets/MyColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "platform" : "ios",
6 | "reference" : "systemTealColor"
7 | },
8 | "idiom" : "universal"
9 | },
10 | {
11 | "appearances" : [
12 | {
13 | "appearance" : "luminosity",
14 | "value" : "dark"
15 | }
16 | ],
17 | "color" : {
18 | "platform" : "ios",
19 | "reference" : "systemOrangeColor"
20 | },
21 | "idiom" : "universal"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // RswiftUIAppClip
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 | var body: some View {
12 | Text("Hello, App Clip!")
13 | .padding()
14 |
15 | Image(R.image.handIgnoreme)
16 | .resizable()
17 | .aspectRatio(1, contentMode: .fit)
18 | .frame(width: 140)
19 | .border(Color(R.color.myColor))
20 | }
21 | }
22 |
23 | struct ContentView_Previews: PreviewProvider {
24 | static var previews: some View {
25 | ContentView()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | RswiftUI
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UIApplicationSceneManifest
26 |
27 | UIApplicationSupportsMultipleScenes
28 |
29 |
30 | UIApplicationSupportsIndirectInputEvents
31 |
32 | UILaunchScreen
33 |
34 | UIRequiredDeviceCapabilities
35 |
36 | armv7
37 |
38 | UISupportedInterfaceOrientations
39 |
40 | UIInterfaceOrientationPortrait
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 | UISupportedInterfaceOrientations~ipad
45 |
46 | UIInterfaceOrientationPortrait
47 | UIInterfaceOrientationPortraitUpsideDown
48 | UIInterfaceOrientationLandscapeLeft
49 | UIInterfaceOrientationLandscapeRight
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/RswiftUIAppClip.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.parent-application-identifiers
6 |
7 | $(AppIdentifierPrefix)nl.mathijskadijk.RswiftUI
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Examples/RswiftUI/RswiftUIAppClip/RswiftUIAppClipApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RswiftUIAppClipApp.swift
3 | // RswiftUIAppClip
4 | //
5 | // Created by Tom Lokhorst on 2020-09-15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct RswiftUIAppClipApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/RtvApp/.rswiftignore:
--------------------------------------------------------------------------------
1 | # Filtering single file
2 | ResourceApp/Images/Sky.tiff
3 |
4 | # Corrupt line
5 |
6 | # Ignore all files containing '.ignoreme.'
7 | **/*.ignoreme.*
8 |
9 | # Explicitly include single file
10 | !ResourceApp/ExplicitInclude.ignoreme.png
11 |
12 | # Explicitly include all files containing '.dont.ignoreme.'
13 | !**/*.dont.ignoreme.*
14 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // ResourceApp-tvOS
4 | //
5 | // Created by Carl Hill-Popper on 3/24/16.
6 | // Copyright © 2016 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | var window: UIWindow?
15 |
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "layers" : [
3 | {
4 | "filename" : "Front.imagestacklayer"
5 | },
6 | {
7 | "filename" : "Middle.imagestacklayer"
8 | },
9 | {
10 | "filename" : "Back.imagestacklayer"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "layers" : [
3 | {
4 | "filename" : "Front.imagestacklayer"
5 | },
6 | {
7 | "filename" : "Middle.imagestacklayer"
8 | },
9 | {
10 | "filename" : "Back.imagestacklayer"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "size" : "1280x768",
5 | "idiom" : "tv",
6 | "filename" : "App Icon - Large.imagestack",
7 | "role" : "primary-app-icon"
8 | },
9 | {
10 | "size" : "400x240",
11 | "idiom" : "tv",
12 | "filename" : "App Icon - Small.imagestack",
13 | "role" : "primary-app-icon"
14 | },
15 | {
16 | "size" : "2320x720",
17 | "idiom" : "tv",
18 | "filename" : "Top Shelf Image Wide.imageset",
19 | "role" : "top-shelf-image-wide"
20 | },
21 | {
22 | "size" : "1920x720",
23 | "idiom" : "tv",
24 | "filename" : "Top Shelf Image.imageset",
25 | "role" : "top-shelf-image"
26 | }
27 | ],
28 | "info" : {
29 | "version" : 1,
30 | "author" : "xcode"
31 | }
32 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/Top Shelf Image Wide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Brand Assets.brandassets/Top Shelf Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "version" : 1,
14 | "author" : "xcode"
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/BrightWhite.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "1.000",
13 | "alpha" : "1.000",
14 | "blue" : "1.000",
15 | "green" : "1.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "filename" : "allWhiteSmall.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Back.imagestacklayer/Content.imageset/allWhiteSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Back.imagestacklayer/Content.imageset/allWhiteSmall.png
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "layers" : [
3 | {
4 | "filename" : "Front.imagestacklayer"
5 | },
6 | {
7 | "filename" : "Middle.imagestacklayer"
8 | },
9 | {
10 | "filename" : "Back.imagestacklayer"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "filename" : "first.pdf",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Front.imagestacklayer/Content.imageset/first.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Front.imagestacklayer/Content.imageset/first.pdf
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "filename" : "second.pdf",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Middle.imagestacklayer/Content.imageset/second.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Middle.imagestacklayer/Content.imageset/second.pdf
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/ImageStackAsset.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Assets.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "landscape",
5 | "idiom" : "tv",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "11.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "landscape",
12 | "idiom" : "tv",
13 | "extent" : "full-screen",
14 | "minimum-system-version" : "9.0",
15 | "scale" : "1x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceApp-tvOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIcons
10 |
11 | CFBundleIcons~ipad
12 |
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | $(PRODUCT_NAME)
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | 1.0
23 | CFBundleSignature
24 | ????
25 | CFBundleVersion
26 | 1
27 | LSRequiresIPhoneOS
28 |
29 | UIMainStoryboardFile
30 | Main
31 | UIRequiredDeviceCapabilities
32 |
33 | arm64
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceAppTests-tvOS/ImageTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImagesTests.swift
3 | // ResourceAppTests-tvOS
4 | //
5 | // Created by Mathijs Kadijk on 20-07-15.
6 | // Copyright (c) 2015 Mathijs Kadijk. All rights reserved.
7 | //
8 | import UIKit
9 | import XCTest
10 | @testable import ResourceApp_tvOS
11 |
12 | class ImagesTests: XCTestCase {
13 |
14 | func testNonNilImages() throws {
15 | XCTAssertNotNil(R.image.imageStackAsset())
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceAppTests-tvOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Examples/RtvApp/ResourceAppTests-tvOS/ValidationTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValidationTests.swift
3 | // ResourceAppTests-tvOS
4 | //
5 | // Created by Mathijs Kadijk on 06/04/2019.
6 | // Copyright © 2019 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import XCTest
11 | @testable import ResourceApp_tvOS
12 |
13 | class ValidationTests: XCTestCase {
14 |
15 | func testValidation() throws {
16 | try R.validate()
17 | }
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/Examples/RtvApp/RtvApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/RtvApp/RtvApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/RtvApp/RtvApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "cd466d6e8c5ffd2f2b61165d37b0646f09068e1e",
18 | "version" : "2.9.0"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/.rswiftignore:
--------------------------------------------------------------------------------
1 | # Filtering single file
2 | ResourceApp/Images/Sky.tiff
3 |
4 | # Corrupt line
5 |
6 | # Ignore all files containing '.ignoreme.'
7 | **/*.ignoreme.*
8 |
9 | # Explicitly include single file
10 | !ResourceApp/ExplicitInclude.ignoreme.png
11 |
12 | # Explicitly include all files containing '.dont.ignoreme.'
13 | !**/*.dont.ignoreme.*
14 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : "<=145"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">161"
12 | },
13 | {
14 | "idiom" : "watch",
15 | "scale" : "2x",
16 | "screen-width" : ">145"
17 | },
18 | {
19 | "idiom" : "watch",
20 | "scale" : "2x",
21 | "screen-width" : ">183"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "filename" : "Circular.imageset",
5 | "idiom" : "watch",
6 | "role" : "circular"
7 | },
8 | {
9 | "filename" : "Extra Large.imageset",
10 | "idiom" : "watch",
11 | "role" : "extra-large"
12 | },
13 | {
14 | "filename" : "Graphic Bezel.imageset",
15 | "idiom" : "watch",
16 | "role" : "graphic-bezel"
17 | },
18 | {
19 | "filename" : "Graphic Circular.imageset",
20 | "idiom" : "watch",
21 | "role" : "graphic-circular"
22 | },
23 | {
24 | "filename" : "Graphic Corner.imageset",
25 | "idiom" : "watch",
26 | "role" : "graphic-corner"
27 | },
28 | {
29 | "filename" : "Graphic Extra Large.imageset",
30 | "idiom" : "watch",
31 | "role" : "graphic-extra-large"
32 | },
33 | {
34 | "filename" : "Graphic Large Rectangular.imageset",
35 | "idiom" : "watch",
36 | "role" : "graphic-large-rectangular"
37 | },
38 | {
39 | "filename" : "Modular.imageset",
40 | "idiom" : "watch",
41 | "role" : "modular"
42 | },
43 | {
44 | "filename" : "Utilitarian.imageset",
45 | "idiom" : "watch",
46 | "role" : "utilitarian"
47 | }
48 | ],
49 | "info" : {
50 | "author" : "xcode",
51 | "version" : 1
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : "<=145"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">161"
12 | },
13 | {
14 | "idiom" : "watch",
15 | "scale" : "2x",
16 | "screen-width" : ">145"
17 | },
18 | {
19 | "idiom" : "watch",
20 | "scale" : "2x",
21 | "screen-width" : ">183"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : ">161"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">183"
12 | }
13 | ],
14 | "info" : {
15 | "author" : "xcode",
16 | "version" : 1
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : ">161"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">183"
12 | }
13 | ],
14 | "info" : {
15 | "author" : "xcode",
16 | "version" : 1
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : ">161"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">183"
12 | }
13 | ],
14 | "info" : {
15 | "author" : "xcode",
16 | "version" : 1
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : "<=145"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">161"
12 | },
13 | {
14 | "idiom" : "watch",
15 | "scale" : "2x",
16 | "screen-width" : ">145"
17 | },
18 | {
19 | "idiom" : "watch",
20 | "scale" : "2x",
21 | "screen-width" : ">183"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : ">161"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">183"
12 | }
13 | ],
14 | "info" : {
15 | "author" : "xcode",
16 | "version" : 1
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : "<=145"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">161"
12 | },
13 | {
14 | "idiom" : "watch",
15 | "scale" : "2x",
16 | "screen-width" : ">145"
17 | },
18 | {
19 | "idiom" : "watch",
20 | "scale" : "2x",
21 | "screen-width" : ">183"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "scale" : "2x",
6 | "screen-width" : "<=145"
7 | },
8 | {
9 | "idiom" : "watch",
10 | "scale" : "2x",
11 | "screen-width" : ">161"
12 | },
13 | {
14 | "idiom" : "watch",
15 | "scale" : "2x",
16 | "screen-width" : ">145"
17 | },
18 | {
19 | "idiom" : "watch",
20 | "scale" : "2x",
21 | "screen-width" : ">183"
22 | }
23 | ],
24 | "info" : {
25 | "author" : "xcode",
26 | "version" : 1
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/MyColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "extended-srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.188",
9 | "green" : "0.187",
10 | "red" : "1.000"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "extended-srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "1.000",
27 | "green" : "0.838",
28 | "red" : "0.392"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/hand.ignoreme.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "hand.ignoreme.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/hand.ignoreme.imageset/hand.ignoreme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mac-cain13/R.swift/f0a0d531686138e9f7ad4c2b6bf6115149aeb08b/Examples/RwatchApp/ResourceApp-watchOS-Extension/Assets.xcassets/hand.ignoreme.imageset/hand.ignoreme.png
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | ResourceApp-watchOS Extension
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | XPC!
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | NSExtension
24 |
25 | NSExtensionAttributes
26 |
27 | WKAppBundleIdentifier
28 | nl.mathijskadijk.ResourceApp.watchkitapp
29 |
30 | NSExtensionPointIdentifier
31 | com.apple.watchkit
32 |
33 | WKExtensionDelegateClassName
34 | $(PRODUCT_MODULE_NAME).ExtensionDelegate
35 |
36 |
37 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/InterfaceController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InterfaceController.swift
3 | // ResourceApp-watchOS Extension
4 | //
5 | // Created by Lammert Westerhoff on 28/08/2018.
6 | // Copyright © 2018 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import WatchKit
10 | import Foundation
11 |
12 | import RswiftResources
13 |
14 |
15 |
16 | class InterfaceController: WKInterfaceController {
17 |
18 | @IBOutlet weak var label: WKInterfaceLabel!
19 |
20 | override func awake(withContext context: Any?) {
21 | super.awake(withContext: context)
22 |
23 | label.setText(R.string.localizable.quote(11))
24 | label.setTextColor(UIColor(named: R.color.myColor.name))
25 | }
26 |
27 | override func willActivate() {
28 | // This method is called when watch view controller is about to be visible to user
29 | super.willActivate()
30 | }
31 |
32 | override func didDeactivate() {
33 | // This method is called when watch view controller is no longer visible
34 | super.didDeactivate()
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/NotificationController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NotificationController.swift
3 | // ResourceApp-watchOS Extension
4 | //
5 | // Created by Lammert Westerhoff on 28/08/2018.
6 | // Copyright © 2018 Mathijs Kadijk. All rights reserved.
7 | //
8 |
9 | import WatchKit
10 | import Foundation
11 | import UserNotifications
12 |
13 |
14 | class NotificationController: WKUserNotificationInterfaceController {
15 |
16 | override init() {
17 | // Initialize variables here.
18 | super.init()
19 |
20 | // Configure interface objects here.
21 | }
22 |
23 | override func willActivate() {
24 | // This method is called when watch view controller is about to be visible to user
25 | super.willActivate()
26 | }
27 |
28 | override func didDeactivate() {
29 | // This method is called when watch view controller is no longer visible
30 | super.didDeactivate()
31 | }
32 |
33 | override func didReceive(_ notification: UNNotification) {
34 | // This method is called when a notification needs to be presented.
35 | // Implement it if you use a dynamic notification interface.
36 | // Populate your dynamic notification interface as quickly as possible.
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/PushNotificationPayload.apns:
--------------------------------------------------------------------------------
1 | {
2 | "aps": {
3 | "alert": {
4 | "body": "Test message",
5 | "title": "Optional title",
6 | "subtitle": "Optional subtitle"
7 | },
8 | "category": "myCategory",
9 | "thread-id":"5280"
10 | },
11 |
12 | "WatchKit Simulator Actions": [
13 | {
14 | "title": "First Button",
15 | "identifier": "firstButtonAction"
16 | }
17 | ],
18 |
19 | "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App."
20 | }
21 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Strings/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | ResourceApp
4 |
5 | Created by Lammert Westerhoff on 28/08/2018.
6 | Copyright © 2018 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 | one = Zero; // Duplicate keys are ignored, a warning from R.swift would be nice
10 | one = One;
11 | two = 2;
12 |
13 | "quote" = "There are %d lights!";
14 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Strings/es.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | ResourceApp
4 |
5 | Created by Lammert Westerhoff on 28/08/2018.
6 | Copyright © 2018 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 |
10 | one = Uno;
11 | two = 2;
12 |
13 | "quote" = "Hay %d luces!";
14 |
15 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS-Extension/Strings/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | ResourceApp
4 |
5 | Created by Lammert Westerhoff on 28/08/2018.
6 | Copyright © 2018 Mathijs Kadijk. All rights reserved.
7 | */
8 |
9 |
10 | one = "一つ";
11 | two = 2;
12 |
13 | "quote" = "%dつの光があります!";
14 | "japanese only" = "Not translated in other languages, and there is no Base";
15 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "watch",
5 | "role" : "notificationCenter",
6 | "scale" : "2x",
7 | "size" : "24x24",
8 | "subtype" : "38mm"
9 | },
10 | {
11 | "idiom" : "watch",
12 | "role" : "notificationCenter",
13 | "scale" : "2x",
14 | "size" : "27.5x27.5",
15 | "subtype" : "42mm"
16 | },
17 | {
18 | "idiom" : "watch",
19 | "role" : "companionSettings",
20 | "scale" : "2x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "watch",
25 | "role" : "companionSettings",
26 | "scale" : "3x",
27 | "size" : "29x29"
28 | },
29 | {
30 | "idiom" : "watch",
31 | "role" : "appLauncher",
32 | "scale" : "2x",
33 | "size" : "40x40",
34 | "subtype" : "38mm"
35 | },
36 | {
37 | "idiom" : "watch",
38 | "role" : "appLauncher",
39 | "scale" : "2x",
40 | "size" : "44x44",
41 | "subtype" : "40mm"
42 | },
43 | {
44 | "idiom" : "watch",
45 | "role" : "appLauncher",
46 | "scale" : "2x",
47 | "size" : "50x50",
48 | "subtype" : "44mm"
49 | },
50 | {
51 | "idiom" : "watch",
52 | "role" : "quickLook",
53 | "scale" : "2x",
54 | "size" : "86x86",
55 | "subtype" : "38mm"
56 | },
57 | {
58 | "idiom" : "watch",
59 | "role" : "quickLook",
60 | "scale" : "2x",
61 | "size" : "98x98",
62 | "subtype" : "42mm"
63 | },
64 | {
65 | "idiom" : "watch",
66 | "role" : "quickLook",
67 | "scale" : "2x",
68 | "size" : "108x108",
69 | "subtype" : "44mm"
70 | },
71 | {
72 | "idiom" : "watch-marketing",
73 | "scale" : "1x",
74 | "size" : "1024x1024"
75 | }
76 | ],
77 | "info" : {
78 | "author" : "xcode",
79 | "version" : 1
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/ResourceApp-watchOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | ResourceApp
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | UISupportedInterfaceOrientations
24 |
25 | UIInterfaceOrientationPortrait
26 | UIInterfaceOrientationPortraitUpsideDown
27 |
28 | WKCompanionAppBundleIdentifier
29 | nl.mathijskadijk.ResourceApp
30 | WKWatchKitApp
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/RwatchApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/RwatchApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/RwatchApp/RwatchApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
9 | "version" : "1.2.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "cd466d6e8c5ffd2f2b61165d37b0646f09068e1e",
18 | "version" : "2.9.0"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/License:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014-2023 Mathijs Kadijk
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-argument-parser",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/apple/swift-argument-parser",
7 | "state" : {
8 | "revision" : "41982a3656a71c768319979febd796c6fd111d5c",
9 | "version" : "1.5.0"
10 | }
11 | },
12 | {
13 | "identity" : "xcodeedit",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/tomlokhorst/XcodeEdit",
16 | "state" : {
17 | "revision" : "0e550cdee72844b35431afc3a1e176042be6d0f0",
18 | "version" : "2.13.0"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/R.swift.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |spec|
2 |
3 | spec.name = "R.swift"
4 | spec.version = ENV['POD_VERSION']
5 | spec.license = "MIT"
6 |
7 | spec.summary = "Get strong typed, autocompleted resources like images, fonts and segues in Swift projects"
8 | spec.description = <<-DESC
9 | R.swift is a tool to get strong typed, autocompleted resources like images, fonts and segues in Swift projects.
10 |
11 | * Never type string identifiers again
12 | * Supports images, fonts, storyboards, nibs, segues, reuse identifiers and more
13 | * Compile time checks and errors instead of runtime crashes
14 | DESC
15 | spec.homepage = "https://github.com/mac-cain13/R.swift"
16 | spec.documentation_url = "https://github.com/mac-cain13/R.swift/tree/master/Documentation"
17 | spec.screenshots = [ "https://raw.githubusercontent.com/mac-cain13/R.swift/master/Documentation/Images/DemoUseImage.gif",
18 | "https://raw.githubusercontent.com/mac-cain13/R.swift/master/Documentation/Images/DemoRenameImage.gif" ]
19 |
20 | spec.author = { "Mathijs Kadijk" => "mkadijk@gmail.com" }
21 | spec.social_media_url = "https://twitter.com/mac_cain13"
22 |
23 | spec.requires_arc = true
24 | spec.source = { :http => "https://github.com/mac-cain13/R.swift/releases/download/#{spec.version}/rswift-#{spec.version}.zip" }
25 | spec.swift_version = "5.7"
26 |
27 | spec.osx.deployment_target = '10.15'
28 | spec.ios.deployment_target = '12'
29 | spec.tvos.deployment_target = '12'
30 | spec.watchos.deployment_target = '4'
31 |
32 | spec.preserve_paths = "rswift"
33 | spec.source_files = "Sources/RswiftResources/**/*.swift"
34 | spec.module_name = "RswiftResources"
35 |
36 | end
37 |
--------------------------------------------------------------------------------
/Sources/RswiftGenerators/Extensions/Array+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Array+Extensions.swift
3 | // RswiftGenerators
4 | //
5 | // Created by Tom Lokhorst on 2022-10-11.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Array where Element: Comparable, Element: Hashable {
11 | func uniqueAndSorted() -> [Element] {
12 | Set(self).sorted()
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Sources/RswiftGenerators/Extensions/String+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Extensions.swift
3 | // RswiftGenerators
4 | //
5 | // Created by Tom Lokhorst on 2021-04-18.
6 | //
7 |
8 | import Foundation
9 |
10 | extension String {
11 | var lowercaseFirstCharacter: String {
12 | if self.count <= 1 { return self.lowercased() }
13 | let index = self.index(startIndex, offsetBy: 1)
14 | return self[.. String {
24 | return self
25 | .components(separatedBy: "\n")
26 | .map { line in line .isEmpty ? "" : "\(indentation)\(line)" }
27 | .joined(separator: "\n")
28 | }
29 |
30 | var fullRange: NSRange {
31 | return NSRange(location: 0, length: self.count)
32 | }
33 |
34 | var escapedStringLiteral: String {
35 | return self
36 | .replacingOccurrences(of: "\\", with: "\\\\")
37 | .replacingOccurrences(of: "\"", with: "\\\"")
38 | .replacingOccurrences(of: "\t", with: "\\t")
39 | .replacingOccurrences(of: "\r", with: "\\r")
40 | .replacingOccurrences(of: "\n", with: "\\n")
41 | }
42 |
43 | var commentString: String {
44 | return self
45 | .replacingOccurrences(of: "\r\n", with: " ")
46 | .replacingOccurrences(of: "\r", with: " ")
47 | .replacingOccurrences(of: "\n", with: " ")
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Sources/RswiftGenerators/Shared/AssetCatalogMergedNamespaces.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AssetCatalogMergedNamespaces.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2017-06-06.
6 | //
7 |
8 | import Foundation
9 | import RswiftResources
10 |
11 | struct AssetCatalogMergedNamespaces {
12 | var namespaces: [SwiftIdentifier: AssetCatalog.Namespace] = [:]
13 | var duplicates: [(SwiftIdentifier, String)] = []
14 |
15 | init(all: [String: AssetCatalog.Namespace], otherIdentifiers: [SwiftIdentifier]) {
16 | for (name, namespace) in all {
17 | let id = SwiftIdentifier(name: name)
18 | if otherIdentifiers.contains(id) {
19 | duplicates.append((id, name))
20 | } else {
21 | namespaces[id, default: .init()].merge(namespace)
22 | }
23 | }
24 | }
25 |
26 | func printWarningsForDuplicates(result: String, warning: (String) -> Void) {
27 | for (identifier, name) in duplicates {
28 | warning("Skipping asset namespace '\(name)' because symbol '\(identifier.value)' would conflict with \(result): \(identifier.value)")
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Sources/RswiftGenerators/Shared/LocaleReference+Generator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // File.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-22.
6 | //
7 |
8 | import RswiftResources
9 |
10 | extension LocaleReference {
11 | func codeString() -> String {
12 | switch self {
13 | case .none:
14 | return "LocaleReference.none" // Plain `.none` is ambiguous whith Optional
15 | case .base:
16 | return ".base"
17 | case .language(let string):
18 | return #".language("\#(string)")"#
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Sources/RswiftGenerators/XcodeProject+Generator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XcodeProjectGenerator.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-11-03.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct XcodeProjectGenerator {
11 | public static func generateProject(developmentRegion: String?, knownAssetTags: [String]?) -> Struct {
12 | Struct(name: SwiftIdentifier(name: "project")) {
13 | let warning: (String) -> Void = { print("warning: [R.swift]", $0) }
14 |
15 | if let developmentRegion {
16 | LetBinding(name: SwiftIdentifier(name: "developmentRegion"), valueCodeString: #""\#(developmentRegion)""#)
17 | }
18 |
19 | if let knownAssetTags {
20 | let grouped = knownAssetTags.grouped(bySwiftIdentifier: { $0 })
21 | grouped.reportWarningsForDuplicatesAndEmpties(source: "known asset tag", result: "known asset tag", warning: warning)
22 | if grouped.uniques.count > 0 {
23 | Struct(name: SwiftIdentifier(name: "knownAssetTags"), protocols: [.sequence]) {
24 | grouped.uniques.map { tag in
25 | LetBinding(name: SwiftIdentifier(name: tag), valueCodeString: #""\#(tag)""#)
26 | }
27 |
28 | generateMakeIterator(names: grouped.uniques.map { SwiftIdentifier(name: $0) })
29 | }
30 | }
31 | }
32 | }
33 | }
34 |
35 | private static func generateMakeIterator(names: [SwiftIdentifier]) -> Function {
36 | Function(
37 | comments: [],
38 | name: .init(name: "makeIterator"),
39 | params: [],
40 | returnType: .indexingIterator(.string),
41 | valueCodeString: "[\(names.map(\.value).joined(separator: ", "))].makeIterator()"
42 | )
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Resources/FileResource+Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FileResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 09-12-15.
6 | //
7 |
8 | import Foundation
9 | import RswiftResources
10 |
11 | extension FileResource {
12 | // These are all extensions of resources that are passed to some special compiler step and not directly available at runtime
13 | static public let unsupportedExtensions: Set = [
14 | AssetCatalog.supportedExtensions,
15 | StringsTable.supportedExtensions,
16 | NibResource.supportedExtensions,
17 | StoryboardResource.supportedExtensions,
18 | ]
19 | .reduce([]) { $0.union($1) }
20 |
21 | static public func parse(url: URL) throws -> FileResource {
22 | guard let basename = url.filenameWithoutExtension else {
23 | throw ResourceParsingError("Couldn't extract filename from URL: \(url)")
24 | }
25 |
26 | let locale = LocaleReference(url: url)
27 |
28 | return FileResource(
29 | name: basename,
30 | pathExtension: url.pathExtension,
31 | bundle: .temp,
32 | locale: locale
33 | )
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Resources/FontResource+Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FontResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 09-12-15.
6 | //
7 |
8 | import Foundation
9 | import RswiftResources
10 |
11 | #if canImport(CoreGraphics)
12 | import CoreGraphics
13 | #endif
14 |
15 | extension FontResource: SupportedExtensions {
16 | static public let supportedExtensions: Set = ["otf", "ttf"]
17 |
18 | #if canImport(CoreGraphics)
19 | static public func parse(url: URL) throws -> FontResource {
20 | guard let dataProvider = CGDataProvider(url: url as CFURL) else {
21 | throw ResourceParsingError("Unable to create data provider for font at \(url)")
22 | }
23 |
24 | let font = CGFont(dataProvider)
25 | guard let postScriptName = font?.postScriptName else {
26 | throw ResourceParsingError("No postscriptName associated to font at \(url)")
27 | }
28 |
29 | return FontResource(
30 | name: postScriptName as String,
31 | bundle: .temp,
32 | filename: url.lastPathComponent
33 | )
34 | }
35 | #else
36 | static public func parse(url: URL) throws -> FontResource {
37 | throw ResourceParsingError("Unsupported FontResource.parse")
38 | }
39 | #endif
40 | }
41 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Resources/ImageResource+Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImageResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 09-12-15.
6 | //
7 |
8 | import Foundation
9 | import RswiftResources
10 |
11 | extension ImageResource: SupportedExtensions {
12 | // See "Supported Image Formats" on https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/
13 | static public let supportedExtensions: Set = ["tiff", "tif", "jpg", "jpeg", "gif", "png", "bmp", "bmpf", "ico", "cur", "xbm"]
14 |
15 | static public func parse(url: URL, assetTags: [String]?) throws -> ImageResource {
16 | let filename = url.lastPathComponent
17 | let pathExtension = url.pathExtension
18 | guard filename.count > 0 && pathExtension.count > 0 else {
19 | throw ResourceParsingError("Filename and/or extension could not be parsed from URL: \(url.absoluteString)")
20 | }
21 |
22 | let locale = LocaleReference(url: url)
23 |
24 | let extensions = ImageResource.supportedExtensions.joined(separator: "|")
25 | let regex = try! NSRegularExpression(pattern: "(~(ipad|iphone))?(@[2,3]x)?\\.(\(extensions))$", options: .caseInsensitive)
26 | let fullFileNameRange = NSRange(location: 0, length: filename.count)
27 | let pathExtensionToUse = (pathExtension == "png") ? "" : ".\(pathExtension)"
28 | let name = regex.stringByReplacingMatches(in: filename, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: fullFileNameRange, withTemplate: pathExtensionToUse)
29 |
30 | return ImageResource(name: name, path: [], bundle: .temp, locale: locale, onDemandResourceTags: assetTags)
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Resources/PropertyList+Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PropertyList.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2018-07-08.
6 | //
7 |
8 | import Foundation
9 | import RswiftResources
10 |
11 | extension PropertyListResource {
12 | static public func parse(url: URL, buildConfigurationName: String) throws -> PropertyListResource {
13 | guard
14 | let nsDictionary = NSDictionary(contentsOf: url),
15 | let dictionary = nsDictionary as? [String: Any]
16 | else {
17 | throw ResourceParsingError("File could not be parsed as InfoPlist from URL: \(url.absoluteString)")
18 | }
19 |
20 | return PropertyListResource(buildConfigurationName: buildConfigurationName, contents: dictionary, url: url)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/Bundle+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Bundle+Extensions.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-09-30.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Bundle {
11 | public static let temp: Bundle = .main
12 | }
13 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/DeploymentTarget+Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DeploymentTarget+Parser.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-10.
6 | //
7 |
8 | import RswiftResources
9 |
10 | func parseDeploymentTargetVersion(_ str: String) -> DeploymentTarget.Version? {
11 | guard str.count > 2 else { return nil }
12 | guard let i = Int(str) else { return nil }
13 | let s = String(i, radix: 16)
14 | guard
15 | let major = Int(s[.. Bool {
12 | generatedIdRegex.firstMatch(in: input, range: NSRange(location: 0, length: input.utf16.count)) != nil
13 | }
14 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/ResourceParsingError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ResourceParsingError.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2021-04-16.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct ResourceParsingError: Error {
11 | public var description: String
12 |
13 | public init(_ description: String) {
14 | self.description = description
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/SourceTreeURLs.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SourceTreeURLs.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-29.
6 | //
7 |
8 | import Foundation
9 | import XcodeEdit
10 |
11 | public struct SourceTreeURLs {
12 | public let builtProductsDirURL: URL
13 | public let developerDirURL: URL
14 | public let sourceRootURL: URL
15 | public let sdkRootURL: URL
16 | public let platformURL: URL
17 |
18 | public init(builtProductsDirURL: URL, developerDirURL: URL, sourceRootURL: URL, sdkRootURL: URL, platformURL: URL) {
19 | self.builtProductsDirURL = builtProductsDirURL
20 | self.developerDirURL = developerDirURL
21 | self.sourceRootURL = sourceRootURL
22 | self.sdkRootURL = sdkRootURL
23 | self.platformURL = platformURL
24 | }
25 |
26 | public func url(for sourceTreeFolder: SourceTreeFolder) -> URL {
27 | switch sourceTreeFolder {
28 | case .buildProductsDir:
29 | return builtProductsDirURL
30 | case .developerDir:
31 | return developerDirURL
32 | case .sdkRoot:
33 | return sdkRootURL
34 | case .sourceRoot:
35 | return sourceRootURL
36 | case .platformDir:
37 | return platformURL
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/SupportedExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SupportedExtensions.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 10-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public protocol SupportedExtensions {
11 | static var supportedExtensions: Set { get }
12 | }
13 |
14 | extension SupportedExtensions {
15 | static func throwIfUnsupportedExtension(_ url: URL) throws {
16 | let pathExtension = url.pathExtension
17 |
18 | if !supportedExtensions.contains(pathExtension.lowercased()) {
19 | throw ResourceUnsupportedExtensionError(url: url, typeName: "\(Self.self)", supportedExtensions: supportedExtensions)
20 | }
21 | }
22 | }
23 |
24 | public struct ResourceUnsupportedExtensionError: LocalizedError {
25 | public let url: URL
26 | public let typeName: String
27 | public let supportedExtensions: Set
28 |
29 | public init(url: URL, typeName: String, supportedExtensions: Set) {
30 | self.url = url
31 | self.typeName = typeName
32 | self.supportedExtensions = supportedExtensions
33 | }
34 |
35 | public var errorDescription: String {
36 | "URL '\(url)' has not supported extension, for type '\(typeName)', supported extensions \(supportedExtensions.joined(separator: ", "))"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/TypeReference+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TypeReference+Extensions.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-06-24.
6 | //
7 |
8 | import Foundation
9 | import RswiftResources
10 |
11 | extension TypeReference {
12 | static let nsView = TypeReference(module: .appKit, rawName: "NSView")
13 | static let nsViewController = TypeReference(module: .appKit, rawName: "NSViewController")
14 | static let nsStoryboardSegue = TypeReference(module: .appKit, rawName: "NSStoryboardSegue")
15 |
16 | static let uiView = TypeReference(module: .uiKit, rawName: "UIView")
17 | static let uiViewController = TypeReference(module: .uiKit, rawName: "UIViewController")
18 | static let uiStoryboardSegue = TypeReference(module: .uiKit, rawName: "UIStoryboardSegue")
19 | }
20 |
--------------------------------------------------------------------------------
/Sources/RswiftParsers/Shared/URL+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // URL+Extensions.swift
3 | // RswiftResources
4 | //
5 | // Created by Tom Lokhorst on 2021-04-25.
6 | //
7 |
8 | import Foundation
9 |
10 | internal extension URL {
11 | var filenameWithoutExtension: String? {
12 | let name = self.deletingPathExtension().lastPathComponent
13 | return name == "" ? nil : name
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/AssetCatalog.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AssetCatalog.swift
3 | // RswiftResources
4 | //
5 | // Created by Tom Lokhorst on 2021-06-13.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct AssetCatalog: Sendable {
11 | public let filename: String
12 | public let root: Namespace
13 |
14 | public init(filename: String, root: Namespace) {
15 | self.filename = filename
16 | self.root = root
17 | }
18 | }
19 |
20 | extension AssetCatalog {
21 | public struct Namespace: Sendable {
22 | public var subnamespaces: [String: Namespace] = [:]
23 | public var colors: [ColorResource] = []
24 | public var images: [ImageResource] = []
25 | public var dataAssets: [DataResource] = []
26 |
27 | public init() {
28 | }
29 |
30 | public init(
31 | subnamespaces: [String: Namespace],
32 | colors: [ColorResource],
33 | images: [ImageResource],
34 | dataAssets: [DataResource]
35 | ) {
36 | self.subnamespaces = subnamespaces
37 | self.colors = colors
38 | self.images = images
39 | self.dataAssets = dataAssets
40 | }
41 |
42 | public mutating func merge(_ other: Namespace) {
43 | self.subnamespaces = self.subnamespaces.merging(other.subnamespaces) { $0.merging($1) }
44 | self.colors += other.colors
45 | self.images += other.images
46 | self.dataAssets += other.dataAssets
47 | }
48 |
49 | public func merging(_ other: Namespace) -> Namespace {
50 | var new = self
51 | new.merge(other)
52 | return new
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/ColorResource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ColorResource.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-23.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct ColorResource: Sendable {
11 | public let name: String
12 | public let path: [String]
13 | public let bundle: Bundle
14 |
15 | public init(name: String, path: [String], bundle: Bundle) {
16 | self.name = name
17 | self.path = path
18 | self.bundle = bundle
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/DataResource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataResource.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-23.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct DataResource: Sendable {
11 | public let name: String
12 | public let path: [String]
13 | public let bundle: Bundle
14 | public let onDemandResourceTags: [String]?
15 |
16 | public init(name: String, path: [String], bundle: Bundle, onDemandResourceTags: [String]?) {
17 | self.name = name
18 | self.path = path
19 | self.bundle = bundle
20 | self.onDemandResourceTags = onDemandResourceTags
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/FileResource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FileResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 09-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct FileResource: Sendable {
11 | public let name: String
12 | public let pathExtension: String
13 | public let bundle: Bundle
14 | public let locale: LocaleReference?
15 |
16 | public init(name: String, pathExtension: String, bundle: Bundle, locale: LocaleReference?) {
17 | self.name = name
18 | self.pathExtension = pathExtension
19 | self.bundle = bundle
20 | self.locale = locale
21 | }
22 |
23 | public var filename: String {
24 | name.isEmpty || pathExtension.isEmpty
25 | ? "\(name)\(pathExtension)"
26 | : "\(name).\(pathExtension)"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/FontResource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FontResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 09-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct FontResource: Sendable {
11 | public let name: String
12 | public let bundle: Bundle
13 | public let filename: String
14 |
15 | public init(name: String, bundle: Bundle, filename: String) {
16 | self.name = name
17 | self.bundle = bundle
18 | self.filename = filename
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/ImageResource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImageResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 09-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct ImageResource: Sendable {
11 | public let name: String
12 | public let path: [String]
13 | public let bundle: Bundle
14 | public let locale: LocaleReference?
15 | public let onDemandResourceTags: [String]?
16 |
17 | public init(name: String, path: [String], bundle: Bundle, locale: LocaleReference?, onDemandResourceTags: [String]?) {
18 | self.name = name
19 | self.path = path
20 | self.bundle = bundle
21 | self.locale = locale
22 | self.onDemandResourceTags = onDemandResourceTags
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Integrations/DataResource+Integrations.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataResource+Integrations.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-31.
6 | //
7 |
8 | import Foundation
9 |
10 | #if canImport(UIKit)
11 | import UIKit
12 | #elseif canImport(AppKit)
13 | import AppKit
14 | #endif
15 |
16 | #if canImport(UIKit) || canImport(AppKit)
17 | extension NSDataAsset {
18 |
19 | /**
20 | Returns the data asset from this resource (`R.data.*`)
21 |
22 | - parameter resource: The resource you want the data asset of (`R.data.*`)
23 | */
24 | public convenience init?(resource: DataResource) {
25 | self.init(name: resource.name, bundle: resource.bundle)
26 | }
27 |
28 | }
29 |
30 | extension DataResource {
31 |
32 | /**
33 | Returns the raw data values from this resource (`R.data.*`)
34 |
35 | - parameter resource: The resource you want the data asset of (`R.data.*`)
36 | */
37 | public func callAsFunction() -> Data? {
38 | NSDataAsset(resource: self)?.data
39 | }
40 | }
41 | #endif
42 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Integrations/FileResource+Integrations.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Bundle+FileResource.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 10-01-16.
6 | //
7 |
8 | import Foundation
9 |
10 | extension FileResource {
11 | /**
12 | Returns the file URL for the given resource (`R.file.*`).
13 |
14 | - returns: The file URL for the resource file (`R.file.*`) or nil if the file could not be located.
15 | */
16 | public func url() -> URL? {
17 | bundle.url(forResource: name, withExtension: pathExtension)
18 | }
19 |
20 | /**
21 | Returns the file URL for the given resource (`R.file.*`).
22 |
23 | - returns: The file URL for the resource file (`R.file.*`) or nil if the file could not be located.
24 | */
25 | @available(*, renamed: "url()")
26 | public func callAsFunction() -> URL? {
27 | url()
28 | }
29 | }
30 |
31 | extension Bundle {
32 | /**
33 | Returns the file URL for the given resource (`R.file.*`).
34 |
35 | - parameter resource: The resource to get the file URL for (`R.file.*`).
36 |
37 | - returns: The file URL for the resource file (`R.file.*`) or nil if the file could not be located.
38 | */
39 | public func url(forResource resource: FileResource) -> URL? {
40 | url(forResource: resource.name, withExtension: resource.pathExtension)
41 | }
42 |
43 | /**
44 | Returns the full pathname for the resource (`R.file.*`).
45 |
46 | - parameter resource: The resource file to get the path for (`R.file.*`).
47 |
48 | - returns: The full pathname for the resource file (`R.file.*`) or nil if the file could not be located.
49 | */
50 | public func path(forResource resource: FileResource) -> String? {
51 | path(forResource: resource.name, ofType: resource.pathExtension)
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/PropertyListResource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PropertyListResource.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2018-07-08.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct PropertyListResource {
11 | public typealias Contents = [String: Any]
12 |
13 | public let buildConfigurationName: String
14 | public let contents: Contents
15 | public let url: URL
16 |
17 | public init(buildConfigurationName: String, contents: Contents, url: URL) {
18 | self.buildConfigurationName = buildConfigurationName
19 | self.contents = contents
20 | self.url = url
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/DeploymentTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DeploymentTarget.swift
3 | //
4 | //
5 | // Created by Tom Lokhorst on 2022-07-10.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct DeploymentTarget: Equatable, Sendable {
11 | public typealias Version = (major: Int, minor: Int)
12 |
13 | public let version: Version?
14 | public let platform: String
15 |
16 | public init(version: Version?, platform: String) {
17 | self.version = version
18 | self.platform = platform
19 | }
20 |
21 | public static func ==(lhs: DeploymentTarget, rhs: DeploymentTarget) -> Bool {
22 | lhs.platform == rhs.platform
23 | && lhs.version?.major == rhs.version?.major
24 | && lhs.version?.minor == rhs.version?.minor
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/LocaleReference.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Locale.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2016-04-24.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum LocaleReference: Hashable, Sendable {
11 | case none
12 | case base // Older projects use a "Base" locale
13 | case language(String)
14 |
15 | public var isNone: Bool {
16 | if case .none = self {
17 | return true
18 | }
19 |
20 | return false
21 | }
22 |
23 | public var isBase: Bool {
24 | if case .base = self {
25 | return true
26 | }
27 |
28 | return false
29 | }
30 | }
31 |
32 | extension LocaleReference {
33 | public init(url: URL) {
34 | if let localeComponent = url.pathComponents.dropLast().last , localeComponent.hasSuffix(".lproj") {
35 | let lang = localeComponent.replacingOccurrences(of: ".lproj", with: "")
36 |
37 | if lang == "Base" {
38 | self = .base
39 | } else {
40 | self = .language(lang)
41 | }
42 | }
43 | else {
44 | self = .none
45 | }
46 | }
47 |
48 | public var localeDescription: String? {
49 | switch self {
50 | case .none:
51 | return nil
52 |
53 | case .base:
54 | return "Base"
55 |
56 | case .language(let language):
57 | return language
58 | }
59 | }
60 |
61 | public func debugDescription(filename: String) -> String {
62 | switch self {
63 | case .none:
64 | return "'\(filename)'"
65 | case .base:
66 | return "'\(filename)' (Base)"
67 | case .language(let language):
68 | return "'\(filename)' (\(language))"
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/ModuleReference.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ModuleReference.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 11-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum ModuleReference: Hashable, Sendable {
11 | case host
12 | case stdLib
13 | case custom(name: String)
14 |
15 | public init(name: String?, fallback: ModuleReference = .host) {
16 | let cleaned = name?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
17 | self = cleaned.isEmpty ? fallback : .custom(name: cleaned)
18 | }
19 |
20 | public var isCustom: Bool {
21 | switch self {
22 | case .custom:
23 | return true
24 | default:
25 | return false
26 | }
27 | }
28 |
29 | public var name: String? {
30 | if case .custom(let name) = self {
31 | return name
32 | } else {
33 | return nil
34 | }
35 | }
36 | }
37 |
38 | extension ModuleReference {
39 | public static var uiKit: ModuleReference { .custom(name: "UIKit") }
40 | public static var appKit: ModuleReference { .custom(name: "AppKit") }
41 | public static var coreText: ModuleReference { .custom(name: "CoreText") }
42 | public static var foundation: ModuleReference { .custom(name: "Foundation") }
43 | public static var rswiftResources: ModuleReference { .custom(name: "RswiftResources") }
44 | }
45 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/NameCatalog.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NameCatalog.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2020-05-08.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct NameCatalog: Hashable, Comparable, Sendable {
11 | public let name: String
12 | public let catalog: String?
13 |
14 | public var isSystemCatalog: Bool {
15 | catalog == "System" // for colors
16 | || catalog == "system" // for images
17 | }
18 |
19 | public init(name: String, catalog: String?) {
20 | self.name = name
21 | self.catalog = catalog
22 | }
23 |
24 | static public func < (lhs: NameCatalog, rhs: NameCatalog) -> Bool {
25 | lhs.name < rhs.name
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/Reusable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReusableContainer.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 10-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct Reusable: Hashable, Sendable {
11 | public let identifier: String
12 | public let type: TypeReference
13 |
14 | public init(identifier: String, type: TypeReference) {
15 | self.identifier = identifier
16 | self.type = type
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/StringParam.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringParam.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2016-04-18.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct StringParam: Equatable, Sendable {
11 | public let name: String?
12 | public let spec: FormatSpecifier
13 |
14 | public init(name: String?, spec: FormatSpecifier) {
15 | self.name = name
16 | self.spec = spec
17 | }
18 | }
19 |
20 | public enum FormatPart: Sendable {
21 | case spec(FormatSpecifier)
22 | case reference(String)
23 |
24 | public var formatSpecifier: FormatSpecifier? {
25 | switch self {
26 | case .spec(let formatSpecifier):
27 | return formatSpecifier
28 |
29 | case .reference:
30 | return nil
31 | }
32 | }
33 | }
34 |
35 | // https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1
36 | public enum FormatSpecifier: Sendable {
37 | case object
38 | case double
39 | case int
40 | case uInt
41 | case character
42 | case cStringPointer
43 | case voidPointer
44 | case topType
45 | }
46 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/StringsTable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocalizableStrings.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2016-04-24.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct StringsTable: Sendable {
11 | public let filename: String
12 | public let locale: LocaleReference
13 | public let dictionary: [Key: Value]
14 |
15 | public init(filename: String, locale: LocaleReference, dictionary: [Key: Value]) {
16 | self.filename = filename
17 | self.locale = locale
18 | self.dictionary = dictionary
19 | }
20 |
21 | public typealias Key = String
22 | public struct Value: Sendable {
23 | public let params: [StringParam]
24 | public let originalValue: String
25 |
26 | public init(params: [StringParam], originalValue: String) {
27 | self.params = params
28 | self.originalValue = originalValue
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/TypeReference.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TypeReference.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 10-12-15.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct TypeReference: Hashable, Sendable {
11 | public let module: ModuleReference
12 | public let name: String
13 | public var genericArgs: [TypeReference]
14 |
15 | public init(module: ModuleReference, rawName: String) {
16 | self.module = module
17 | self.name = rawName
18 | self.genericArgs = []
19 | }
20 |
21 | public init(module: ModuleReference, name: String, genericArgs: [TypeReference]) {
22 | self.module = module
23 | self.name = name
24 | self.genericArgs = genericArgs
25 | }
26 |
27 | public var allModuleReferences: Set {
28 | Set(genericArgs.flatMap(\.allModuleReferences)).union([module])
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/Unifiable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Unifiable.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2016-04-30.
6 | //
7 |
8 | import Foundation
9 |
10 | public protocol Unifiable {
11 | func unify(_ other: Self) -> Self?
12 | }
13 |
14 | extension Array where Element : Unifiable {
15 | public func unify(_ other: [Element]) -> [Element]? {
16 | var result = self
17 |
18 | for (ix, right) in other.enumerated() {
19 | if let left = result[safe: ix] {
20 | if let unified = left.unify(right) {
21 | result[ix] = unified
22 | }
23 | else {
24 | return nil
25 | }
26 | }
27 | else {
28 | result.append(right)
29 | }
30 | }
31 |
32 | return result
33 | }
34 | }
35 |
36 | private extension Array {
37 | subscript (safe index: Int) -> Element? {
38 | indices ~= index ? self[index] : nil
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Sources/RswiftResources/Shared/ValidationError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Validatable.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 17-12-15.
6 | // From: https://github.com/mac-cain13/R.swift
7 | //
8 |
9 | import Foundation
10 |
11 | /// Error thrown during validation
12 | public struct ValidationError: Error, CustomStringConvertible, Sendable {
13 | /// Human readable description
14 | public let description: String
15 |
16 | public init(_ description: String) {
17 | self.description = description
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Sources/rswift/Config.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Config.swift
3 | // R.swift
4 | //
5 | // Created by Tom Lokhorst on 2017-04-22.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Config {
11 | static let version = "Unknown"
12 | }
13 |
--------------------------------------------------------------------------------
/Tests/RswiftGeneratorsTests/MainTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MainTests.swift
3 | // R.swift
4 | //
5 | // Created by Mathijs Kadijk on 28-09-15.
6 | //
7 |
8 | import XCTest
9 | @testable import RswiftGenerators
10 |
11 | class MainTests: XCTestCase {
12 | override func setUp() {
13 | super.setUp()
14 | }
15 |
16 | override func tearDown() {
17 | super.tearDown()
18 | }
19 |
20 | let swiftNameData = [
21 | "easy": "easy",
22 | "easyAndSimple": "easyAndSimple",
23 | "easy with some spaces": "easyWithSomeSpaces",
24 | "(looks) easy": "looksEasy",
25 | "looks-easy": "looksEasy",
26 | "looks+like^some-kind*of%easy": "looksLikeSomeKindOfEasy",
27 | "(looks) easy, but it's not really NeXT that easy!": "looksEasyButItSNotReallyNeXTThatEasy",
28 | "easy 123 and done...": "easy123AndDone",
29 | "123 easy!": "easy",
30 | "123 456easy": "easy",
31 | "123 😄": "😄",
32 | "🇳🇱": "🇳🇱",
33 | "🌂MakeItRain!": "🌂MakeItRain",
34 | "PRFXMyClass": "prfxMyClass",
35 | "NSSomeThing": "nsSomeThing",
36 | "MyClass": "myClass",
37 | "PRFX_MyClass": "prfx_MyClass",
38 | "PRFX-myClass": "prfxMyClass",
39 | "123NSSomeThing": "nsSomeThing",
40 | "PR123FXMyClass": "pr123FXMyClass"
41 | ]
42 |
43 | func testSwiftNameSanitization() {
44 | swiftNameData.forEach {
45 | let sanitizedResult = SwiftIdentifier(name: $0.0, lowercaseStartingCharacters: true).value
46 | XCTAssertEqual(sanitizedResult, $0.1)
47 | }
48 | }
49 |
50 | func testPerformanceSwiftNameSanitization() {
51 | // This is an example of a performance test case.
52 | self.measure {
53 | (0...1000).forEach { _ in
54 | let _ = SwiftIdentifier(name: "(looks) easy, but it's not reallY that easy!", lowercaseStartingCharacters: true)
55 | }
56 | }
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------