Giter8 has built-in support for formatting template fields. Formatting options
can be added when referencing fields. For example, the name
field can be
formatted in upper camel case with:
$name;format="Camel"$
The formatting options are:
upper | uppercase : all uppercase letters
lower | lowercase : all lowercase letters
cap | capitalize : uppercase first letter
decap | decapitalize : lowercase first letter
start | start-case : uppercase the first letter of each word
word | word-only : remove all non-word letters (only a-zA-Z0-9_)
space | word-space : replace all non-word letters (only a-zA-Z0-9) with a whitespace
Camel | upper-camel : upper camel case (start-case, word-only)
camel | lower-camel : lower camel case (start-case, word-only, decapitalize)
hyphen | hyphenate : replace spaces with hyphens
norm | normalize : all lowercase with hyphens (lowercase, hyphenate)
snake | snake-case : replace spaces and dots with underscores
dotReverse | dot-reverse : tokenizes by dot and reverses the tokens (scala-lang.org -> org.scala-lang)
package | package-naming : replace spaces with dots
packaged | package-dir : replace dots with slashes (net.databinder -> net/databinder)
random | generate-random : appends random characters to the given string
A name
field with a value of My Project
could be rendered in several ways:
$name$ -> "My Project"
$name;format="camel"$ -> "myProject"
$name;format="Camel"$ -> "MyProject"
$name;format="normalize"$ -> "my-project"
$name;format="lower,hyphen"$ -> "my-project"
Note that multiple format options can be specified (comma-separated) which will be applied in the order given.
For file and directory names a format option can be specified after a double
underscore. For example, a directory named $organization__packaged$
will
change org.somewhere
to org/somewhere
like the built-in support for
package
. A file named $name__Camel$.scala
and the name awesome project
will create the file AwesomeProject.scala
. Multiple comma separated formatting
options can be used at once: $name__lower,hyphen$.scala
and the name
Awesome Project
will create the file awesome-project.scala
.