#mustache #template #data #templating #list #rustache

rustache-lists

带有列表修复的 Rust Mustache 模板引擎

3 个版本

使用旧的 Rust 2015

0.1.2 2017 年 5 月 1 日
0.1.1 2017 年 5 月 1 日
0.1.0 2017 年 5 月 1 日

#510 in 模板引擎

24 每月下载量
用于 project_init

MIT 许可证

95KB
2K SLoC

Rustache 构建状态

RustacheRustMustache 规范的实现。

文档

不同的 Mustache 标签在 mustache(5) 手册页中进行了说明。

项目的文档页面位于 此处

安装

通过 Cargo 安装

rustache = "^0.1"

然后在您的 crate 中链接它,如下所示

extern crate rustache;

API 方法

当使用 Rustache 时,用户将交互的主要接口是 render 方法,该方法由 rustache::Render 特性提供,如下所示

// Renders the given template string
let data = rustache::HashBuilder::new().insert("name", "your name");
let mut out = Cursor::new(Vec::new());
data.render("{{ name }}", &mut out).unwrap();
println!("{}", String::from_utf8(rv.into_inner()).unwrap());

示例

以下是一个如何使用 HashBuilder 将数据传递给 render_text 方法的示例

let data = HashBuilder::new()
    .insert("name", "Bob");
let mut out = Cursor::new(Vec::new());

data.render("{{ name }}", &mut out);

以下是一个如何将数据以 JSON enum 的形式传递给 render 方法的示例

let data = json::from_str(r#"{"name": "Bob"}"#);
let mut out = Cursor::new(Vec::new());

data.render("{{ name }}", &mut out);

有关更多示例,请参阅 tests 目录。

测试

只需克隆并运行

cargo test

路线图

  • 完全符合 Mustache 规范。

    • 处理注释和部分空白
    • 处理分隔符的变化
  • 通过解析器和编译器传递线程错误

  • 现实世界项目示例。

  • 并行处理构建和解析操作

贡献

有关如何贡献的指南,请参阅 CONTRIBUTING.md

许可证

版权所有 (c) 2014 Rustache 团队

本软件及相关的文档文件(以下简称“软件”)的副本,任何人均可免费使用,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或销售软件副本,并允许向软件提供者授予此类权利,前提是遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同、侵权或其他法律,无论这些责任是否源于、源于或与软件或软件的使用或其他处理有关。

灵感来源于 https://github.com/erickt/rust-mustache

版权所有 (c) 2012 Erick Tryzelaar

本软件及相关的文档文件(以下简称“软件”)的副本,任何人均可免费使用,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或销售软件副本,并允许向软件提供者授予此类权利,前提是遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同、侵权或其他法律,无论这些责任是否源于、源于或与软件或软件的使用或其他处理有关。

依赖项

约4MB
约87K SLoC