Skip to content

Commit e9fc465

Browse files
author
Wayne Wanbok Choi
committed
Add bundle options to set bundle
1 parent 75fad74 commit e9fc465

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Options:
3232
--swiftfile [default: ${SRCROOT}/${TARGET_NAME}/Literals.swift] - The output Swift file directory.
3333
--stringsfile [default: ${SRCROOT}/${TARGET_NAME}/Localizable.strings] - The output Strings file directory.
3434
--access [default: public] - The access modifier.
35+
--bundle [default: main] - The bundle modifier. It can be only `main` or `module`.
3536
```
3637

3738
## Authors & Collaborators

Sources/POEditorParser/Lib/LiteralsParser.swift

+28-10
Original file line numberDiff line numberDiff line change
@@ -111,24 +111,30 @@ public struct Translation {
111111
return rawKey.capitalized.replacingOccurrences(of: "_", with: "")
112112
}
113113

114-
func swiftCode(accessModifier: AccessModifier = .public) -> String {
114+
func swiftCode(accessModifier: AccessModifier = .public, bundleModifier: BundleModifier = .main) -> String {
115115
if variables.isEmpty {
116-
return generateVariableLessSwiftCode(accessModifier: accessModifier)
116+
return generateVariableLessSwiftCode(accessModifier: accessModifier, bundleModifier: bundleModifier)
117117
} else {
118-
return generateVariableSwiftCode(accessModifier: accessModifier)
118+
return generateVariableSwiftCode(accessModifier: accessModifier, bundleModifier: bundleModifier)
119119
}
120120
}
121121

122-
private func generateVariableLessSwiftCode(accessModifier: AccessModifier = .public) -> String {
122+
private func generateVariableLessSwiftCode(
123+
accessModifier: AccessModifier,
124+
bundleModifier: BundleModifier
125+
) -> String {
123126
/*
124127
static var Welcome: String {
125128
return NSLocalizedString()
126129
}
127130
*/
128-
return "\t\(accessModifier.rawValue) static var \(prettyKey): String {\n\t\treturn \(localizedStringFunction)(\"\(rawKey)\", comment: \"\")\n\t}\n"
131+
return "\t\(accessModifier.rawValue) static var \(prettyKey): String {\n\t\treturn \(localizedStringFunction)(\"\(rawKey)\", bundle: \(bundleModifier.rawValue), comment: \"\")\n\t}\n"
129132
}
130133

131-
private func generateVariableSwiftCode(accessModifier: AccessModifier = .public) -> String {
134+
private func generateVariableSwiftCode(
135+
accessModifier: AccessModifier,
136+
bundleModifier: BundleModifier
137+
) -> String {
132138
/*
133139
static func ReadBooksKey(readNumber: Int) -> String {
134140
return ""
@@ -141,7 +147,7 @@ public struct Translation {
141147
.map { $0.parameterKey }
142148
.map { $0.snakeCased() }
143149
.joined(separator: ", ")
144-
return "\t\(accessModifier.rawValue) static func \(prettyKey)(\(parameters)) -> String {\n\t\treturn String(format: \(localizedStringFunction)(\"\(rawKey)\", comment: \"\"), \(localizedArguments))\n\t}"
150+
return "\t\(accessModifier.rawValue) static func \(prettyKey)(\(parameters)) -> String {\n\t\treturn String(format: \(localizedStringFunction)(\"\(rawKey)\", bundle: \(bundleModifier.rawValue), comment: \"\"), \(localizedArguments))\n\t}"
145151
}
146152

147153
}
@@ -182,12 +188,15 @@ public class FileCodeGenerator: SwiftCodeGenerator {
182188

183189
let fileHandle: FileHandle
184190
let accessModifier: AccessModifier
191+
let bundleModifier: BundleModifier
185192
public init(
186193
fileHandle: FileHandle,
187-
access: String
194+
access: String,
195+
bundle: String
188196
) {
189197
self.fileHandle = fileHandle
190-
self.accessModifier = AccessModifier(accessString: access)
198+
self.accessModifier = .init(accessString: access)
199+
self.bundleModifier = .init(bundleName: bundle)
191200
}
192201

193202
// TODO: Generalize!!! += (same code as in string)
@@ -196,7 +205,7 @@ public class FileCodeGenerator: SwiftCodeGenerator {
196205

197206
for t in translations {
198207
fileHandle += SwiftCodeGeneratorConstants.methodOrVariableHeader
199-
fileHandle += t.swiftCode(accessModifier: accessModifier)
208+
fileHandle += t.swiftCode(accessModifier: accessModifier, bundleModifier: bundleModifier)
200209
}
201210

202211
fileHandle += SwiftCodeGeneratorConstants.rootObjectFooter
@@ -364,6 +373,15 @@ enum AccessModifier: String {
364373
}
365374
}
366375

376+
enum BundleModifier: String {
377+
case main
378+
case module
379+
380+
init(bundleName: String) {
381+
self = BundleModifier(rawValue: bundleName) ?? .main
382+
}
383+
}
384+
367385

368386
extension String {
369387
var first: String {

Sources/POEditorParser/main.swift

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ command(
1111
Argument<String>("language", description: "The language code"),
1212
Option<String>("swiftfile", default: "${SRCROOT}/${TARGET_NAME}/Literals.swift", description: "The output Swift file directory."),
1313
Option<String>("stringsfile", default: "${SRCROOT}/${TARGET_NAME}/Localizable.strings", description: "The output Strings file directory."),
14-
Option<String>("access", default: "public", description: "The access modifier.")
15-
) { (token: String, id: Int, language: String, swiftfile: String, stringsfile: String, access: String) in
14+
Option<String>("access", default: "public", description: "The access modifier."),
15+
Option<String>("bundle", default: "main", description: "The bundle modifier.")
16+
) { (token: String, id: Int, language: String, swiftfile: String, stringsfile: String, access: String, bundle: String) in
1617

1718
print("Fetching contents of strings at POEditor...".blue)
1819

@@ -61,7 +62,7 @@ command(
6162
print("Fatal error: Couldn't write to file located at \(swiftfile)".red)
6263
return
6364
}
64-
let fileCodeGenerator = FileCodeGenerator(fileHandle: swiftHandle, access: access)
65+
let fileCodeGenerator = FileCodeGenerator(fileHandle: swiftHandle, access: access, bundle: bundle)
6566
fileCodeGenerator.generateCode(translations: translations)
6667
print("Success! Literals generated at \(swiftfile)".green)
6768

0 commit comments

Comments
 (0)