{% map <Variable> into <Name> using <ItemName> %}…{% endmap %}
Apply a map operator to an array, and store the result into a new array variable <Name> in the current context.
Inside the map loop, a maploop special variable is available (akin to the forloop variable in for nodes). It exposes maploop.counter, maploop.first, maploop.last and maploop.item.
camelToSnakeCase: Transforms text from camelCase to snake_case. By default it converts to lower case, unless a single optional argument is set to “false”, “no” or “0”.
contains: Check if a string contains a specific substring.
dirname: Get the path to the parent folder from a path.
escapeReservedKeywords: Escape keywords reserved in the Swift language, by wrapping them inside backticks so that the can be used as regular escape keywords in Swift code.
hasPrefix / hasSuffix: Check if a string starts/ends with a specific substring.
lowerFirstLetter: Lowercases only the first letter of a string.
lowerFirstWord: Lowercases only the first word of a string.
replace: Replaces instances of a substring with a new string.
snakeToCamelCase: Transforms text from snake_case to camelCase. By default it keeps leading underscores, unless a single optional argument is set to “true”, “yes” or “1”.
swiftIdentifier: Transforms an arbitrary string into a valid Swift identifier (using only valid characters for a Swift identifier as defined in the Swift language reference). In “pretty” mode, it will also apply the snakeToCamelCase filter afterwards, and other manipulations if needed for a “prettier” but still valid identifier.
upperFirstLetter: Uppercases only the first character
This framework also contains helper methods for Stencil.Extension and Stencil.Environment, to easily register all the tags and filters listed above on an existing Stencil.Extension, as well as to easily get a Stencil.Environment preconfigured with both those tags & filters Extension.
Parameters
This framework contains an additional parser, meant to parse a list of parameters from the CLI. For example, using Commander, if you receive a [String] from a VariadicOption<String>, you can use the parser to convert it into a structured dictionary. For example:
StencilSwiftKit
StencilSwiftKit
is a framework bringing additional Stencil nodes & filters dedicated to Swift code generation.Tags
{% macro <Name> <Params> %}…{% endmacro %}
{% call <Name> <Args> %}
{% set <Name> %}…{% endset %}
<Name>
variable of the current context.{% import "common.stencil" %}
common.stencil
into the current context.{% map <Variable> into <Name> using <ItemName> %}…{% endmap %}
map
operator to an array, and store the result into a new array variable<Name>
in the current context.maploop
special variable is available (akin to theforloop
variable infor
nodes). It exposesmaploop.counter
,maploop.first
,maploop.last
andmaploop.item
.Filters
basename
: Get the filename from a path.camelToSnakeCase
: Transforms text from camelCase to snake_case. By default it converts to lower case, unless a single optional argument is set to “false”, “no” or “0”.contains
: Check if a string contains a specific substring.dirname
: Get the path to the parent folder from a path.escapeReservedKeywords
: Escape keywords reserved in the Swift language, by wrapping them inside backticks so that the can be used as regular escape keywords in Swift code.hasPrefix
/hasSuffix
: Check if a string starts/ends with a specific substring.lowerFirstLetter
: Lowercases only the first letter of a string.lowerFirstWord
: Lowercases only the first word of a string.replace
: Replaces instances of a substring with a new string.snakeToCamelCase
: Transforms text from snake_case to camelCase. By default it keeps leading underscores, unless a single optional argument is set to “true”, “yes” or “1”.swiftIdentifier
: Transforms an arbitrary string into a valid Swift identifier (using only valid characters for a Swift identifier as defined in the Swift language reference). In “pretty” mode, it will also apply the snakeToCamelCase filter afterwards, and other manipulations if needed for a “prettier” but still valid identifier.upperFirstLetter
: Uppercases only the first characterint255toFloat
hexToInt
percent
Stencil.Extension & swiftStencilEnvironment
This framework also contains helper methods for
Stencil.Extension
andStencil.Environment
, to easily register all the tags and filters listed above on an existingStencil.Extension
, as well as to easily get aStencil.Environment
preconfigured with both those tags & filtersExtension
.Parameters
This framework contains an additional parser, meant to parse a list of parameters from the CLI. For example, using Commander, if you receive a
[String]
from aVariadicOption<String>
, you can use the parser to convert it into a structured dictionary. For example:will become
For easier use, you can use the
StencilContext.enrich(context:parameters:environment:)
function to add the following variables to a context:param
: the parsed parameters using the parser mentioned above.env
: a dictionary with all available environment variables (such asPATH
).Licence
This code and tool is under the MIT Licence. See the
LICENCE
file in this repository.