From 0916108075f22a442b22b090bcee9ead2dcf9196 Mon Sep 17 00:00:00 2001 From: Ivan Babkin Date: Fri, 17 May 2019 19:19:44 +0300 Subject: [PATCH] Refactoring --- Swift/macroses/common.utils.twig | 52 ++++++++++++-------------- Swift/macroses/complexField.utils.twig | 6 --- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/Swift/macroses/common.utils.twig b/Swift/macroses/common.utils.twig index b6a6776..3945100 100644 --- a/Swift/macroses/common.utils.twig +++ b/Swift/macroses/common.utils.twig @@ -32,30 +32,30 @@ {%- endif -%} {% endmacro %} -{% macro formatEncodingValue(field, strong) %} +{% macro formatEncodingValue(field, isStrongLinkCaptured) %} {%- import _self as self -%} {%- if field.type.type.baseTypeName == "DateTime" -%} {{- self.formatEncodingDate(field) -}} - {%- elseif field.type.type.baseTypeName == "Decimal" -%} - {{ self.formatFieldName(field.name, strong) -}}.decimalValue - {%- elseif field.type.type.baseTypeName == "DateTimeTimestamp" -%} - Int({{ self.formatFieldName(field, strong) -}}.timeIntervalSince1970) - {%- elseif field.type.type.baseTypeName == "Color" -%} - {{ self.formatFieldName(field, strong) -}}.hexString - {%- elseif field.type.type.baseTypeName == "Url" -%} - {{ self.formatFieldName(field, strong) -}}.absoluteString {%- elseif field.type.type.baseTypeName == "StringDecimal" -%} {{- self.formatEncodingStringDecimal(field) -}} + {%- elseif field.type.type.baseTypeName == "Decimal" -%} + {{ self.formatFieldName(field.name, isStrongLinkCaptured) -}}.decimalValue + {%- elseif field.type.type.baseTypeName == "DateTimeTimestamp" -%} + Int({{ self.formatFieldName(field, isStrongLinkCaptured) -}}.timeIntervalSince1970) + {%- elseif field.type.type.baseTypeName == "Color" -%} + {{ self.formatFieldName(field, isStrongLinkCaptured) -}}.hexString + {%- elseif field.type.type.baseTypeName == "Url" -%} + {{ self.formatFieldName(field, isStrongLinkCaptured) -}}.absoluteString {%- else -%} {{ field.name }} {%- endif -%} {% endmacro %} -{% macro formatFieldName(field, strong) %} +{% macro formatFieldName(field, isStrongLinkCaptured) %} {%- import _self as self -%} - {%- if strong -%} + {%- if isStrongLinkCaptured -%} {{ field.name }} {%- else -%} {{ self.formatNullableOrOptional(field.name, field.nullable, field.optional) -}} @@ -70,25 +70,13 @@ ApiNumberFormattingService.string(from: {{ field.name -}}, format: .decimal) {%- endmacro -%} -{% macro escapeIfNeeded(expr) %} - {%- if expr == "default" or expr == "operator" -%} - `{{ expr }}` - {%- else -%} - {{ expr }} - {%- endif -%} -{% endmacro %} - {% macro encodeIfPresent(field) %} {%- import _self as self -%} - {%- import 'complexField.utils.twig' as complexFieldUtils -%} - - {% if field.type.type.baseTypeName == "DateTime" %} - {{ complexFieldUtils.encodeComplexFieldIfPresent(field, self.formatEncodingDate(field)) -}} - {%- elseif field.type.type.baseTypeName == "DateTimeTimestamp" -%} - {%- set intInit = "Int(%s.timeIntervalSince1970)"|format(field.name) -%} - {{ complexFieldUtils.encodeComplexFieldIfPresent(field, intInit) -}} - {%- elseif field.type.type.baseTypeName == "StringDecimal" -%} - {{ complexFieldUtils.encodeComplexFieldIfPresent(field, self.formatEncodingStringDecimal(field)) -}} + {%- set baseTypeName = field.type.type.baseTypeName -%} + {% if baseTypeName == "DateTime" or baseTypeName == "DateTimeTimestamp" or baseTypeName == "StringDecimal" %} + if let {{ field.name }} = {{ field.name }} { + try container.encode({{- self.formatEncodingValue(field, true) -}}, forKey: .{{- field.name -}}) + } {%- else -%} try container.encodeIfPresent({{- self.formatEncodingValue(field, false) -}}, forKey: .{{- field.name -}}) {%- endif -%} @@ -139,6 +127,14 @@ {{- self.decapitalize(value.name) -}} {%- endmacro %} +{% macro escapeIfNeeded(expr) %} + {%- if expr == "default" or expr == "operator" -%} + `{{ expr }}` + {%- else -%} + {{ expr }} + {%- endif -%} +{% endmacro %} + {% macro defaultValueForField(field) %} {%- set nullable = field.nullable -%} {%- set optional = field.optional -%} diff --git a/Swift/macroses/complexField.utils.twig b/Swift/macroses/complexField.utils.twig index 416c1d9..ab40a8e 100644 --- a/Swift/macroses/complexField.utils.twig +++ b/Swift/macroses/complexField.utils.twig @@ -39,10 +39,4 @@ } else { throw LeadKitError.failedToDecode(reason: "{{ errorMessage }}") } -{%- endmacro -%} - -{%- macro encodeComplexFieldIfPresent(field, init) -%} - if let {{ field.name }} = {{ field.name }} { - try container.encode({{- init -}}, forKey: .{{- field.name -}}) - } {%- endmacro -%} \ No newline at end of file