feat(RES-58): Add new parameter "bundle" (#19)
All checks were successful
gitea-openium/resgen.swift/pipeline/head This commit looks good

Add bundle parameter to define if resource should be load from Bundle.main (app) or Bundle.module (SPM package)

Reviewed-on: #19
This commit is contained in:
2025-07-25 16:14:36 +02:00
parent 5ad219ae89
commit f329386ccf
37 changed files with 866 additions and 403 deletions

View File

@@ -247,23 +247,25 @@ enum StringsFileGenerator {
sections: [Section],
defaultLang lang: String,
tags: [String],
staticVar: Bool,
isStatic: Bool,
inputFilename: String,
extensionName: String,
extensionFilePath: String,
extensionSuffix: String,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) {
// Get extension content
let extensionFileContent = Self.getExtensionContent(
sections: sections,
defaultLang: lang,
tags: tags,
staticVar: staticVar,
isStatic: isStatic,
inputFilename: inputFilename,
extensionName: extensionName,
extensionSuffix: extensionSuffix,
visibility: visibility
visibility: visibility,
assetBundle: assetBundle
)
// Write content
@@ -283,11 +285,12 @@ enum StringsFileGenerator {
sections: [Section],
defaultLang lang: String,
tags: [String],
staticVar: Bool,
isStatic: Bool,
inputFilename: String,
extensionName: String,
extensionSuffix: String,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
[
Self.getHeader(
@@ -305,8 +308,9 @@ enum StringsFileGenerator {
sections: sections,
defaultLang: lang,
tags: tags,
staticVar: staticVar,
visibility: visibility
isStatic: isStatic,
visibility: visibility,
assetBundle: assetBundle
),
Self.getFooter()
]
@@ -379,8 +383,9 @@ enum StringsFileGenerator {
sections: [Section],
defaultLang lang: String,
tags: [String],
staticVar: Bool,
visibility: ExtensionVisibility
isStatic: Bool,
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
sections.compactMap { section in
// Check that at least one string will be generated
@@ -394,19 +399,12 @@ enum StringsFileGenerator {
return nil // Go to next definition
}
let property: String = {
if staticVar {
definition.getNSLocalizedStringStaticProperty(
forLang: lang,
visibility: visibility
)
} else {
definition.getNSLocalizedStringProperty(
forLang: lang,
visibility: visibility
)
}
}()
let property = definition.getNSLocalizedStringProperty(
forLang: lang,
isStatic: isStatic,
visibility: visibility,
assetBundle: assetBundle
)
return "\n\(property)"
}

View File

@@ -15,7 +15,7 @@ enum TagsGenerator {
sections: [Section],
lang: String,
tags: [String],
staticVar: Bool,
isStatic: Bool,
extensionName: String,
extensionFilePath: String,
visibility: ExtensionVisibility
@@ -25,7 +25,7 @@ enum TagsGenerator {
sections: sections,
lang: lang,
tags: tags,
staticVar: staticVar,
isStatic: isStatic,
extensionName: extensionName,
visibility: visibility
)
@@ -47,20 +47,20 @@ enum TagsGenerator {
sections: [Section],
lang: String,
tags: [String],
staticVar: Bool,
isStatic: Bool,
extensionName: String,
visibility: ExtensionVisibility
) -> String {
[
Self.getHeader(
extensionClassname: extensionName,
staticVar: staticVar
isStatic: isStatic
),
Self.getProperties(
sections: sections,
lang: lang,
tags: tags,
staticVar: staticVar,
isStatic: isStatic,
visibility: visibility
),
Self.getFooter()
@@ -70,11 +70,11 @@ enum TagsGenerator {
// MARK: - Extension part
private static func getHeader(extensionClassname: String, staticVar: Bool) -> String {
private static func getHeader(extensionClassname: String, isStatic: Bool) -> String {
"""
// Generated by ResgenSwift.Strings.\(Tags.toolName) \(ResgenSwiftVersion)
\(staticVar ? "typelias Tags = String\n\n" : "")import UIKit
\(isStatic ? "typelias Tags = String\n\n" : "")import UIKit
extension \(extensionClassname) {
"""
@@ -84,7 +84,7 @@ enum TagsGenerator {
sections: [Section],
lang: String,
tags: [String],
staticVar: Bool,
isStatic: Bool,
visibility: ExtensionVisibility
) -> String {
sections
@@ -100,11 +100,12 @@ enum TagsGenerator {
return // Go to next definition
}
if staticVar {
res += "\n\n\(definition.getStaticProperty(forLang: lang, visibility: visibility))"
} else {
res += "\n\n\(definition.getProperty(forLang: lang, visibility: visibility))"
}
let property = definition.getProperty(
forLang: lang,
visibility: visibility,
isStatic: isStatic
)
res += "\n\n\(property)"
}
return res
}