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