StencilSwiftKit
是一个框架,它为 Stencil 带来了额外的节点和过滤器,专门用于 Swift 代码生成。
{% macro <Name> <Params> %}…{% endmacro %}
{% call <Name> <Args> %}
{% set <Name> %}…{% endset %}
<Name>
变量中。{% import "common.stencil" %}
common.stencil
中的任何宏和 set 定义导入到当前上下文中。{% map <Variable> into <Name> using <ItemName> %}…{% endmap %}
map
操作符应用于一个数组,并将结果存储到当前上下文中的一个新的数组变量 <Name>
中。maploop
变量(类似于 for
节点中的 forloop
变量)。它暴露了 maploop.counter
, maploop.first
, maploop.last
和 maploop.item
。basename
: 从路径中获取文件名。camelToSnakeCase
: 将文本从 camelCase 转换为 snake_case。 默认情况下,它会转换为小写,除非将单个可选参数设置为 "false"、"no" 或 "0"。contains
: 检查字符串是否包含特定的子字符串。dirname
: 从路径中获取父文件夹的路径。escapeReservedKeywords
: 转义 Swift 语言中保留的关键字,将其包裹在反引号中,以便它们可以用作 Swift 代码中的常规转义关键字。hasPrefix
/ hasSuffix
: 检查字符串是否以特定的子字符串开头/结尾。lowerFirstLetter
: 仅将字符串的第一个字母转换为小写。lowerFirstWord
: 仅将字符串的第一个单词转换为小写。replace
: 将子字符串的实例替换为一个新的字符串。snakeToCamelCase
: 将文本从 snake_case 转换为 camelCase。默认情况下,它保留前导下划线,除非将单个可选参数设置为 "true"、"yes" 或 "1"。swiftIdentifier
: 将任意字符串转换为有效的 Swift 标识符(仅使用 Swift 语言参考中定义的 Swift 标识符的有效字符)。 在 “pretty” 模式下,它也会在之后应用 snakeToCamelCase 过滤器,以及其他所需的处理,以获得一个“更漂亮”但仍然有效的标识符。upperFirstLetter
: 仅将第一个字符转换为大写int255toFloat
hexToInt
percent
该框架还包含 Stencil.Extension 和 Stencil.Environment 的辅助方法,可以轻松地将上面列出的所有标签和过滤器注册到现有的 Stencil.Extension
上,以及轻松地获取一个预先配置了这些标签和过滤器的 Stencil.Environment
。
该框架包含一个额外的解析器,旨在从 CLI 解析参数列表。 例如,如果使用 Commander,并且您从 VariadicOption<String>
接收到一个 [String]
,则可以使用该解析器将其转换为结构化的字典。 例如
["foo=1", "bar=2", "baz.qux=hello", "baz.items=a", "baz.items=b", "something"]
将会变成
[
"foo": "1",
"bar": "2",
"baz": [
"qux": "hello",
"items": [
"a",
"b"
]
],
something: true
]
为了更易于使用,您可以使用 StencilContext.enrich(context:parameters:environment:)
函数将以下变量添加到上下文中
param
:使用上述解析器解析的参数。env
:包含所有可用环境变量的字典(例如 PATH
)。此代码和工具采用 MIT 许可证。 请参阅此存储库中的 LICENCE
文件。