Macro handlebars::handlebars_helper[][src]

macro_rules! handlebars_helper {
    ($struct_name : ident : | $($name : ident : $tpe : tt), *
 $($(,) ? { $($hash_name : ident : $hash_tpe : tt = $dft_val : literal), * })
 ? $($(,) ? * $args : ident) ? $($(,) ? * * $kwargs : ident) ? | $body : expr) => { ... };
    (@ as_json_value $x : ident, object) => { ... };
    (@ as_json_value $x : ident, array) => { ... };
    (@ as_json_value $x : ident, str) => { ... };
    (@ as_json_value $x : ident, i64) => { ... };
    (@ as_json_value $x : ident, u64) => { ... };
    (@ as_json_value $x : ident, f64) => { ... };
    (@ as_json_value $x : ident, bool) => { ... };
    (@ as_json_value $x : ident, null) => { ... };
    (@ as_json_value $x : ident, Json) => { ... };
}
Expand description

Macro that allows you to quickly define a handlebars helper by passing a name and a closure.

There are several types of arguments available to closure:

  • Parameters are mapped to closure arguments one by one. Any declared parameters are required
  • Hash are mapped as named arguments and declared in a bracket block. All named arguments are optional so default value is required.
  • An optional *args provides a vector of all helper parameters.
  • An optional **kwargs provides a map of all helper hash.

Examples

#[macro_use] extern crate handlebars;
#[macro_use] extern crate serde_json;

handlebars_helper!(is_above_10: |x: u64| x > 10);
handlebars_helper!(is_above: |x: u64, { compare: u64 = 10 }| x > compare);

let mut handlebars = handlebars::Handlebars::new();
handlebars.register_helper("is-above-10", Box::new(is_above_10));
handlebars.register_helper("is-above", Box::new(is_above));

let result = handlebars
    .render_template("{{#if (is-above-10 12)}}great!{{else}}okay{{/if}}", &json!({}))
    .unwrap();
 assert_eq!(&result, "great!");
let result2 = handlebars
    .render_template("{{#if (is-above 12 compare=10)}}great!{{else}}okay{{/if}}", &json!({}))
    .unwrap();
 assert_eq!(&result2, "great!");