[][src]Struct gtmpl::Template

pub struct Template {
    pub name: String,
    pub text: String,
    pub funcs: HashMap<String, Func>,
    pub tree_set: HashMap<String, Tree>,
}

The main template structure.

Fields

name: Stringtext: Stringfuncs: HashMap<String, Func>tree_set: HashMap<String, Tree>

Implementations

impl<'b> Template[src]

pub fn execute<T: Write>(
    &self,
    writer: &'b mut T,
    data: &Context
) -> Result<(), String>
[src]

pub fn render(&self, data: &Context) -> Result<String, String>[src]

impl Template[src]

pub fn with_name<T: Into<String>>(name: T) -> Template[src]

Creates a new empty template with a given name.

pub fn add_func(&mut self, name: &str, func: Func)[src]

Adds a single custom function to the template.

Example

use gtmpl::{Context, Func, Value};

fn hello_world(_args: &[Value]) -> Result<Value, String> {
  Ok(Value::from("Hello World!"))
}

let mut tmpl = gtmpl::Template::default();
tmpl.add_func("helloWorld", hello_world);
tmpl.parse("{{ helloWorld }}").unwrap();
let output = tmpl.render(&Context::empty());
assert_eq!(&output.unwrap(), "Hello World!");

pub fn add_funcs<T: Into<String> + Clone>(&mut self, funcs: &[(T, Func)])[src]

Adds custom functions to the template.

Example

use std::collections::HashMap;

use gtmpl::{Context, Func, Value};

fn hello_world(_args: &[Value]) -> Result<Value, String> {
  Ok(Value::from("Hello World!"))
}

let funcs = vec![("helloWorld", hello_world as Func)];
let mut tmpl = gtmpl::Template::default();
tmpl.add_funcs(&funcs);
tmpl.parse("{{ helloWorld }}").unwrap();
let output = tmpl.render(&Context::empty());
assert_eq!(&output.unwrap(), "Hello World!");

pub fn parse<T: Into<String>>(&mut self, text: T) -> Result<(), String>[src]

Parse the given text as template body.

Example

let mut tmpl = gtmpl::Template::default();
tmpl.parse("Hello World!").unwrap();

pub fn add_template<N: Into<String>, T: Into<String>>(
    &mut self,
    name: N,
    text: T
) -> Result<(), String>
[src]

Add the given text as a template with a name.

Example

use gtmpl::Context;

let mut tmpl = gtmpl::Template::default();
tmpl.add_template("fancy", "{{ . }}");
tmpl.parse(r#"{{ template "fancy" . }}!"#).unwrap();
let output = tmpl.render(&Context::from("Hello World").unwrap());
assert_eq!(&output.unwrap(), "Hello World!");

Trait Implementations

impl Default for Template[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.