Text Placeholder
A flexible text template engine that allows templates with named placeholders within it.
Placeholders are defined by default following the handlebars syntax, but can be overriden with specific boundaries.
In order to provide the context in which our placeholders will be replaced the following options are available:
- HashMap
- Struct as an optional feature.
HashMap
As the name implies we can pass a HashMap
in order to provide the context. The
methods available are:
fill_with_hashmap
which replaces empty placeholders with an empty string.fill_with_hashmap_strict
which returns aError::PlaceholderError
when:- the provided context does not contain the placeholder
- the provided value for a placeholder cannot be converted to a string
Example
use Template;
use HashMap;
let default_template = new;
let mut table = new;
table.insert;
table.insert;
assert_eq!;
// We can also specify our own boundaries:
let custom_template = new_with_placeholder;
assert_eq!;
Struct
This is an optional feature that depends on serde
. In order to enable it specify in your Cargo.toml
dependencies the following:
= { = "0.2", = ["struct_context"] }
As the name implies we can pass a Struct
in order that implements the serde::Serialize
trait in order to provide the context. The methods available are:
fill_with_struct
which replaces empty placeholders with an empty string.fill_with_struct_strict
which returns aError::PlaceholderError
when:- the provided context does not contain the placeholder
- the provided value for a placeholder cannot be converted to a string
Example
use Template;
let default_template = new;
let context = Context ;
assert_eq!;
// We can also specify our own boundaries:
let custom_template = new_with_placeholder;
assert_eq!;
Roadmap
- Allow objects that implement trait
std::ops::Index
instead of depending directly on a HashMap.