Skip to content

Instantly share code, notes, and snippets.

@flovilmart
Created May 31, 2018 19:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flovilmart/1003a97f40250edb5c070795894064a6 to your computer and use it in GitHub Desktop.
Save flovilmart/1003a97f40250edb5c070795894064a6 to your computer and use it in GitHub Desktop.
Buildable
{% for type in types.implementing.Buildable %}
extension {{ type.name }} {
class Builder {
{% for member in type.variables %}
private var {{ member.name }}: {{member.typeName}}?
{% endfor %}
{% for member in type.variables %}
func set({{ member.name }}: {{member.typeName}}) -> Builder {
self.{{ member.name }} = {{ member.name }}
return self
}
{% endfor %}
// MARK: builder
func build() -> {{type.name}} {
return {{type.name}}(
{% for member in type.variables %}
{{ member.name }}: {{ member.name }}!{% if not forloop.last %},{% else %}){% endif %}
{% endfor %}
}
}
}
{% endfor %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment