-
Notifications
You must be signed in to change notification settings - Fork 5
/
swiftgen-strings.stencil
90 lines (84 loc) · 3.74 KB
/
swiftgen-strings.stencil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// 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 %}
{% outer: for string in item.strings %}
{% for splitElement in string.name|split:"android" %}
{% if splitElement != string.name %}
{% continue outer %}
{% else %}
{% break %}
{% endif %}
{% endfor %}
{% 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("{{table}}", "{{string.key}}", {%+ call argumentsBlock string.types %}, fallback: "{{translation}}")
}
{% elif param.lookupFunction %}
{{accessModifier}} static var {{string.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}: String { return {{enumName}}.tr("{{table}}", "{{string.key}}", fallback: "{{translation}}") }
{% else %}
{{accessModifier}} static var {{string.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}: String { {{enumName}}.tr("{{table}}", "{{string.key}}", fallback: "{{translation}}") }
{% if string.key == "general.company_name" %}
/// {{translation}} without asking string provider
{{accessModifier}} static var {{string.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}LocalFallbackOnly: String { {{enumName}}.tr("{{table}}", "{{string.key}}", fallback: "{{translation}}", stringProviding: nil) }
{% endif %}
{% 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
{% else %}
// No string found
{% endif %}
// swiftlint:enable all