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

As the name implies we can pass a HashMap in order to provide the context. The methods available are:

Example

```rust use text_placeholder::Template; use std::collections::HashMap;

let default_template = Template::new("Hello {{first}} {{second}}!");

let mut table = HashMap::new(); table.insert("first", "text"); table.insert("second", "placeholder");

asserteq!(defaulttemplate.fillwithhashmap(&table), "Hello text placeholder!");

// We can also specify our own boundaries:

let customtemplate = Template::newwith_placeholder("Hello $[first]] $[second]!", "$[", "]");

asserteq!(defaulttemplate.fillwithhashmap(&table), "Hello text placeholder!"); ```

Struct

This is an optional feature that depends on serde. In order to enable it specify in your Cargo.toml dependencies the following:

toml text_placeholder = { version = "0.2", features = ["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:

Example

```rust use text_placeholder::Template;

[derive(Serialize)]

struct Context { first: String, second: String }

let defaulttemplate = Template::new("Hello {{first}} {{second}}!"); let context = Context { first: "text".tostring(), second: "placeholder".to_string() };

asserteq!(defaulttemplate.fillwithstruct(&context), "Hello text placeholder!");

// We can also specify our own boundaries:

let customtemplate = Template::newwith_placeholder("Hello $[first]] $[second]!", "$[", "]");

asserteq!(defaulttemplate.fillwithstruct(&context), "Hello text placeholder!"); ```

Roadmap