Crate new_string_template[][src]

Expand description

Simple Customizable String-Templating Library for Rust.

This Library is inspired by string_template

Usage

Add this to your Cargo.toml (or use cargo-add):

[dependencies]
new_string_template = "1.0"

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, an template-variable can have spaces or none at all.

Modules

error
template