Skip to content

Commit c3a0d38

Browse files
author
Wayne Wanbok Choi
committed
Update to add 'access modifier' for generated swift file
1 parent 2f000d6 commit c3a0d38

File tree

2 files changed

+33
-16
lines changed

2 files changed

+33
-16
lines changed

Sources/POEditorParser/Lib/LiteralsParser.swift

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -156,17 +156,19 @@ enum SwiftCodeGeneratorConstants {
156156
return formatter
157157
}()
158158

159-
static let rootObjectHeader = """
160-
// Generated using POEditorParser
161-
// DO NOT EDIT
162-
// Generated: \(SwiftCodeGeneratorConstants.dateFormatter.string(from: Date()))
163-
164-
// swiftlint:disable all
159+
static func rootObjectHeader(accessModifier: AccessModifier = .public) -> String {
160+
"""
161+
// Generated using POEditorParser
162+
// DO NOT EDIT
163+
// Generated: \(SwiftCodeGeneratorConstants.dateFormatter.string(from: Date()))
164+
165+
// swiftlint:disable all
165166
166-
import Foundation
167-
168-
enum Literals {
169-
"""
167+
import Foundation
168+
169+
\(accessModifier.rawValue) enum Literals {
170+
"""
171+
}
170172
static let rootObjectFooter = "\n}\n// swiftlint:enable all\n"
171173

172174
static let methodOrVariableHeader = "\n"
@@ -181,7 +183,7 @@ class StringCodeGenerator: SwiftCodeGenerator {
181183
var generatedResult = ""
182184

183185
func generateCode(translations: [Translation]) {
184-
generatedResult += SwiftCodeGeneratorConstants.rootObjectHeader
186+
generatedResult += SwiftCodeGeneratorConstants.rootObjectHeader()
185187

186188
for t in translations {
187189
generatedResult += SwiftCodeGeneratorConstants.methodOrVariableHeader
@@ -195,13 +197,18 @@ class StringCodeGenerator: SwiftCodeGenerator {
195197
public class FileCodeGenerator: SwiftCodeGenerator {
196198

197199
let fileHandle: FileHandle
198-
public init(fileHandle: FileHandle) {
200+
let accessModifier: AccessModifier
201+
public init(
202+
fileHandle: FileHandle,
203+
access: String
204+
) {
199205
self.fileHandle = fileHandle
206+
self.accessModifier = AccessModifier(accessString: access)
200207
}
201208

202209
// TODO: Generalize!!! += (same code as in string)
203210
public func generateCode(translations: [Translation]) {
204-
fileHandle += SwiftCodeGeneratorConstants.rootObjectHeader
211+
fileHandle += SwiftCodeGeneratorConstants.rootObjectHeader()
205212

206213
for t in translations {
207214
fileHandle += SwiftCodeGeneratorConstants.methodOrVariableHeader
@@ -365,6 +372,15 @@ enum TranslationValueParser {
365372
}
366373

367374

375+
enum AccessModifier: String {
376+
case `public`, `private`, `open`, `internal`
377+
378+
init(accessString: String) {
379+
self = AccessModifier(rawValue: accessString) ?? .public
380+
}
381+
}
382+
383+
368384
extension String {
369385
var first: String {
370386
return String(prefix(1))

Sources/POEditorParser/main.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ command(
1010
Argument<Int>("id", description: "The id of the project"),
1111
Argument<String>("language", description: "The language code"),
1212
Option<String>("swiftfile", default: "${SRCROOT}/${TARGET_NAME}/Literals.swift", description: "The output Swift file directory."),
13-
Option<String>("stringsfile", default: "${SRCROOT}/${TARGET_NAME}/Localizable.strings", description: "The output Strings file directory.")
14-
) { (token: String, id: Int, language: String, swiftfile: String, stringsfile: String) in
13+
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
1516

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

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

0 commit comments

Comments
 (0)