blob: 55aef6bfcaebfc32a251d0da9e65ae7ae8fc3f5e [file] [log] [blame]
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");
}
}