1 | use crate::context::Context; |
2 | use crate::helpers::{HelperDef, HelperResult}; |
3 | use crate::output::Output; |
4 | use crate::registry::Registry; |
5 | use crate::render::{Helper, RenderContext, Renderable}; |
6 | |
7 | #[derive (Clone, Copy)] |
8 | pub struct RawHelper; |
9 | |
10 | impl HelperDef for RawHelper { |
11 | fn call<'reg: 'rc, 'rc>( |
12 | &self, |
13 | h: &Helper<'reg, 'rc>, |
14 | r: &'reg Registry<'reg>, |
15 | ctx: &'rc Context, |
16 | rc: &mut RenderContext<'reg, 'rc>, |
17 | out: &mut dyn Output, |
18 | ) -> HelperResult { |
19 | let tpl: Option<&Template> = h.template(); |
20 | if let Some(t: &Template) = tpl { |
21 | t.render(registry:r, context:ctx, rc, out) |
22 | } else { |
23 | Ok(()) |
24 | } |
25 | } |
26 | } |
27 | |
28 | pub static RAW_HELPER: RawHelper = RawHelper; |
29 | |
30 | #[cfg (test)] |
31 | mod test { |
32 | use crate::registry::Registry; |
33 | |
34 | #[test ] |
35 | fn test_raw_helper() { |
36 | let mut handlebars = Registry::new(); |
37 | assert!(handlebars |
38 | .register_template_string("t0" , "a{{{{raw}}}}{{content}}{{else}}hello{{{{/raw}}}}" ) |
39 | .is_ok()); |
40 | |
41 | let r = handlebars.render("t0" , &()); |
42 | assert_eq!(r.ok().unwrap(), "a{{content}}{{else}}hello" ); |
43 | } |
44 | } |
45 | |