StencilSwiftKit
StencilSwiftKit
是一个框架,它为 Swift 代码生成带来了额外的 Stencil 节点和过滤器。
标签
- 宏 & 调用
{% macro <名称> <参数> %}…{% endmacro %}
- 定义一个宏,以后在调用时会用这个块内的节点替换
{% call <名称> <参数> %}
- 调用先前定义的宏,并向其传递一些参数
- 设置
{% set <名称> %}…{% endset %}
- 立即渲染这个块内的节点,并将其结果存储在当前上下文中的
<名称>
变量中。
- 导入
{% import "common.stencil" %}
- 将
common.stencil
中的任何宏和设置定义导入当前上下文。
- 映射
{% map <变量> into <名称> using <项目名称> %}…{% endmap %}
- 对一个数组应用一个
map
操作符,并将结果存储到当前上下文中一个新的数组变量<名称>
中。 - 在 map 循环内部,一个特殊变量
maploop
是可用的(类似于for
节点中的forloop
变量)。它公开maploop.counter
、maploop.first
、maploop.last
和maploop.item
。
筛选
- 字符串筛选器:
basename
: 从路径中获取文件名。camelToSnakeCase
: 将文本从驼峰式转换为snake_case。默认情况下,它转换为小写,除非设置单个可选参数为"false"、"no"或"0"。contains
: 检查字符串是否包含指定的子字符串。dirname
: 从路径中获取父文件夹的路径。escapeReservedKeywords
: 使用反引号包裹Swift语言中保留的关键字,以便在Swift代码中将它们用作常规转义关键字。hasPrefix
/hasSuffix
: 检查字符串是否以特定的子字符串开头/结尾。lowerFirstLetter
: 仅将字符串的第一个字母转换为小写。lowerFirstWord
: 仅将字符串的第一个单词转换为小写。replace
: 将子字符串的实例替换为新的字符串。snakeToCamelCase
: 将文本从snake_case转换为驼峰式。默认情况下,它保留开头的下划线,除非设置单个可选参数为"true"、"yes"或"1"。swiftIdentifier
: 将任意字符串转换为有效的Swift标识符(使用Swift语言参考中定义的Swift标识符的有效字符)。在"pretty"模式下,它还会后续应用snakeToCamelCase筛选器和其他必要的操作,以使得标识符更加“整洁”但仍然合法。upperFirstLetter
: 仅将第一个字符转换为大写。
- 数字筛选器:
int255toFloat
hexToInt
percent
Stencil.Extension & swiftStencilEnvironment
此框架还包含对Stencil.Extension
和Stencil.Environment
的辅助方法,以便轻松地将上述所有标签和筛选器注册到现有的Stencil.Extension
中,以及轻松地获取带有这些标签和筛选器配置的预配置的Stencil.Environment
。
参数
此框架还包含一个解析器,用于从CLI中解析参数列表。例如,使用Commander,如果在VariadicOption
中从获得的为[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
文件。