summaryrefslogtreecommitdiffstats
path: root/vendor/handlebars/tests/helper_function_lifetime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/handlebars/tests/helper_function_lifetime.rs')
-rw-r--r--vendor/handlebars/tests/helper_function_lifetime.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/handlebars/tests/helper_function_lifetime.rs b/vendor/handlebars/tests/helper_function_lifetime.rs
new file mode 100644
index 000000000..fd21f3004
--- /dev/null
+++ b/vendor/handlebars/tests/helper_function_lifetime.rs
@@ -0,0 +1,36 @@
+use handlebars::*;
+
+fn ifcond<'reg, 'rc>(
+ h: &Helper<'reg, '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(RenderError::new("Ifcond takes a boolean !"))? 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()
+ );
+}