1个不稳定版本
0.1.0 | 2024年2月18日 |
---|
#237 在 模板引擎 中
每月 22 次下载
11KB
201 行
Aresty
Aresty是一个Rust编译模板库。
链接
使用方法
将以下内容添加到你的 Cargo.toml
[dependencies]
aresty = "0.1"
示例
样本 .rst 模板
<ol>
{{#for i in ints}}
<li class="{{#if i % 6 == 0}}fizzbuzz{{#else if i % 2 == 0}}fizz{{#else if i % 3 == 0}}buzz{{#else}}none{{/if}}">{{i}}</li>
{{/for}}
</ol>
<ul>
{{#for o in opts}}
<li>
{{#match o}}
{{=None}}Nothing at all
{{=Some(s)}}It is a "{{s}}"
{{/match}}
</li>
{{/for}}
</ul>
即兴宏使用
use std::io::Write;
use aresty::{aresty_render, escape::Escape, escape::NoEscape, Result};
fn hello_world(out: &mut impl Write) -> Result {
let world = "World!";
let result: Result = aresty_render!(out, NoEscape, "aresty_examples/src/hello_world.rst");
result
}
视图结构上的处理宏
use aresty::{aresty, Result, Template};
#[aresty("aresty_examples/src/view.rst")]
struct View<'a> {
ints: Vec<i32>,
opts: &'a Vec<Option<String>>,
}
fn main() -> Result {
let mut out = std::io::stdout();
let view = View {
ints: vec![1, 2, 3, 4, 5, 6, 60],
opts: &vec![None, Some("thing & co".to_string())],
};
view.render_html(&mut out)?;
Ok(())
}
支持的标签
标签 | 效果 |
---|---|
{{expr}} |
expr 被评估并打印为转义字符 |
{{{expr}}} |
expr 被评估并原样打印(不需要转义) |
{{!expr}} |
expr 被评估但不打印(即 let ) |
{{#block}} |
block 打开(即 if 、else 、else if 、for 、match 等) |
{{/block}} |
block 关闭 |
{{=expr}} |
expr 是父 match 块的分支;不需要关闭 |
依赖
~260–700KB
~17K SLoC