StencilSwiftKit 2.10.1

StencilSwiftKit 2.10.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布Aug 2022
SPM支持 SPM

由以下人员维护:Olivier HalligonIlya PuchkaKrzysztof ZabłockiDavid Jennes



  • Olivier Halligon 和 David Jennes

StencilSwiftKit

CircleCI CocoaPods Compatible Platform Swift 5.0

StencilSwiftKit 是一个框架,它为 Swift 代码生成带来了额外的 Stencil 节点和过滤器。

标签

  • & 调用
    • {% macro <名称> <参数> %}…{% endmacro %}
    • 定义一个宏,以后在调用时会用这个块内的节点替换
    • {% call <名称> <参数> %}
    • 调用先前定义的宏,并向其传递一些参数
  • 设置
    • {% set <名称> %}…{% endset %}
    • 立即渲染这个块内的节点,并将其结果存储在当前上下文中的 <名称> 变量中。
  • 导入
    • {% import "common.stencil" %}
    • common.stencil 中的任何宏和设置定义导入当前上下文。
  • 映射
    • {% map <变量> into <名称> using <项目名称> %}…{% endmap %}
    • 对一个数组应用一个 map 操作符,并将结果存储到当前上下文中一个新的数组变量 <名称> 中。
    • 在 map 循环内部,一个特殊变量 maploop 是可用的(类似于 for 节点中的 forloop 变量)。它公开 maploop.countermaploop.firstmaploop.lastmaploop.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.ExtensionStencil.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文件。