Skip to content

Commit 7b9e043

Browse files
committed
Generate deprecated message
1 parent 588e5a2 commit 7b9e043

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

Sources/RswiftGenerators/StringsTable+Generator.swift

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ extension StringsTable {
104104
// only functions with named parameters
105105
let functions = strings
106106
.filter { $0.params.contains { $0.name != nil } }
107-
.map { $0.generateFunction() }
107+
.flatMap { [$0.generateFunctionBlank(), $0.generateFunctionPreferredLanguages()] }
108108

109109
let comments = ["This `\(qualifiedName.value)` struct is generated, and contains static references to \(vargetters.count) localization keys."]
110110

@@ -311,24 +311,33 @@ private struct StringWithParams {
311311
let values: [(LocaleReference, String)]
312312
let developmentLanguage: String?
313313

314-
func generateFunction() -> Function {
314+
func generateFunctionBlank() -> Function {
315315
let parameters: [Function.Parameter] = zip(params.indices, params).map { (ix, p) in
316316
.init(name: p.name ?? "_", localName: "value\(ix + 1)", typeReference: p.spec.typeReference, defaultValue: nil)
317317
}
318-
let languages: Function.Parameter = .init(name: "preferredLanguages", localName: nil, typeReference: TypeReference(module: .stdLib, rawName: "[String]?"), defaultValue: "nil")
319318
let arguments = parameters.map { $0.localName ?? $0.name }.joined(separator: ", ")
320319
return Function(
321320
comments: self.comments,
322321
name: SwiftIdentifier(name: key),
322+
params: parameters,
323+
returnType: .string,
324+
valueCodeString: "String(format: \(SwiftIdentifier(name: key).value), \(arguments))"
325+
)
326+
}
327+
328+
func generateFunctionPreferredLanguages() -> Function {
329+
let parameters: [Function.Parameter] = zip(params.indices, params).map { (ix, p) in
330+
.init(name: p.name ?? "_", localName: "value\(ix + 1)", typeReference: p.spec.typeReference, defaultValue: nil)
331+
}
332+
let languages: Function.Parameter = .init(name: "preferredLanguages", localName: nil, typeReference: TypeReference(module: .stdLib, rawName: "[String]"), defaultValue: nil)
333+
let arguments = parameters.map { $0.localName ?? $0.name }.joined(separator: ", ")
334+
return Function(
335+
comments: self.comments,
336+
deprecated: "Use R.string(preferredLanguages:).*.* instead",
337+
name: SwiftIdentifier(name: key),
323338
params: parameters + [languages],
324339
returnType: .string,
325-
valueCodeString: """
326-
if let preferredLanguages = preferredLanguages {
327-
return String(format: \(SwiftIdentifier(name: key).value), preferredLanguages: preferredLanguages, \(arguments))
328-
} else {
329-
return String(format: \(SwiftIdentifier(name: key).value), \(arguments))
330-
}
331-
"""
340+
valueCodeString: "String(format: \(SwiftIdentifier(name: key).value), preferredLanguages: preferredLanguages, \(arguments))"
332341
)
333342
}
334343

Sources/RswiftGenerators/SwiftSyntax/Struct.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,9 @@ public struct VarGetter {
141141

142142

143143
public struct Function {
144-
public let deploymentTarget: DeploymentTarget?
145144
public let comments: [String]
145+
public let deploymentTarget: DeploymentTarget?
146+
public var deprecated: String?
146147
public var accessControl = AccessControl.none
147148
public let isStatic: Bool
148149
public let name: SwiftIdentifier
@@ -154,6 +155,7 @@ public struct Function {
154155
public init(
155156
comments: [String],
156157
deploymentTarget: DeploymentTarget? = nil,
158+
deprecated: String? = nil,
157159
accessControl: AccessControl = AccessControl.none,
158160
isStatic: Bool = false,
159161
name: SwiftIdentifier,
@@ -164,6 +166,7 @@ public struct Function {
164166
) {
165167
self.comments = comments
166168
self.deploymentTarget = deploymentTarget
169+
self.deprecated = deprecated
167170
self.accessControl = accessControl
168171
self.isStatic = isStatic
169172
self.name = name
@@ -211,6 +214,9 @@ public struct Function {
211214
}
212215

213216
deploymentTarget?.render(&pp)
217+
if let deprecated = deprecated {
218+
pp.append(line: #"@available(*, deprecated, message: "\#(deprecated.escapedStringLiteral)")"#)
219+
}
214220

215221
let prs = params.map { $0.codeString() }.joined(separator: ", ")
216222
let words: [String?] = [

0 commit comments

Comments
 (0)