StencilSwiftKit
是一个框架,它提供了额外的 Stencil 节点和过滤器,专门用于 Swift 代码生成。
{% macro <Name> <Params> %}…{% endmacro %}
{% call <Name> <Args> %}
{% set <Name> %}…{% endset %}
<Name>
的变量中。{% import "common.stencil" %}
common.stencil
中导入任何宏 (macro) 和 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 标识符的有效字符)。 在“漂亮”模式下,它还将随后应用 snakeToCamelCase 过滤器,以及根据需要进行其他操作,以获得一个“更漂亮”但仍然有效的标识符。upperFirstLetter
: 仅将第一个字符大写int255toFloat
hexToInt
percent
该框架还包含 用于 Stencil.Extension
和 Stencil.Environment
的辅助方法,以便轻松地在现有的 Stencil.Extension
上注册上面列出的所有标签和过滤器,以及轻松获得预配置了这些标签和过滤器的 Stencil.Environment
Extension
。
该框架包含一个附加的解析器,用于解析来自 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
文件。