Skip to content

Instantly share code, notes, and snippets.

View homerooliveira's full-sized avatar

Homero Oliveira homerooliveira

  • iOS Software Engineer at @ifood
  • Porto Alegre, Brazil
View GitHub Profile
@homerooliveira
homerooliveira / CaseIterable.stencil
Created September 11, 2018 15:22
CaseIterable template for Sourcery.
// swiftlint:disable all
#if swift(>=4.2)
#else
protocol CaseIterable { }
{% for enum in types.based.CaseIterable|enum %}
{{ enum.accessLevel }} extension {{ enum.name }} {
{% if not enum.hasAssociatedValues %}
static let allCases: [{{ enum.name }}] = [
@homerooliveira
homerooliveira / Autoinit.stencil
Created September 11, 2018 15:21
AutoInit template for Sourcery
{% for type in types.structs %}
{% if type|annotated:"AutoInit" %}
{% set spacing %}{% if type.parentName %} {% endif %}{% endset %}
{% map type.storedVariables into parameters using var %}{{ var.name }}: {{ var.typeName }}{% if var.defaultValue %} = {{ var.defaultValue }}{% endif %}{% endmap %}
{% map type.storedVariables into parametersInit using var %}{{ var.name }}: {{ var.name }}{% endmap %}
// sourcery:inline:auto:{{ type.name }}.AutoInit
{{spacing}} {{ type.accessLevel }} init({{ parameters|join:", "}}) { // swiftlint:disable:this line_length
{{spacing}} {% for variable in type.storedVariables %}
{{spacing}} self.{{ variable.name }} = {{ variable.name }}
{{spacing}} {% endfor %}