Files
Rocketmc/src/helpers/contains.rs
2020-05-27 20:51:28 +02:00

36 lines
968 B
Rust

use handlebars::*;
#[derive(Clone, Copy)]
pub struct ContainsHelper;
impl HelperDef for ContainsHelper {
fn call<'reg: 'rc, 'rc>(
&self,
h: &Helper<'reg, 'rc>,
r: &'reg Handlebars<'_>,
ctx: &'rc Context,
rc: &mut RenderContext<'reg, 'rc>,
out: &mut dyn Output,
) -> HelperResult {
let array = h
.param(0)
.map(|v| serde_json::from_value::<Vec<String>>(v.value().clone()).unwrap())
.ok_or_else(|| RenderError::new("Parameter not found!"))?;
let value = h
.param(1)
.map(|v| v.value().as_str().unwrap())
.ok_or_else(|| RenderError::new("Parameter not found!"))?;
let tmpl = if array.contains(&String::from(value)) {
h.template()
} else {
h.inverse()
};
match tmpl {
Some(ref t) => t.render(r, ctx, rc, out),
None => Ok(()),
}
}
}