1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::collections::HashMap;
use error::Result;
use super::Object;
use interpreter;
use interpreter::Renderable;
pub struct Template {
pub(crate) template: interpreter::Template,
pub(crate) filters: HashMap<String, interpreter::BoxedValueFilter>,
}
impl Template {
pub fn render(&self, globals: &Object) -> Result<String> {
let mut data = interpreter::Context::new()
.with_filters(self.filters.clone())
.with_values(globals.clone());
let output = self.template
.render(&mut data)?
.expect("template never returns `None`");
Ok(output)
}
}