StencilSwiftKit
is a framework bringing additional Stencil nodes & filters dedicated to Swift code generation.
{% 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 the forloop
variable in for
nodes). It exposes maploop.counter
, maploop.first
, maploop.last
and maploop.item
.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
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
.
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:
["foo=1", "bar=2", "baz.qux=hello", "baz.items=a", "baz.items=b", "something"]
will become
[
"foo": "1",
"bar": "2",
"baz": [
"qux": "hello",
"items": [
"a",
"b"
]
],
something: true
]
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 as PATH
).This code and tool is under the MIT Licence. See the LICENCE
file in this repository.
link |
Stars: 275 |
Last commit: 27 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics