swiftgen: migrate to version 5.1.1
Change project to support 5.1.1 version of swiftgen (swiftgen 4.x is not
supported anymore)
We use default templates provided by Swiftgen
Change-Id: I78da863f4fb3664cb0becbf93dadf68aa339826f
diff --git a/Ring/Ring/Account/CreateRingAccountViewModel.swift b/Ring/Ring/Account/CreateRingAccountViewModel.swift
index 7dbd192..8667557 100644
--- a/Ring/Ring/Account/CreateRingAccountViewModel.swift
+++ b/Ring/Ring/Account/CreateRingAccountViewModel.swift
@@ -140,11 +140,11 @@
.asObservable().map ({ status in
switch status {
case .lookingUp:
- return L10n.Createaccount.lookingForUsernameAvailability.smartString
+ return L10n.Createaccount.lookingForUsernameAvailability
case .invalid:
- return L10n.Createaccount.invalidUsername.smartString
+ return L10n.Createaccount.invalidUsername
case .alreadyTaken:
- return L10n.Createaccount.usernameAlreadyTaken.smartString
+ return L10n.Createaccount.usernameAlreadyTaken
default:
return ""
}
@@ -232,22 +232,22 @@
var title: String {
switch self {
case .generic:
- return L10n.Alerts.accountCannotBeFoundTitle.smartString
+ return L10n.Alerts.accountCannotBeFoundTitle
case .network:
- return L10n.Alerts.accountNoNetworkTitle.smartString
+ return L10n.Alerts.accountNoNetworkTitle
default:
- return L10n.Alerts.accountDefaultErrorTitle.smartString
+ return L10n.Alerts.accountDefaultErrorTitle
}
}
var message: String {
switch self {
case .generic:
- return L10n.Alerts.accountDefaultErrorMessage.smartString
+ return L10n.Alerts.accountDefaultErrorMessage
case .network:
- return L10n.Alerts.accountNoNetworkMessage.smartString
+ return L10n.Alerts.accountNoNetworkMessage
default:
- return L10n.Alerts.accountDefaultErrorMessage.smartString
+ return L10n.Alerts.accountDefaultErrorMessage
}
}
}
diff --git a/Ring/Ring/Constants/Generated/Images.swift b/Ring/Ring/Constants/Generated/Images.swift
index 1203345..8778bbb 100644
--- a/Ring/Ring/Constants/Generated/Images.swift
+++ b/Ring/Ring/Constants/Generated/Images.swift
@@ -1,47 +1,94 @@
-// Generated using SwiftGen, by O.Halligon — https://github.com/AliSoftware/SwiftGen
+// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
-#if os(iOS) || os(tvOS) || os(watchOS)
- import UIKit.UIImage
- public typealias Image = UIImage
-#elseif os(OSX)
+#if os(OSX)
import AppKit.NSImage
- public typealias Image = NSImage
+ typealias AssetColorTypeAlias = NSColor
+ typealias Image = NSImage
+#elseif os(iOS) || os(tvOS) || os(watchOS)
+ import UIKit.UIImage
+ typealias AssetColorTypeAlias = UIColor
+ typealias Image = UIImage
#endif
-private class RingImagesBundleToken {}
-
// swiftlint:disable file_length
-// swiftlint:disable line_length
-// swiftlint:disable type_body_length
-public enum RingAsset: String {
- case icContactPicture = "ic_contact_picture"
- case logoRingBeta2Blanc = "logo-ring-beta2-blanc"
+@available(*, deprecated, renamed: "ImageAsset")
+typealias AssetType = ImageAsset
- /**
- Loads from application's Bundle if image exists, then loads from current bundle, fatalError if image does not exist
- */
- public var smartImage: Image {
- if let appimage = Image(named: self.rawValue, in: nil, compatibleWith: nil) {
- return appimage
- } else if let fmkImage = Image(named: self.rawValue, in: Bundle(for: RingImagesBundleToken.self), compatibleWith: nil) {
- return fmkImage
- } else {
- fatalError("Impossible to load image \(self.rawValue)")
- }
- }
+struct ImageAsset {
+ fileprivate var name: String
var image: Image {
- if let img = Image(named: self.rawValue, in: Bundle(for: RingImagesBundleToken.self), compatibleWith: nil) {
- return img
- }
- fatalError("Impossible to load image \(self.rawValue)")
+ let bundle = Bundle(for: BundleToken.self)
+ #if os(iOS) || os(tvOS)
+ let image = Image(named: name, in: bundle, compatibleWith: nil)
+ #elseif os(OSX)
+ let image = bundle.image(forResource: name)
+ #elseif os(watchOS)
+ let image = Image(named: name)
+ #endif
+ guard let result = image else { fatalError("Unable to load image named \(name).") }
+ return result
}
}
-// swiftlint:enable type_body_length
-public extension Image {
- convenience init!(asset: RingAsset) {
- self.init(named: asset.rawValue)
+struct ColorAsset {
+ fileprivate var name: String
+
+ #if swift(>=3.2)
+ @available(iOS 11.0, tvOS 11.0, watchOS 4.0, OSX 10.13, *)
+ var color: AssetColorTypeAlias {
+ return AssetColorTypeAlias(asset: self)
+ }
+ #endif
+}
+
+// swiftlint:disable identifier_name line_length nesting type_body_length type_name
+enum Asset {
+ static let icContactPicture = ImageAsset(name: "ic_contact_picture")
+ static let logoRingBeta2Blanc = ImageAsset(name: "logo-ring-beta2-blanc")
+
+ // swiftlint:disable trailing_comma
+ static let allColors: [ColorAsset] = [
+ ]
+ static let allImages: [ImageAsset] = [
+ icContactPicture,
+ logoRingBeta2Blanc,
+ ]
+ // swiftlint:enable trailing_comma
+ @available(*, deprecated, renamed: "allImages")
+ static let allValues: [AssetType] = allImages
+}
+// swiftlint:enable identifier_name line_length nesting type_body_length type_name
+
+extension Image {
+ @available(iOS 1.0, tvOS 1.0, watchOS 1.0, *)
+ @available(OSX, deprecated,
+ message: "This initializer is unsafe on macOS, please use the ImageAsset.image property")
+ convenience init!(asset: ImageAsset) {
+ #if os(iOS) || os(tvOS)
+ let bundle = Bundle(for: BundleToken.self)
+ self.init(named: asset.name, in: bundle, compatibleWith: nil)
+ #elseif os(OSX) || os(watchOS)
+ self.init(named: asset.name)
+ #endif
}
}
+
+extension AssetColorTypeAlias {
+ #if swift(>=3.2)
+ @available(iOS 11.0, tvOS 11.0, watchOS 4.0, OSX 10.13, *)
+ convenience init!(asset: ColorAsset) {
+ let bundle = Bundle(for: BundleToken.self)
+ #if os(iOS) || os(tvOS)
+ self.init(named: asset.name, in: bundle, compatibleWith: nil)
+ #elseif os(OSX)
+ self.init(named: asset.name, bundle: bundle)
+ #elseif os(watchOS)
+ self.init(named: asset.name)
+ #endif
+ }
+ #endif
+}
+
+private final class BundleToken {}
diff --git a/Ring/Ring/Constants/Generated/Storyboards.swift b/Ring/Ring/Constants/Generated/Storyboards.swift
index 1dedc6f..b8449a5 100644
--- a/Ring/Ring/Constants/Generated/Storyboards.swift
+++ b/Ring/Ring/Constants/Generated/Storyboards.swift
@@ -1,87 +1,79 @@
// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
+// swiftlint:disable sorted_imports
import Foundation
import UIKit
// swiftlint:disable file_length
-// swiftlint:disable line_length
-// swiftlint:disable type_body_length
-protocol StoryboardSceneType {
+protocol StoryboardType {
static var storyboardName: String { get }
}
-extension StoryboardSceneType {
- static func storyboard() -> UIStoryboard {
+extension StoryboardType {
+ static var storyboard: UIStoryboard {
return UIStoryboard(name: self.storyboardName, bundle: Bundle(for: BundleToken.self))
}
+}
- static func initialViewController() -> UIViewController {
- guard let vc = storyboard().instantiateInitialViewController() else {
- fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
+struct SceneType<T: Any> {
+ let storyboard: StoryboardType.Type
+ let identifier: String
+
+ func instantiate() -> T {
+ guard let controller = storyboard.storyboard.instantiateViewController(withIdentifier: identifier) as? T else {
+ fatalError("ViewController '\(identifier)' is not of the expected class \(T.self).")
}
- return vc
+ return controller
}
}
-extension StoryboardSceneType where Self: RawRepresentable, Self.RawValue == String {
- func viewController() -> UIViewController {
- return Self.storyboard().instantiateViewController(withIdentifier: self.rawValue)
- }
- static func viewController(identifier: Self) -> UIViewController {
- return identifier.viewController()
+struct InitialSceneType<T: Any> {
+ let storyboard: StoryboardType.Type
+
+ func instantiate() -> T {
+ guard let controller = storyboard.storyboard.instantiateInitialViewController() as? T else {
+ fatalError("ViewController is not of the expected class \(T.self).")
+ }
+ return controller
}
}
-protocol StoryboardSegueType: RawRepresentable { }
+protocol SegueType: RawRepresentable { }
extension UIViewController {
- func perform<S: StoryboardSegueType>(segue: S, sender: Any? = nil) where S.RawValue == String {
+ func perform<S: SegueType>(segue: S, sender: Any? = nil) where S.RawValue == String {
performSegue(withIdentifier: segue.rawValue, sender: sender)
}
}
+// swiftlint:disable explicit_type_interface identifier_name line_length type_body_length type_name
enum StoryboardScene {
- enum LaunchScreen: StoryboardSceneType {
+ enum LaunchScreen: StoryboardType {
static let storyboardName = "LaunchScreen"
+
+ static let initialScene = InitialSceneType<UIViewController>(storyboard: LaunchScreen.self)
}
- enum Main: String, StoryboardSceneType {
+ enum Main: StoryboardType {
static let storyboardName = "Main"
- static func initialViewController() -> Ring.MainTabBarViewController {
- guard let vc = storyboard().instantiateInitialViewController() as? Ring.MainTabBarViewController else {
- fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
- }
- return vc
- }
+ static let initialScene = InitialSceneType<Ring.MainTabBarViewController>(storyboard: Main.self)
- case mainStoryboardScene = "MainStoryboard"
- static func instantiateMainStoryboard() -> Ring.MainTabBarViewController {
- guard let vc = StoryboardScene.Main.mainStoryboardScene.viewController() as? Ring.MainTabBarViewController
- else {
- fatalError("ViewController 'MainStoryboard' is not of the expected class Ring.MainTabBarViewController.")
- }
- return vc
- }
+ static let mainStoryboard = SceneType<Ring.MainTabBarViewController>(storyboard: Main.self, identifier: "MainStoryboard")
}
- enum WalkthroughStoryboard: StoryboardSceneType {
+ enum WalkthroughStoryboard: StoryboardType {
static let storyboardName = "WalkthroughStoryboard"
- static func initialViewController() -> UINavigationController {
- guard let vc = storyboard().instantiateInitialViewController() as? UINavigationController else {
- fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
- }
- return vc
- }
+ static let initialScene = InitialSceneType<UINavigationController>(storyboard: WalkthroughStoryboard.self)
}
}
enum StoryboardSegue {
- enum Main: String, StoryboardSegueType {
+ enum Main: String, SegueType {
case showMessages = "ShowMessages"
case accountDetails
}
- enum WalkthroughStoryboard: String, StoryboardSegueType {
+ enum WalkthroughStoryboard: String, SegueType {
case accountToPermissionsSegue = "AccountToPermissionsSegue"
case createProfileSegue = "CreateProfileSegue"
case linkDeviceToAccountSegue = "LinkDeviceToAccountSegue"
@@ -89,5 +81,6 @@
case profileToLinkSegue = "ProfileToLinkSegue"
}
}
+// swiftlint:enable explicit_type_interface identifier_name line_length type_body_length type_name
private final class BundleToken {}
diff --git a/Ring/Ring/Constants/Generated/Strings.swift b/Ring/Ring/Constants/Generated/Strings.swift
index 1baf6ed..459e574 100644
--- a/Ring/Ring/Constants/Generated/Strings.swift
+++ b/Ring/Ring/Constants/Generated/Strings.swift
@@ -1,134 +1,98 @@
-// Generated using SwiftGen, by O.Halligon — https://github.com/AliSoftware/SwiftGen
+// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
import Foundation
-private class RingStringsBundleToken {}
-
// swiftlint:disable file_length
-// swiftlint:disable line_length
-// swiftlint:disable type_body_length
-// swiftlint:disable nesting
-// swiftlint:disable variable_name
-// swiftlint:disable valid_docs
-
+// swiftlint:disable explicit_type_interface identifier_name line_length nesting type_body_length type_name
enum L10n {
enum Alerts {
/// Account Added
- static let accountAddedTitle = L10n.tr("alerts.accountAddedTitle")
+ static let accountAddedTitle = L10n.tr("Localizable", "alerts.accountAddedTitle")
/// Can't find account
- static let accountCannotBeFoundTitle = L10n.tr("alerts.accountCannotBeFoundTitle")
+ static let accountCannotBeFoundTitle = L10n.tr("Localizable", "alerts.accountCannotBeFoundTitle")
/// The account couldn't be created.
- static let accountDefaultErrorMessage = L10n.tr("alerts.accountDefaultErrorMessage")
+ static let accountDefaultErrorMessage = L10n.tr("Localizable", "alerts.accountDefaultErrorMessage")
/// Unknown error
- static let accountDefaultErrorTitle = L10n.tr("alerts.accountDefaultErrorTitle")
+ static let accountDefaultErrorTitle = L10n.tr("Localizable", "alerts.accountDefaultErrorTitle")
/// Could not add account because Ring couldn't connect to the distributed network. Check your device connectivity.
- static let accountNoNetworkMessage = L10n.tr("alerts.accountNoNetworkMessage")
+ static let accountNoNetworkMessage = L10n.tr("Localizable", "alerts.accountNoNetworkMessage")
/// Can't connect to the network
- static let accountNoNetworkTitle = L10n.tr("alerts.accountNoNetworkTitle")
+ static let accountNoNetworkTitle = L10n.tr("Localizable", "alerts.accountNoNetworkTitle")
/// Account couldn't be found on the Ring network. Make sure it was exported on Ring from an existing device, and that provided credentials are correct.
- static let acountCannotBeFoundMessage = L10n.tr("alerts.acountCannotBeFoundMessage")
+ static let acountCannotBeFoundMessage = L10n.tr("Localizable", "alerts.acountCannotBeFoundMessage")
}
enum Createaccount {
/// Choose strong password you will remember to protect your Ring account.
- static let chooseStrongPassword = L10n.tr("createAccount.chooseStrongPassword")
+ static let chooseStrongPassword = L10n.tr("Localizable", "createAccount.chooseStrongPassword")
/// Create your Ring account
- static let createAccountFormTitle = L10n.tr("createAccount.createAccountFormTitle")
+ static let createAccountFormTitle = L10n.tr("Localizable", "createAccount.createAccountFormTitle")
/// Enter new username
- static let enterNewUsernamePlaceholder = L10n.tr("createAccount.enterNewUsernamePlaceholder")
+ static let enterNewUsernamePlaceholder = L10n.tr("Localizable", "createAccount.enterNewUsernamePlaceholder")
/// Invalid username
- static let invalidUsername = L10n.tr("createAccount.invalidUsername")
+ static let invalidUsername = L10n.tr("Localizable", "createAccount.invalidUsername")
/// Loading...
- static let loading = L10n.tr("createAccount.loading")
+ static let loading = L10n.tr("Localizable", "createAccount.loading")
/// Looking for username availability...
- static let lookingForUsernameAvailability = L10n.tr("createAccount.lookingForUsernameAvailability")
+ static let lookingForUsernameAvailability = L10n.tr("Localizable", "createAccount.lookingForUsernameAvailability")
/// New Password
- static let newPasswordPlaceholder = L10n.tr("createAccount.newPasswordPlaceholder")
+ static let newPasswordPlaceholder = L10n.tr("Localizable", "createAccount.newPasswordPlaceholder")
/// 6 characters minimum
- static let passwordCharactersNumberError = L10n.tr("createAccount.passwordCharactersNumberError")
+ static let passwordCharactersNumberError = L10n.tr("Localizable", "createAccount.passwordCharactersNumberError")
/// Passwords do not match
- static let passwordNotMatchingError = L10n.tr("createAccount.passwordNotMatchingError")
+ static let passwordNotMatchingError = L10n.tr("Localizable", "createAccount.passwordNotMatchingError")
/// Register public username (experimental)
- static let registerPublicUsername = L10n.tr("createAccount.registerPublicUsername")
+ static let registerPublicUsername = L10n.tr("Localizable", "createAccount.registerPublicUsername")
/// Repeat new password
- static let repeatPasswordPlaceholder = L10n.tr("createAccount.repeatPasswordPlaceholder")
+ static let repeatPasswordPlaceholder = L10n.tr("Localizable", "createAccount.repeatPasswordPlaceholder")
/// Username already taken
- static let usernameAlreadyTaken = L10n.tr("createAccount.usernameAlreadyTaken")
+ static let usernameAlreadyTaken = L10n.tr("Localizable", "createAccount.usernameAlreadyTaken")
/// Adding account
- static let waitCreateAccountTitle = L10n.tr("createAccount.waitCreateAccountTitle")
+ static let waitCreateAccountTitle = L10n.tr("Localizable", "createAccount.waitCreateAccountTitle")
}
enum Global {
/// Home
- static let homeTabBarTitle = L10n.tr("global.homeTabBarTitle")
+ static let homeTabBarTitle = L10n.tr("Localizable", "global.homeTabBarTitle")
/// Me
- static let meTabBarTitle = L10n.tr("global.meTabBarTitle")
+ static let meTabBarTitle = L10n.tr("Localizable", "global.meTabBarTitle")
/// Ok
- static let ok = L10n.tr("global.ok")
+ static let ok = L10n.tr("Localizable", "global.ok")
}
enum Smartlist {
/// Conversations
- static let conversations = L10n.tr("smartlist.conversations")
+ static let conversations = L10n.tr("Localizable", "smartlist.conversations")
/// No results
- static let noResults = L10n.tr("smartlist.noResults")
+ static let noResults = L10n.tr("Localizable", "smartlist.noResults")
/// Searching...
- static let searching = L10n.tr("smartlist.searching")
+ static let searching = L10n.tr("Localizable", "smartlist.searching")
/// User found
- static let userFound = L10n.tr("smartlist.userFound")
+ static let userFound = L10n.tr("Localizable", "smartlist.userFound")
/// Yesterday
- static let yesterday = L10n.tr("smartlist.yesterday")
+ static let yesterday = L10n.tr("Localizable", "smartlist.yesterday")
}
enum Welcome {
/// Create a Ring account
- static let createAccount = L10n.tr("welcome.createAccount")
+ static let createAccount = L10n.tr("Localizable", "welcome.createAccount")
/// Link this device to an account
- static let linkDeviceButton = L10n.tr("welcome.linkDeviceButton")
+ static let linkDeviceButton = L10n.tr("Localizable", "welcome.linkDeviceButton")
/// A Ring account allows you to reach people securely in peer to peer through fully distributed network
- static let text = L10n.tr("welcome.text")
+ static let text = L10n.tr("Localizable", "welcome.text")
/// Welcome to Ring
- static let title = L10n.tr("welcome.title")
+ static let title = L10n.tr("Localizable", "welcome.title")
}
}
-
- struct LocalizableString {
- let key: String
- let args: [CVarArg]
-
- /**
- Returns String from Current Bundle
- */
- public var string: String {
- let format: String = NSLocalizedString(key, tableName: nil, bundle: Bundle(for: RingStringsBundleToken.self), value: "", comment: "")
- return String(format: format, locale: Locale.current, arguments: args)
- }
-
- /**
- Returns String translated from App's Bundle is found, otherwise from Current Bundle
- */
- public var smartString: String {
- // Load from App's Bundle first
- var format: String = NSLocalizedString(key, tableName: nil, bundle: Bundle.main, value: "", comment: "")
- if format != "" && format != key {
- return String(format: format, locale: Locale.current, arguments: args)
- }
- // Load from Current Bundle
- format = NSLocalizedString(key, tableName: nil, bundle: Bundle(for: RingStringsBundleToken.self), value: "", comment: "")
-
- return String(format: format, locale: Locale.current, arguments: args)
- }
- }
+// swiftlint:enable explicit_type_interface identifier_name line_length nesting type_body_length type_name
extension L10n {
- fileprivate static func tr(_ key: String, _ args: CVarArg...) -> LocalizableString {
- return LocalizableString(key: key, args: args)
+ fileprivate static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {
+ let format = NSLocalizedString(key, tableName: table, bundle: Bundle(for: BundleToken.self), comment: "")
+ return String(format: format, locale: Locale.current, arguments: args)
}
}
-// swiftlint:enable type_body_length
-// swiftlint:enable nesting
-// swiftlint:enable variable_name
-// swiftlint:enable valid_docs
+private final class BundleToken {}
diff --git a/Ring/Ring/Conversations/ConversationViewModel.swift b/Ring/Ring/Conversations/ConversationViewModel.swift
index ae4bc62..30eddb7 100644
--- a/Ring/Ring/Conversations/ConversationViewModel.swift
+++ b/Ring/Ring/Conversations/ConversationViewModel.swift
@@ -138,7 +138,7 @@
if todayDay == day && todayMonth == month && todayYear == year {
return hourFormatter.string(from: lastMessageDate)
} else if day == todayDay - 1 {
- return L10n.Smartlist.yesterday.smartString
+ return L10n.Smartlist.yesterday
} else if todayYear == year && todayWeekOfYear == weekOfYear {
return lastMessageDate.dayOfWeek()
} else {
diff --git a/Ring/Ring/Settings/MeViewController.swift b/Ring/Ring/Settings/MeViewController.swift
index 8c80ae3..ae4c4df 100644
--- a/Ring/Ring/Settings/MeViewController.swift
+++ b/Ring/Ring/Settings/MeViewController.swift
@@ -32,8 +32,8 @@
override func viewDidLoad() {
super.viewDidLoad()
- self.title = L10n.Global.meTabBarTitle.smartString
- self.navigationItem.title = L10n.Global.meTabBarTitle.smartString
+ self.title = L10n.Global.meTabBarTitle
+ self.navigationItem.title = L10n.Global.meTabBarTitle
if !accountService.accounts.isEmpty {
// let acc = accountService.accounts[0]
diff --git a/Ring/Ring/Smartlist/SmartlistViewController.swift b/Ring/Ring/Smartlist/SmartlistViewController.swift
index fc3d1fc..b881e7d 100644
--- a/Ring/Ring/Smartlist/SmartlistViewController.swift
+++ b/Ring/Ring/Smartlist/SmartlistViewController.swift
@@ -70,8 +70,8 @@
func setupUI() {
- self.title = L10n.Global.homeTabBarTitle.smartString
- self.navigationItem.title = L10n.Global.homeTabBarTitle.smartString
+ self.title = L10n.Global.homeTabBarTitle
+ self.navigationItem.title = L10n.Global.homeTabBarTitle
self.viewModel.hideNoConversationsMessage
.bind(to: self.noConversationsView.rx.isHidden)
diff --git a/Ring/Ring/Smartlist/SmartlistViewModel.swift b/Ring/Ring/Smartlist/SmartlistViewModel.swift
index cf936d8..190604f 100644
--- a/Ring/Ring/Smartlist/SmartlistViewModel.swift
+++ b/Ring/Ring/Smartlist/SmartlistViewModel.swift
@@ -88,11 +88,11 @@
var sections = [ConversationSection]()
if contactFoundConversation != nil {
- sections.append(ConversationSection(header: L10n.Smartlist.userFound.smartString, items: [contactFoundConversation!]))
+ sections.append(ConversationSection(header: L10n.Smartlist.userFound, items: [contactFoundConversation!]))
}
if !filteredResults.isEmpty {
- sections.append(ConversationSection(header: L10n.Smartlist.conversations.smartString, items: filteredResults))
+ sections.append(ConversationSection(header: L10n.Smartlist.conversations, items: filteredResults))
}
return sections
@@ -133,7 +133,7 @@
self.searchStatus.onNext("")
} else {
if self.filteredResults.value.isEmpty {
- self.searchStatus.onNext(L10n.Smartlist.noResults.smartString)
+ self.searchStatus.onNext(L10n.Smartlist.noResults)
} else {
self.searchStatus.onNext("")
}
@@ -166,7 +166,7 @@
}
self.nameService.lookupName(withAccount: "", nameserver: "", name: text)
- self.searchStatus.onNext(L10n.Smartlist.searching.smartString)
+ self.searchStatus.onNext(L10n.Smartlist.searching)
}
}
diff --git a/Ring/Ring/Walkthrough/CreateRingAccountViewController.swift b/Ring/Ring/Walkthrough/CreateRingAccountViewController.swift
index a67e13d..4430f5d 100644
--- a/Ring/Ring/Walkthrough/CreateRingAccountViewController.swift
+++ b/Ring/Ring/Walkthrough/CreateRingAccountViewController.swift
@@ -122,31 +122,31 @@
fileprivate func setupUI() {
self.tableView.estimatedRowHeight = 44.0
self.tableView.rowHeight = UITableViewAutomaticDimension
- self.createAccountTitleLabel.text = L10n.Createaccount.createAccountFormTitle.smartString
+ self.createAccountTitleLabel.text = L10n.Createaccount.createAccountFormTitle
}
fileprivate func setCreateAccountAsLoading() {
log.debug("Creating account...")
- self.createAccountButton.setTitle(L10n.Createaccount.loading.smartString, for: .normal)
+ self.createAccountButton.setTitle(L10n.Createaccount.loading, for: .normal)
self.createAccountButton.isUserInteractionEnabled = false
- HUD.show(.labeledProgress(title: L10n.Createaccount.waitCreateAccountTitle.smartString, subtitle: nil))
+ HUD.show(.labeledProgress(title: L10n.Createaccount.waitCreateAccountTitle, subtitle: nil))
}
fileprivate func setCreateAccountAsIdle() {
- self.createAccountButton.setTitle(L10n.Welcome.createAccount.smartString, for: .normal)
+ self.createAccountButton.setTitle(L10n.Welcome.createAccount, for: .normal)
self.createAccountButton.isUserInteractionEnabled = true
HUD.hide()
}
fileprivate func showDeviceAddedAlert() {
- HUD.flash(.labeledSuccess(title: L10n.Alerts.accountAddedTitle.smartString, subtitle: nil), delay: Durations.alertFlashDuration.value)
+ HUD.flash(.labeledSuccess(title: L10n.Alerts.accountAddedTitle, subtitle: nil), delay: Durations.alertFlashDuration.value)
}
fileprivate func showErrorAlert(_ error: AccountCreationError) {
let alert = UIAlertController.init(title: error.title,
message: error.message,
preferredStyle: .alert)
- alert.addAction(UIAlertAction.init(title: L10n.Global.ok.smartString, style: .default, handler: nil))
+ alert.addAction(UIAlertAction.init(title: L10n.Global.ok, style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
@@ -191,7 +191,7 @@
if currentCellType == .registerPublicUsername {
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: SwitchCell.self)
- cell.titleLabel.text = L10n.Createaccount.registerPublicUsername.smartString
+ cell.titleLabel.text = L10n.Createaccount.registerPublicUsername
cell.titleLabel.textColor = .white
cell.registerSwitch.rx.value.bind(to: self.accountViewModel.registerUsername).disposed(by: disposeBag)
return cell
@@ -199,7 +199,7 @@
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: TextFieldCell.self)
cell.textField.isSecureTextEntry = false
- cell.textField.placeholder = L10n.Createaccount.enterNewUsernamePlaceholder.smartString
+ cell.textField.placeholder = L10n.Createaccount.enterNewUsernamePlaceholder
//Binds the username field value to the ViewModel
cell.textField.rx.text.orEmpty
@@ -217,14 +217,14 @@
return cell
} else if currentCellType == .passwordNotice {
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: TextCell.self)
- cell.label.text = L10n.Createaccount.chooseStrongPassword.smartString
+ cell.label.text = L10n.Createaccount.chooseStrongPassword
return cell
} else if currentCellType == .newPasswordField {
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: TextFieldCell.self)
cell.textField.isSecureTextEntry = true
- cell.textField.placeholder = L10n.Createaccount.newPasswordPlaceholder.smartString
- cell.errorMessageLabel.text = L10n.Createaccount.passwordCharactersNumberError.smartString
+ cell.textField.placeholder = L10n.Createaccount.newPasswordPlaceholder
+ cell.errorMessageLabel.text = L10n.Createaccount.passwordCharactersNumberError
//Binds the password field value to the ViewModel
cell.textField.rx.text.orEmpty.bind(to: self.accountViewModel.password).disposed(by: disposeBag)
@@ -243,8 +243,8 @@
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: TextFieldCell.self)
cell.textField.isSecureTextEntry = true
- cell.textField.placeholder = L10n.Createaccount.repeatPasswordPlaceholder.smartString
- cell.errorMessageLabel.text = L10n.Createaccount.passwordNotMatchingError.smartString
+ cell.textField.placeholder = L10n.Createaccount.repeatPasswordPlaceholder
+ cell.errorMessageLabel.text = L10n.Createaccount.passwordNotMatchingError
//Binds the repeat password field value to the ViewModel
cell.textField.rx.text.orEmpty.bind(to: self.accountViewModel.repeatPassword).disposed(by: disposeBag)
diff --git a/Ring/Ring/Walkthrough/WelcomeViewController.swift b/Ring/Ring/Walkthrough/WelcomeViewController.swift
index 29892dd..0b2f408 100644
--- a/Ring/Ring/Walkthrough/WelcomeViewController.swift
+++ b/Ring/Ring/Walkthrough/WelcomeViewController.swift
@@ -74,9 +74,9 @@
func setupUI() {
- self.welcomeLabel.text = L10n.Welcome.title.smartString
- self.descriptionLabel.text = L10n.Welcome.text.smartString
- self.linkDeviceButton.setTitle(L10n.Welcome.linkDeviceButton.smartString, for: .normal)
- self.createAccountButton.setTitle(L10n.Welcome.createAccount.smartString, for: .normal)
+ self.welcomeLabel.text = L10n.Welcome.title
+ self.descriptionLabel.text = L10n.Welcome.text
+ self.linkDeviceButton.setTitle(L10n.Welcome.linkDeviceButton, for: .normal)
+ self.createAccountButton.setTitle(L10n.Welcome.createAccount, for: .normal)
}
}
diff --git a/Ring/swiftgen/images.stencil b/Ring/swiftgen/images.stencil
deleted file mode 100644
index fbefe90..0000000
--- a/Ring/swiftgen/images.stencil
+++ /dev/null
@@ -1,52 +0,0 @@
-// Generated using SwiftGen, by O.Halligon — https://github.com/AliSoftware/SwiftGen
-
-{% if images %}
-#if os(iOS) || os(tvOS) || os(watchOS)
- import UIKit.UIImage
- public typealias Image = UIImage
-#elseif os(OSX)
- import AppKit.NSImage
- public typealias Image = NSImage
-#endif
-
-private class RingImagesBundleToken {}
-
-// swiftlint:disable file_length
-// swiftlint:disable line_length
-
-// swiftlint:disable type_body_length
-public enum Ring{{enumName}}: String {
- {% for image in images %}
- case {{image|swiftIdentifier|snakeToCamelCase|lowerFirstWord}} = "{{image}}"
- {% endfor %}
-
- /**
- Loads from application's Bundle if image exists, then loads from current bundle, fatalError if image does not exist
- */
- public var smartImage: Image {
- if let appimage = Image(named: self.rawValue, in: nil, compatibleWith: nil) {
- return appimage
- } else if let fmkImage = Image(named: self.rawValue, in: Bundle(for: RingImagesBundleToken.self), compatibleWith: nil) {
- return fmkImage
- } else {
- fatalError("Impossible to load image \(self.rawValue)")
- }
- }
-
- var image: Image {
- if let img = Image(named: self.rawValue, in: Bundle(for: RingImagesBundleToken.self), compatibleWith: nil) {
- return img
- }
- fatalError("Impossible to load image \(self.rawValue)")
- }
-}
-// swiftlint:enable type_body_length
-
-public extension Image {
- convenience init!(asset: Ring{{enumName}}) {
- self.init(named: asset.rawValue)
- }
-}
-{% else %}
-// No image found
-{% endif %}
diff --git a/Ring/swiftgen/storyboards.stencil b/Ring/swiftgen/storyboards.stencil
deleted file mode 100644
index ad2d2fd..0000000
--- a/Ring/swiftgen/storyboards.stencil
+++ /dev/null
@@ -1,120 +0,0 @@
-// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
-
-{% macro className scene %}{% if scene.customClass %}{% if scene.customModule %}{{scene.customModule}}.{% endif %}{{scene.customClass}}{% else %}UI{{scene.baseType}}{% endif %}{% endmacro %}
-import Foundation
-import UIKit
-{% for module in modules where module != env.PRODUCT_MODULE_NAME and module != param.module %}
-import {{module}}
-{% endfor %}
-
-{% if storyboards %}
-// swiftlint:disable file_length
-// swiftlint:disable line_length
-// swiftlint:disable type_body_length
-
-{# This first part of the code is static, same every time whatever Storyboard you have #}
-protocol StoryboardSceneType {
- static var storyboardName: String { get }
-}
-
-extension StoryboardSceneType {
- static func storyboard() -> UIStoryboard {
- return UIStoryboard(name: self.storyboardName, bundle: Bundle(for: BundleToken.self))
- }
-
- static func initialViewController() -> UIViewController {
- guard let vc = storyboard().instantiateInitialViewController() else {
- fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
- }
- return vc
- }
-}
-
-extension StoryboardSceneType where Self: RawRepresentable, Self.RawValue == String {
- func viewController() -> UIViewController {
- return Self.storyboard().instantiateViewController(withIdentifier: self.rawValue)
- }
- static func viewController(identifier: Self) -> UIViewController {
- return identifier.viewController()
- }
-}
-
-protocol StoryboardSegueType: RawRepresentable { }
-
-extension UIViewController {
- func perform<S: StoryboardSegueType>(segue: S, sender: Any? = nil) where S.RawValue == String {
- performSegue(withIdentifier: segue.rawValue, sender: sender)
- }
-}
-
-{# This is where the generation begins, this code depends on what you have in your Storyboards #}
-{% set sceneEnumName %}{{param.sceneEnumName|default:"StoryboardScene"}}{% endset %}
-enum {{sceneEnumName}} {
- {% for storyboard in storyboards %}
- {% set storyboardName %}{{storyboard.name|swiftIdentifier|escapeReservedKeywords}}{% endset %}
- {% if storyboard.scenes %}
- enum {{storyboardName}}: String, StoryboardSceneType {
- static let storyboardName = "{{storyboard.name}}"
- {% if storyboard.initialScene and storyboard.initialScene.baseType != "ViewController" %}
- {% set initialSceneClass %}{% call className storyboard.initialScene %}{% endset %}
-
- static func initialViewController() -> {{initialSceneClass}} {
- guard let vc = storyboard().instantiateInitialViewController() as? {{initialSceneClass}} else {
- fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
- }
- return vc
- }
- {% endif %}
- {% for scene in storyboard.scenes %}
- {% set sceneID %}{{scene.identifier|swiftIdentifier|snakeToCamelCase|lowerFirstWord}}{% endset %}
-
- case {{sceneID}}Scene = "{{scene.identifier}}"
- {% if scene.baseType != "ViewController" %}
- {% set sceneClass %}{% call className scene %}{% endset %}
- static func instantiate{{sceneID|snakeToCamelCase}}() -> {{sceneClass}} {
- guard let vc = {{sceneEnumName}}.{{storyboardName}}.{{sceneID}}Scene.viewController() as? {{sceneClass}}
- else {
- fatalError("ViewController '{{scene.identifier}}' is not of the expected class {{sceneClass}}.")
- }
- return vc
- }
- {% else %}
- static func instantiate{{sceneID|snakeToCamelCase}}() -> UIViewController {
- return {{sceneEnumName}}.{{storyboardName}}.{{sceneID}}Scene.viewController()
- }
- {% endif %}
- {% endfor %}
- }
- {% else %}
- enum {{storyboardName}}: StoryboardSceneType {
- static let storyboardName = "{{storyboard.name}}"
- {% if storyboard.initialScene and storyboard.initialScene.baseType != "ViewController" %}
- {% set initialSceneClass %}{% call className storyboard.initialScene %}{% endset %}
-
- static func initialViewController() -> {{initialSceneClass}} {
- guard let vc = storyboard().instantiateInitialViewController() as? {{initialSceneClass}} else {
- fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
- }
- return vc
- }
- {% endif %}
- }
- {% endif %}
- {% endfor %}
-}
-
-enum {{param.segueEnumName|default:"StoryboardSegue"}} {
- {% for storyboard in storyboards where storyboard.segues %}
- enum {{storyboard.name|swiftIdentifier|escapeReservedKeywords}}: String, StoryboardSegueType {
- {% for segue in storyboard.segues %}
- {% set segueID %}{{segue.identifier|swiftIdentifier|snakeToCamelCase|lowerFirstWord}}{% endset %}
- case {{segueID|escapeReservedKeywords}}{% if segueID != segue.identifier %} = "{{segue.identifier}}"{% endif %}
- {% endfor %}
- }
- {% endfor %}
-}
-
-private final class BundleToken {}
-{% else %}
-// No storyboard found
-{% endif %}
diff --git a/Ring/swiftgen/strings.stencil b/Ring/swiftgen/strings.stencil
deleted file mode 100644
index d7b96e3..0000000
--- a/Ring/swiftgen/strings.stencil
+++ /dev/null
@@ -1,83 +0,0 @@
-// Generated using SwiftGen, by O.Halligon — https://github.com/AliSoftware/SwiftGen
-
-{% if structuredStrings %}
-import Foundation
-
-private class RingStringsBundleToken {}
-
-// swiftlint:disable file_length
-// swiftlint:disable line_length
-
-// swiftlint:disable type_body_length
-// swiftlint:disable nesting
-// swiftlint:disable variable_name
-// swiftlint:disable valid_docs
-{% macro parametersBlock params %}{% for type in params.types %}_ p{{forloop.counter}}: {{type}}{% if not forloop.last %}, {% endif %}{% endfor %}{% endmacro %}
-{% macro argumentsBlock params %}{% for type in params.types %}p{{forloop.counter}}{% if not forloop.last %}, {% endif %}{% endfor %}{% endmacro %}
-{% macro recursiveBlock strings sp %}
-{{sp}} {% for string in strings.strings %}
-{{sp}} /// {{string.translation}}
-{{sp}} {% if string.params %}
-{{sp}} static func {{string.keytail|swiftIdentifier|snakeToCamelCase|lowerFirstWord|escapeReservedKeywords}}({% call parametersBlock string.params %}) -> LocalizableString {
-{{sp}} return {{enumName}}.tr("{{string.key}}", {% call argumentsBlock string.params %})
-{{sp}} }
-{{sp}} {% else %}
-{{sp}} static let {{string.keytail|swiftIdentifier|snakeToCamelCase|lowerFirstWord|escapeReservedKeywords}} = {{enumName}}.tr("{{string.key}}")
-{{sp}} {% endif %}
-{{sp}} {% endfor %}
-{{sp}} {% if strings.subenums %}
-{{sp}} {% for subenum in strings.subenums %}
-
-{{sp}} enum {{subenum.name|swiftIdentifier|snakeToCamelCase}} {
-{{sp}} {% set sp2 %}{{sp}} {% endset %}
-{{sp}} {% call recursiveBlock subenum sp2 %}
-{{sp}} }
-{{sp}} {% endfor %}
-{{sp}} {% endif %}
-{% endmacro %}
-
-enum {{enumName}} {
- {% call recursiveBlock structuredStrings sp %}
-}
-
- struct LocalizableString {
- let key: String
- let args: [CVarArg]
-
- /**
- Returns String from Current Bundle
- */
- public var string: String {
- let format: String = NSLocalizedString(key, tableName: nil, bundle: Bundle(for: RingStringsBundleToken.self), value: "", comment: "")
- return String(format: format, locale: Locale.current, arguments: args)
- }
-
- /**
- Returns String translated from App's Bundle is found, otherwise from Current Bundle
- */
- public var smartString: String {
- // Load from App's Bundle first
- var format: String = NSLocalizedString(key, tableName: nil, bundle: Bundle.main, value: "", comment: "")
- if format != "" && format != key {
- return String(format: format, locale: Locale.current, arguments: args)
- }
- // Load from Current Bundle
- format = NSLocalizedString(key, tableName: nil, bundle: Bundle(for: RingStringsBundleToken.self), value: "", comment: "")
-
- return String(format: format, locale: Locale.current, arguments: args)
- }
- }
-
-extension {{enumName}} {
- fileprivate static func tr(_ key: String, _ args: CVarArg...) -> LocalizableString {
- return LocalizableString(key: key, args: args)
- }
-}
-
-// swiftlint:enable type_body_length
-// swiftlint:enable nesting
-// swiftlint:enable variable_name
-// swiftlint:enable valid_docs
-{% else %}
-// No string found
-{% endif %}
diff --git a/Ring/swiftgen/swiftgen.sh b/Ring/swiftgen/swiftgen.sh
index 0c4da0b..b46576c 100755
--- a/Ring/swiftgen/swiftgen.sh
+++ b/Ring/swiftgen/swiftgen.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-EXPECTED_VERSION="SwiftGen v4.2.1 (Stencil v0.9.0, StencilSwiftKit v1.0.2, SwiftGenKit v1.1.0)"
+EXPECTED_VERSION="SwiftGen v5.1.1 (Stencil v0.9.0, StencilSwiftKit v2.1.0, SwiftGenKit v2.1.0)"
# Here execute the various SwiftGen commands you need
run_swiftgen() {
@@ -9,9 +9,9 @@
TPLDIR=$(dirname $0)
echo "SwiftGen: Generating files..."
- swiftgen storyboards "$SRCDIR" -p "$TPLDIR/storyboards.stencil" --output "$OUTDIR/Storyboards.swift"
- swiftgen images "$SRCDIR/Resources/Images.xcassets" -p "$TPLDIR/images.stencil" --output "$OUTDIR/Images.swift"
- swiftgen strings "$SRCDIR/Resources/en.lproj/Localizable.strings" -p "$TPLDIR/strings.stencil" --output "$OUTDIR/Strings.swift"
+ swiftgen storyboards "$SRCDIR" -t swift3 --output "$OUTDIR/Storyboards.swift"
+ swiftgen xcassets "$SRCDIR/Resources/Images.xcassets" -t swift3 --output "$OUTDIR/Images.swift"
+ swiftgen strings -t structured-swift3 "$SRCDIR/Resources/en.lproj/Localizable.strings" --output "$OUTDIR/Strings.swift"
}