From d8e8ffac558d4ea3d42c4fd6df693d21a37772fd Mon Sep 17 00:00:00 2001 From: Adrian Malacoda Date: Sat, 4 Aug 2018 23:59:18 -0500 Subject: [PATCH] Update handlebars to ^1. Remove eq helper and update json-format helper, add test. --- Cargo.toml | 2 +- src/lib.rs | 37 +++++++++++++++++++++++-------------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a094a0b..be01595 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,5 +4,5 @@ version = "0.1.0" authors = ["Adrian Malacoda "] [dependencies] -handlebars = "0.32.2" +handlebars = "^1" serde_json = "^1.0.0" diff --git a/src/lib.rs b/src/lib.rs index 0568b3d..74e91b4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,25 +1,34 @@ extern crate handlebars; -use serde_json::Value; -use handlebars::{Handlebars, Helper, HelperDef, RenderContext, RenderError}; +use handlebars::{Context, Output, Handlebars, Helper, RenderContext, RenderError}; +#[macro_use] extern crate serde_json; -fn json_format_helper(helper: &Helper, _: &Handlebars, render_context: &mut RenderContext) -> Result<(), RenderError> { +fn json_format_helper(helper: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> 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())?; + out.write(¶m.value().to_string())?; Ok(()) } -struct EqHelper; -impl HelperDef for EqHelper { - fn call_inner(&self, helper: &Helper, _: &Handlebars, _: &mut RenderContext) -> Result, 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)); +} + +#[cfg(test)] +mod tests { + use Handlebars; + use register; + + #[test] + fn test_stringify() { + let mut handlebars = Handlebars::new(); + register(&mut handlebars); + + println!("{:?}", handlebars.render_template("FOO: {{JSONstringify foo}}", &json!({ + "foo": { + "bar": 1, + "baz": 2 + } + })).unwrap()); + } }