| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // swiftlint:disable all
- // Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen
- {% if tables.count > 0 %}
- {% set accessModifier %}{% if param.publicAccess %}public{% else %}internal{% endif %}{% endset %}
- import Foundation
- // swiftlint:disable superfluous_disable_command file_length implicit_return prefer_self_in_static_references
- // MARK: - Strings
- {% macro parametersBlock types %}
- {%- for type in types -%}
- {%- if type == "String" -%}
- _ p{{forloop.counter}}: Any
- {%- else -%}
- _ p{{forloop.counter}}: {{type}}
- {%- endif -%}
- {{ ", " if not forloop.last }}
- {%- endfor -%}
- {% endmacro %}
- {% macro argumentsBlock types %}
- {%- for type in types -%}
- {%- if type == "String" -%}
- String(describing: p{{forloop.counter}})
- {%- elif type == "UnsafeRawPointer" -%}
- Int(bitPattern: p{{forloop.counter}})
- {%- else -%}
- p{{forloop.counter}}
- {%- endif -%}
- {{ ", " if not forloop.last }}
- {%- endfor -%}
- {% endmacro %}
- {% macro recursiveBlock table item %}
- {% for string in item.strings %}
- {% if not param.noComments %}
- {% for line in string.comment|default:string.translation|split:"\n" %}
- /// {{line}}
- {% endfor %}
- {% endif %}
- {% set translation string.translation|replace:'"','\"'|replace:' ','\t' %}
- {% if string.types %}
- {{accessModifier}} static func {{string.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}({% call parametersBlock string.types %}) -> String {
- return {{enumName}}.tr("{{string.key}}", {%+ call argumentsBlock string.types %}, fallback: "{{translation}}")
- }
- {% elif param.lookupFunction %}
- {{accessModifier}} static var {{string.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}: String { return {{enumName}}.tr("{{string.key}}", fallback: "{{translation}}") }
- {% else %}
- {{accessModifier}} static let {{string.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}} = {{enumName}}.tr("{{string.key}}", fallback: "{{translation}}")
- {% endif %}
- {% endfor %}
- {% for child in item.children %}
- {{accessModifier}} enum {{child.name|swiftIdentifier:"pretty"|escapeReservedKeywords}} {
- {% filter indent:2," ",true %}{% call recursiveBlock table child %}{% endfilter %}
- }
- {% endfor %}
- {% endmacro %}
- // swiftlint:disable explicit_type_interface function_parameter_count identifier_name line_length
- // swiftlint:disable nesting type_body_length type_name vertical_whitespace_opening_braces
- {% set enumName %}{{param.enumName|default:"L10n"}}{% endset %}
- {{accessModifier}} enum {{enumName}} {
- {% if tables.count > 1 or param.forceFileNameEnum %}
- {% for table in tables %}
- {{accessModifier}} enum {{table.name|swiftIdentifier:"pretty"|escapeReservedKeywords}} {
- {% filter indent:2," ",true %}{% call recursiveBlock table.name table.levels %}{% endfilter %}
- }
- {% endfor %}
- {% else %}
- {% call recursiveBlock tables.first.name tables.first.levels %}
- {% endif %}
- }
- // swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length
- // swiftlint:enable nesting type_body_length type_name vertical_whitespace_opening_braces
- // MARK: - Implementation Details
- extension {{enumName}} {
- private static func tr(_ key: String, _ args: CVarArg..., fallback value: String) -> String {
- {% if param.lookupFunction %}
- let format = {{ param.lookupFunction }}(key, table, value)
- {% else %}
- let format = {{param.bundle|default:"BundleToken.bundle"}}.localizedString(forKey: key, value: value, table: nil)
- {% endif %}
- return String(format: format, locale: Locale.current, arguments: args)
- }
- }
- {% if not param.bundle and not param.lookupFunction %}
- // swiftlint:disable convenience_type
- private final class BundleToken {
- static let bundle: Bundle = {
- #if SWIFT_PACKAGE
- return Bundle.module
- #else
- return Bundle(for: BundleToken.self)
- #endif
- }()
- }
- // swiftlint:enable convenience_type
- {% endif %}
- {% else %}
- // No string found
- {% endif %}
|