Initial commit of handlebars helpers library

This commit is contained in:
Adrian Malacoda 2018-05-21 00:29:33 -05:00
commit efd629b243
2 changed files with 33 additions and 0 deletions

8
Cargo.toml Normal file
View File

@ -0,0 +1,8 @@
[package]
name = "handlebars-helpers"
version = "0.1.0"
authors = ["Adrian Malacoda <adrian.malacoda@monarch-pass.net>"]
[dependencies]
handlebars = "0.32.2"
serde_json = "^1.0.0"

25
src/lib.rs Normal file
View File

@ -0,0 +1,25 @@
extern crate handlebars;
use serde_json::Value;
use handlebars::{Handlebars, Helper, HelperDef, RenderContext, RenderError};
extern crate serde_json;
fn json_format_helper(helper: &Helper, _: &Handlebars, render_context: &mut RenderContext) -> Result<(), RenderError> {
let param = helper.param(0).ok_or(RenderError::new("Param 0 is required for format helper.",),)?;
render_context.writer.write(param.value().to_string().into_bytes().as_ref())?;
Ok(())
}
struct EqHelper;
impl HelperDef for EqHelper {
fn call_inner(&self, helper: &Helper, _: &Handlebars, _: &mut RenderContext) -> Result<Option<Value>, RenderError> {
let param1 = helper.param(0).ok_or(RenderError::new("Param 0 is required for eq helper.",),)?.value();
let param2 = helper.param(1).ok_or(RenderError::new("Param 1 is required for eq helper.",),)?.value();
Ok(Some(Value::Bool(param1 == param2)))
}
}
pub fn register(handle: &mut Handlebars) {
handle.register_helper("JSONstringify", Box::new(json_format_helper));
handle.register_helper("eq", Box::new(EqHelper));
}