Skip to content

Instantly share code, notes, and snippets.

@darrenclark
Last active September 2, 2016 20:28
Show Gist options
  • Save darrenclark/5e8ea2dc86df3100e144d53dc2e44202 to your computer and use it in GitHub Desktop.
Save darrenclark/5e8ea2dc86df3100e144d53dc2e44202 to your computer and use it in GitHub Desktop.
Generate default swift initializer from properties
#!/bin/bash
# Usage:
# 1. Copy your properties to clipboard
# 2. `pbpaste | swift-default-init.sh | pbcopy`
# 3. Paste into code
set -eu -o pipefail
# Switch to \t for tab indenting
INDENT=" "
fields=$(grep -oE '^\s*(let|var)\s+\w+:\s+[][A-Za-z0-9_<>?!:, ]+' <&0 | sed -E 's/^[[:space:]]*(let|var)[[:space:]]+//; s/[[:space:]]*$//')
# Write init(...) {
echo -n "$INDENT"
echo -n "init("
echo -n "$(echo "$fields" | head -n1)"
echo "$fields" | tail -n+2 | while read line; do
echo -n ", $line"
done
echo ") {"
echo "$fields" | while read line; do
field_name=$(echo $line | grep -oE '^\w+' | tr -d '\n')
echo "$INDENT${INDENT}self.$field_name = $field_name"
done
# Write }
echo "$INDENT}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment