Crates.io | new_string_template |
lib.rs | new_string_template |
version | 1.5.3 |
source | src |
created_at | 2021-05-28 17:17:50.7546 |
updated_at | 2024-08-02 15:38:40.46396 |
description | Simple Customizable String-Templating Library for Rust. |
homepage | https://github.com/hasezoey/new_string_template |
repository | https://github.com/hasezoey/new_string_template |
max_upload_size | |
id | 403249 |
size | 28,682 |
Simple Customizable String-Templating Library for Rust.
This Library is inspired by string_template
Add this to your Cargo.toml
(or use cargo-add
):
[dependencies]
new_string_template = "1.5"
Example with 2 data points (with fail enabled):
use new_string_template::template::Template;
use std::collections::HashMap;
fn main() {
let templ_str = "Something {data1} be {data2}, and { not here }";
let templ = Template::new(templ_str);
let data = {
let mut map = HashMap::new();
map.insert("data1", "should");
map.insert("data2", "here");
map
};
let rendered = templ.render(&data).expect("Expected Result to be Ok");
assert_eq!("Something should be here, and { not here }", rendered);
}
Example with 1 data point (with fail disabled):
use new_string_template::template::Template;
use std::collections::HashMap;
fn main() {
let templ_str = "Something {data1} be {data2}, and { not here }";
let templ = Template::new(templ_str);
let data = {
let mut map = HashMap::new();
map.insert("data1", "should");
// map.insert("data2", "here");
map
};
let rendered = templ.render_nofail(&data);
assert_eq!("Something should be {data2}, and { not here }", rendered);
}
Example with Custom Regex:
use new_string_template::template::Template;
use std::collections::HashMap;
use regex::Regex;
fn main() {
// The following regex requires at least one space between "{{" and "}}" and allows variables with spaces
let custom_regex = Regex::new(r"(?mi)\{\{\s+([^\}]+)\s+\}\}").unwrap();
let templ_str = "Something {{ data1 }} be {{ data2 }}, and {{ data 3 }}";
let templ = Template::new(templ_str).with_regex(&custom_regex);
let data = {
let mut map = HashMap::new();
map.insert("data1", "should");
map.insert("data2", "here");
map.insert("data 3", "here too");
map
};
let rendered = templ.render_nofail(&data);
assert_eq!("Something should be here, and here too", rendered);
}
Note: with the default regex, a template-variable can have spaces or none at all.
This project requires: