api-generator-templates/Swift/macroses/common.utils.twig

126 lines
3.9 KiB
Twig

{% macro decapitalize(text) %}
{{- concat(slice(text, 0, 1) | lower, slice(text, 1, text | length)) -}}
{% endmacro %}
{% macro capitalize(text) %}
{{- concat(slice(text, 0, 1) | upper, slice(text, 1, text | length)) -}}
{% endmacro %}
{% macro formatNullableOrOptional(expr, nullable, optional) %}
{{- expr -}}{%- if nullable or optional -%}?{%- endif -%}
{% endmacro %}
{% macro formatValueType(valueType) %}
{%- import _self as self -%}
{%- if valueType.baseTypeName == "Array" -%}
[{{ self.formatValueType(valueType.itemsType) }}]
{%- elseif valueType.baseTypeName == "Map" -%}
[{{ self.formatValueType(valueType.keysType) }}: {{ self.formatValueType(valueType.valuesType) }}]
{%- elseif valueType.baseTypeName == "DateTime" -%}
Date
{%- elseif valueType.baseTypeName == "Long" -%}
Int64
{%- elseif valueType.baseTypeName == "Decimal" -%}
NSDecimalNumber
{%- else -%}
{{ valueType.baseTypeName }}
{%- endif -%}
{% endmacro %}
{% macro escapeIfNeeded(expr) %}
{%- if expr == "default" -%}
`{{ expr }}`
{%- else -%}
{{ expr }}
{%- endif -%}
{% endmacro %}
{% macro mappingFromMapForField(field, className) %}
{%- import _self as self -%}
{%- if field.type.type.baseTypeName == "DateTime" -%}
map.value("{{ field.jsonName }}", using: {{ self.dateTransformName(field.name, className) -}})
{%- elseif field.type.type.baseTypeName == "Decimal" -%}
map.value("{{ field.jsonName }}", using: NSDecimalNumberTransform())
{%- else -%}
map.value("{{ field.jsonName }}")
{%- endif -%}
{% endmacro %}
{% macro mappingToMapForField(field, className) %}
{%- import _self as self -%}
{%- if field.type.type.baseTypeName == "DateTime" -%}
(map["{{ field.jsonName }}"], {{ self.dateTransformName(field.name, className) -}})
{%- else -%}
map["{{ field.jsonName }}"]
{%- endif -%}
{% endmacro %}
{% macro dateTransformName(fieldName, className) %}
{%- import _self as self -%}
{{ self.decapitalize(className) }}{{ self.capitalize(fieldName) -}}Transform
{%- endmacro %}
{% macro enumValueName(value) %}
{%- import _self as self -%}
{{- self.decapitalize(value.name) -}}
{%- endmacro %}
{% macro defaultValueForField(field) %}
{%- set nullable = field.nullable -%}
{%- set optional = field.optional -%}
{%- set baseTypeName = field.type.type.baseTypeName -%}
{%- if nullable or optional -%}
nil
{%- elseif baseTypeName == "Array" -%}
[]
{%- elseif baseTypeName == "Map" -%}
[:]
{%- elseif baseTypeName == "String" -%}
""
{%- elseif baseTypeName == "DateTime" -%}
Date()
{%- elseif baseTypeName == "Double" -%}
0.0
{%- elseif baseTypeName == "Long" or baseTypeName == "Int" -%}
0
{%- elseif baseTypeName == "Bool" -%}
false
{%- elseif baseTypeName == "Decimal" -%}
.zero
{%- elseif (field.type.values is not null) -%}
{%- import _self as self -%}
.{{ self.enumValueName(first(field.type.values)) }}
{%- else -%}
.new{{ baseTypeName }}
{%- endif -%}
{%- endmacro %}
{% macro hasGenericsOrNonEqutableCollections(type) %}
{%- set valueType = type.type -%}
{%- if (valueType.typeParameters is not empty) -%}
{{ true }}
{%- elseif valueType.baseTypeName == "Array" -%}
{%- if valueType.itemsType.parent is not null -%}
{{ true }}
{%- else -%}
{{ self.hasGenericsOrNonEqutableCollections(valueType.itemsType) }}
{%- endif -%}
{%- elseif valueType.baseTypeName == "Map" -%}
{{ true }}
{%- elseif type.allFieldsOrdered is not null -%}
{%- import _self as self -%}
{%- for field in type.allFieldsOrdered -%}
{{ self.hasGenericsOrNonEqutableCollections(field.type) }}
{%- endfor -%}
{%- endif -%}
{%- endmacro %}