2 个版本
0.1.1 | 2023年5月19日 |
---|---|
0.1.0 | 2023年5月19日 |
#473 in 模板引擎
7KB
104 行
目的
Rust 的 format!
宏需要在编译时将字符串模板作为字符串字面量传递。此 crate 使用众所周知的模板语言 handlebars 允许在运行时传递所有内容。使用整个 handlebars 确实有些过度,但对于仅仅创建一个易用的字符串插值函数来说,我对自己编写的库的准确性更有信心。我没有修改 handlebars 的语法,所以很遗憾,我不能完全复制 format!
的语法。
用法
您可以使用 Template::new()
初始化一个空的模板,然后修改模板和/或推送新的键/值对。这并不比直接使用 handlebars 更简洁,但这是为了完整性。
let mut s = Serp::default();
s.template = "{{sample}} {{string}}".to_string();
s.push("sample".into(), "hello".into());
s.push("string".into(), "world".into());
assert_eq!(s.format(), "hello world");
主要功能是 serp
,它接受一个模板作为 String
和一个键/值对的 HashMap<String, String>
。
let template = "Hello, {{name}}".to_string();
let map = HashMap::from([("name".into(), "world".into())]);
assert_eq!(serp(&template, &map), "Hello, world".to_string());
最终方法是对最终产品的简短方式,用于使用 serp
。 t
接受一个模板作为 &str
和一个键/值元组的数组作为 &[(&str, &str)]
。
let t = t("{{sample}} {{string}}", &[("sample", "Hello"), ("string", "World")]);
assert_eq!(t, "Hello World");
最后,最懒惰的例子,它使用一些约定来同时遵循标准的 handlebars 并简洁。 a
仅接受一个模板作为 &str
和一个字符串数组 &[&str]
。模板括号是编号的,从 0 开始。
let a = a("{{0}} {{1}}", &["Hello", "World"]);
assert_eq!(a, "Hello World");
许可证
MIT 和 Apache 2.0 双许可
依赖项
~2.8–4MB
~80K SLoC