Closed davidscheutz closed 1 year ago
ChatGPT template:
// Template name: SmartCopy
// Template version: 1.0
// Iterate over all the structs in the source code
{% for type in types.structs %}
{{ type.accessibility }} struct {{ type.name }} {
{% for property in type.storedProperties %}
let {{ property.name }}: {{ property.type }}
{% endfor %}
{% if type.storedProperties.count > 0 %}
init({% for property in type.storedProperties %}{{ property.name }}: {{ property.type }}{% ifnot forloop.last %}, {% endif %}{% endfor %}) {
{% for property in type.storedProperties %}
self.{{ property.name }} = {{ property.name }}
{% endfor %}
}
{% endif %}
}
extension {{ type.name }} {
func updating(
{% for property in type.storedProperties %}
{{ property.name }}: {{ property.type }}? = nil{% ifnot forloop.last %}, {% endif %}
{% endfor %}
) -> {{ type.name }} {
return {{ type.name }}(
{% for property in type.storedProperties %}
{{ property.name }}: {{ property.name }} ?? self.{{ property.name }}{% ifnot forloop.last %}, {% endif %}
{% endfor %}
)
}
}
{% endfor %}
Generate convenient copy functions for the
State
using e.g. Sourcery.