blob: 59ade4b339ec197bb0cbc6426ab8144e26130144 [file] [log] [blame]
use handlebars::*;
fn ifcond<'reg, 'rc>(
h: &Helper<'rc>,
handle: &'reg Handlebars,
ctx: &'rc Context,
render_ctx: &mut RenderContext<'reg, 'rc>,
out: &mut dyn Output,
) -> Result<(), RenderError> {
let cond = h.param(0).and_then(|ref v| v.value().as_bool()).ok_or(
RenderErrorReason::ParamTypeMismatchForName("ifcond", "0".to_owned(), "bool".to_owned()),
)? as bool;
let temp = if cond { h.template() } else { h.inverse() };
match temp {
Some(t) => t.render(handle, ctx, render_ctx, out),
None => Ok(()),
}
}
#[test]
fn test_helper() {
let mut handlebars = Handlebars::new();
// register some custom helpers
handlebars.register_helper("ifcond", Box::new(ifcond));
// make data and render it
let data = true;
assert_eq!(
"yes",
handlebars
.render_template("{{#ifcond this}}yes{{/ifcond}}", &data)
.unwrap()
);
}