Trait handlebars::HelperDef
[−]
[src]
pub trait HelperDef: Send + Sync { fn call_inner(
&self,
_: &Helper,
_: &Registry,
_: &mut RenderContext
) -> Result<Option<Json>, RenderError> { ... } fn call(
&self,
h: &Helper,
r: &Registry,
rc: &mut RenderContext,
out: &mut Output
) -> HelperResult { ... } }
Helper Definition
Implement HelperDef
to create custom helper. You can retrieve useful information from these arguments.
&Helper
: current helper template information, contains name, params, hashes and nested template&Registry
: the global registry, you can find templates by name from registry&mut RenderContext
: you can access data or modify variables (starts with @)/patials in render context, for example, @index of #each. See its document for detail.
By default, you can use bare function as helper definition because we have supported unboxed_closure. If you have stateful or configurable helper, you can create a struct to implement HelperDef
.
Define an inline helper
use handlebars::*; fn upper(h: &Helper, _: &Handlebars, rc: &mut RenderContext, out: &mut Output) -> HelperResult { // get parameter from helper or throw an error let param = h.param(0).and_then(|v| v.value().as_str()).unwrap_or(""); out.write(param.to_uppercase().as_ref())?; Ok(()) }
Define block helper
Block helper is like #if
or #each
which has a inner template and an optional inverse template (the template in else branch). You can access the inner template by helper.template()
and helper.inverse()
. In most case you will just call render
on it.
use handlebars::*; fn dummy_block(h: &Helper, r: &Handlebars, rc: &mut RenderContext, out: &mut Output) -> HelperResult { h.template().map(|t| t.render(r, rc, out)).unwrap_or(Ok(())) }
Provided Methods
fn call_inner(
&self,
_: &Helper,
_: &Registry,
_: &mut RenderContext
) -> Result<Option<Json>, RenderError>
&self,
_: &Helper,
_: &Registry,
_: &mut RenderContext
) -> Result<Option<Json>, RenderError>
fn call(
&self,
h: &Helper,
r: &Registry,
rc: &mut RenderContext,
out: &mut Output
) -> HelperResult
&self,
h: &Helper,
r: &Registry,
rc: &mut RenderContext,
out: &mut Output
) -> HelperResult
Implementors
impl<F: Send + Sync + for<'b, 'c, 'd, 'e> Fn(&'b Helper, &'c Registry, &'d mut RenderContext, &'e mut Output) -> HelperResult> HelperDef for F