Incrust is a template engine written in Rust, inspired by Jinja2.
The implementation is at a very early stage.
Incrust is available on crates.io and can be included in your Cargo enabled project like this:
[dependencies]
incrust = "0.0"
Then include it in your code like this:
rust
extern crate incrust;
All examples assume prepared instance of incrust. For ease of use hashmaps, we use the macro maplit
```rust
extern crate maplit; extern crate incrust;
use incrust::Incrust;
fn main() { let incrust = Incrust::new(); // ... } ```
rust
let result = incrust.render_text("Hello, {{name}}!", hashmap!{ "name" => "World", }).unwrap();
assert_eq!(result, "Hello, World!");
rust
let result = incrust.render_text("<h1>{{ text | e }}</h1>", hashmap!{ "text" => "<Cats & Dogs>", }).unwrap();
assert_eq!(result, "<h1><Cats & Dogs></h1>");
rust
let tpl = incrust.parse("<p>Visible {# partially #} paragraph</p>").unwrap();
let result = incrust.render_parsed(tpl, hashmap!{}).unwrap();
assert_eq!(result, "<p>Visible paragraph</p>");
}
rust
let tpl = "Example: {% raw %}{{ mustaches }}{% endraw %}";
let result = incrust.render_text(tpl, hashmap!{}).unwrap();
assert_eq!(result, "Example: {{ mustaches }}");
Licensed under either of * Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) * MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.