5 个版本

0.2.1 2022 年 3 月 26 日
0.2.0 2022 年 2 月 26 日
0.2.0-beta.12022 年 1 月 23 日
0.1.0 2020 年 1 月 28 日

#256模板引擎

Download history 25/week @ 2024-04-08 7/week @ 2024-04-15 44/week @ 2024-04-22 42/week @ 2024-04-29 45/week @ 2024-05-06 43/week @ 2024-05-13 70/week @ 2024-05-20 80/week @ 2024-05-27 79/week @ 2024-06-03 54/week @ 2024-06-10 46/week @ 2024-06-17 37/week @ 2024-06-24 69/week @ 2024-07-01 45/week @ 2024-07-08 63/week @ 2024-07-15 85/week @ 2024-07-22

267 每月下载量
用于 wallust

MIT/Apache

32KB
668

FAR

查找和替换字符串模板引擎

version license downloads


概述

提供模板和映射后,FAR 将尝试在模板中找到所有键(由 {{}} 分隔)并在映射中替换为相应的值。默认情况下,映射值通过其 Display 实现。例如

# use far::{find, Render, Errors};
# fn main() -> Result<(), Errors> {
let template = "{{specific}} are my favorite {{category}}.";

#[derive(Render)]
struct Replacements {
    specific: String,
    category: String,
}

let found = find(template)?;

let replacements = Replacements {
    specific: "Cats".to_owned(),
    category: "animal".to_owned(),
};

let s = found.replace(&replacements);

assert_eq!(s, "Cats are my favorite animal.");
# Ok(())
# }

如果由于某种原因失败,将返回一个 解释失败原因

# use far::{find, Render};
// Note the typo ----------------------------> vvvvvvvv
let template = "{{specific}} are my favorite {{catglory}}.";

#[derive(Debug, Render)]
struct Replacements {
    specific: String,
    category: String,
}

let errors = find::<_, Replacements>(template).unwrap_err();

assert_eq!(
    format!("{}", errors),
    r#"missing key "category", extraneous key "catglory""#
);

模板作者可以编写 {{{{}}{{}}}} 来获取一个字面量 {{}} 分别。

更多示例和奇怪边缘案例行为可以在 core/src/tests 中找到。

许可

此项目根据您的选择受以下其中之一许可

依赖项

~4MB
~81K SLoC