use crate::context::Context; use crate::helpers::{HelperDef, HelperResult}; use crate::output::Output; use crate::registry::Registry; use crate::render::{Helper, RenderContext, Renderable}; #[derive(Clone, Copy)] pub struct RawHelper; impl HelperDef for RawHelper { fn call<'reg: 'rc, 'rc>( &self, h: &Helper<'reg, 'rc>, r: &'reg Registry<'reg>, ctx: &'rc Context, rc: &mut RenderContext<'reg, 'rc>, out: &mut dyn Output, ) -> HelperResult { let tpl = h.template(); if let Some(t) = tpl { t.render(r, ctx, rc, out) } else { Ok(()) } } } pub static RAW_HELPER: RawHelper = RawHelper; #[cfg(test)] mod test { use crate::registry::Registry; #[test] fn test_raw_helper() { let mut handlebars = Registry::new(); assert!(handlebars .register_template_string("t0", "a{{{{raw}}}}{{content}}{{else}}hello{{{{/raw}}}}") .is_ok()); let r = handlebars.render("t0", &()); assert_eq!(r.ok().unwrap(), "a{{content}}{{else}}hello"); } }