Expand description
FAR
Find And Replace string template engine
Overview
Provided with a template and a map, FAR will attempt to find all the keys
(delimited with {{
and }}
) in the template and replace them with the
corresponding value in the map. By default, map values are
rendered by their Display
impl. For example:
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.");
If it fails for some reason, an explanation of why will be returned:
// 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""#
);
Template authors can write {{{{}}
or {{}}}}
to get a literal {{
or }}
respectively.
Additional examples and weird edge-case behaviors can be found in
core/src/tests
.
License
This project is licensed under either of
at your option.
Structs
Enums
Traits
A type whose contents can be rendered into a template
Functions
Find placeholder keys in a string and produce a cached template
find
, but with control over what causes an error