13 个版本
0.1.12 | 2024 年 5 月 23 日 |
---|---|
0.1.11 | 2024 年 5 月 22 日 |
0.1.6 | 2024 年 4 月 19 日 |
0.1.4 | 2024 年 3 月 16 日 |
0.1.2 | 2024 年 2 月 21 日 |
#126 在 模板引擎 中
每月 66 次下载
用于 llmclient
29KB
536 行
另一个模板引擎
受 %nix shell 以及几年前 Java 版本的启发,并受到其他 Rust 模板引擎的一些代码影响。
功能
- 默认分隔符为 "${" 和 "}". 可以覆盖为任何内容。
- 使用 :- 语法提供默认值。
- 允许变量嵌套(至 16 级)。
- 可以使用环境变量。
- 值查找顺序:提供的 HashMap、环境、默认值(如果提供)。
- 与 serde HashMaps 顺利配合。
- 可以包含文件(可以嵌套)。仅支持 .inc 扩展名。
- 无依赖。
- 速度快。
- 可以使用多值变量(仅通过 HashMap)用于列表等。
- 可以检查值的存在,如果存在则提供默认值。在 HTML 表单中变量具有特定值且此值应为默认选中值时很有用。
- 提供值列表,以 '#' 分隔,并实例化多个变量实例(在同一递归深度),使用连续的值。
- 字面扩展,不递归解析内容。对于嵌入式代码或示例很有用。
使用默认分隔符的普通变量将是:${variable_name},将在提供的 HashMap 中查找。如果未在 HashMap 中找到,则将查询环境。如果在任何地方都找不到值,则可以使用默认值(如果提供)。默认值由 ":-" 或 ":=" 指示。所以 ${variable_name:=default value} 将在输出中添加 "default value"。
变量的内容通常将递归检查进一步的嵌套变量,最多 16 级。默认情况下,值将删除前导和尾随空白。
变量名前面可能有一个修饰符。修饰符包括:'=' - 不递归检查变量的内容以进行进一步展开或删除空格。'*' - 引用的嵌入式变量提供多个值,值之间由 '|' 分隔。参见测试案例。'!' - 提供一个外部文件(必须以 .inc 结尾)并将其包含。进一步的递归展开按常规进行。'?' - 条件,如果变量有值则使用默认值(例如,在 HTML 中的下拉列表中很有用,以指示选中项)'#' - 简单的多个值,再次由 '|' 分隔,参见测试案例。
请参阅 API 文档
和测试案例。[链接](https://docs.rs/stemplate/)