Initial commit of handlebars helpers library
This commit is contained in:
commit
efd629b243
8
Cargo.toml
Normal file
8
Cargo.toml
Normal 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
25
src/lib.rs
Normal 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));
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user