From 81163c14b37ca19d2e4104db833ee881f0f9fcba Mon Sep 17 00:00:00 2001 From: Ivan Smolin Date: Tue, 30 Oct 2018 15:37:32 +0300 Subject: [PATCH] add copyWithout method to classes --- Swift/Class.swift.twig | 4 ++++ Swift/blocks/class/bool-parameters-fields.twig | 7 +++++++ Swift/blocks/class/fields-without-initialization.twig | 7 +++++++ 3 files changed, 18 insertions(+) create mode 100644 Swift/blocks/class/bool-parameters-fields.twig create mode 100644 Swift/blocks/class/fields-without-initialization.twig diff --git a/Swift/Class.swift.twig b/Swift/Class.swift.twig index 0da1dd9..98f0fee 100644 --- a/Swift/Class.swift.twig +++ b/Swift/Class.swift.twig @@ -83,6 +83,10 @@ extension {{ type.baseTypeName }} { return {{ type.baseTypeName }}({%- include 'blocks/class/fields-optional-initialization.twig' with { fields: allFieldsOrdered } -%}) } + func copy{%- if hasChilds -%}{{ type.baseTypeName }}{%- endif -%}Without({%- include 'blocks/class/bool-parameters-fields.twig' with { fields: allFieldsOrdered } -%}) -> {{ type.baseTypeName }} { + return {{ type.baseTypeName }}({%- include 'blocks/class/fields-without-initialization.twig' with { fields: allFieldsOrdered } -%}) + } + } {{ "\n" }} {%- endif -%} diff --git a/Swift/blocks/class/bool-parameters-fields.twig b/Swift/blocks/class/bool-parameters-fields.twig new file mode 100644 index 0000000..d49649a --- /dev/null +++ b/Swift/blocks/class/bool-parameters-fields.twig @@ -0,0 +1,7 @@ +{%- import '../../macroses/common.utils.twig' as utils -%} + +{%- if fields is not empty -%} +{%- for field in fields -%} + {{ field.name }}: Bool = false{%- if not (loop.last) %}, {% endif %} +{%- endfor -%} +{%- endif -%} \ No newline at end of file diff --git a/Swift/blocks/class/fields-without-initialization.twig b/Swift/blocks/class/fields-without-initialization.twig new file mode 100644 index 0000000..c997e2e --- /dev/null +++ b/Swift/blocks/class/fields-without-initialization.twig @@ -0,0 +1,7 @@ +{%- import '../../macroses/common.utils.twig' as utils -%} + +{%- if fields is not empty -%} +{%- for field in fields -%} + {{ field.name }}: {{ field.name }} ? {{ utils.defaultValueForField(field) }} : self.{{ field.name }}{%- if not (loop.last) %}, {% endif %} +{%- endfor -%} +{%- endif -%} \ No newline at end of file