handlebars/helpers/
helper_raw.rs

1use crate::context::Context;
2use crate::helpers::{HelperDef, HelperResult};
3use crate::output::Output;
4use crate::registry::Registry;
5use crate::render::{Helper, RenderContext, Renderable};
6
7#[derive(Clone, Copy)]
8pub struct RawHelper;
9
10impl HelperDef for RawHelper {
11    fn call<'reg: 'rc, 'rc>(
12        &self,
13        h: &Helper<'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 = h.template();
20        if let Some(t) = tpl {
21            t.render(r, ctx, rc, out)
22        } else {
23            Ok(())
24        }
25    }
26}
27
28pub static RAW_HELPER: RawHelper = RawHelper;
29
30#[cfg(test)]
31mod 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}