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: 仅将第一个字符转换为大写int255toFloathexToIntpercent该框架还包含 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 文件。