|
@ -423,7 +423,9 @@ fn load_templates(path: &str) -> Handlebars { |
|
|
let mut hb = Handlebars::new(); |
|
|
let mut hb = Handlebars::new(); |
|
|
// Error on missing params
|
|
|
// Error on missing params
|
|
|
hb.set_strict_mode(true); |
|
|
hb.set_strict_mode(true); |
|
|
|
|
|
// Register helpers
|
|
|
hb.register_helper("case", Box::new(CaseHelper)); |
|
|
hb.register_helper("case", Box::new(CaseHelper)); |
|
|
|
|
|
hb.register_helper("jsesc", Box::new(JsEscapeHelper)); |
|
|
|
|
|
|
|
|
macro_rules! reg { |
|
|
macro_rules! reg { |
|
|
($name:expr) => {{ |
|
|
($name:expr) => {{ |
|
@ -455,7 +457,6 @@ fn load_templates(path: &str) -> Handlebars { |
|
|
hb |
|
|
hb |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
#[derive(Clone, Copy)] |
|
|
|
|
|
pub struct CaseHelper; |
|
|
pub struct CaseHelper; |
|
|
|
|
|
|
|
|
impl HelperDef for CaseHelper { |
|
|
impl HelperDef for CaseHelper { |
|
@ -479,3 +480,31 @@ impl HelperDef for CaseHelper { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub struct JsEscapeHelper; |
|
|
|
|
|
|
|
|
|
|
|
impl HelperDef for JsEscapeHelper { |
|
|
|
|
|
fn call<'reg: 'rc, 'rc>( |
|
|
|
|
|
&self, |
|
|
|
|
|
h: &Helper<'reg, 'rc>, |
|
|
|
|
|
_: &'reg Handlebars, |
|
|
|
|
|
_: &Context, |
|
|
|
|
|
_: &mut RenderContext<'reg>, |
|
|
|
|
|
out: &mut Output, |
|
|
|
|
|
) -> HelperResult { |
|
|
|
|
|
let param = h |
|
|
|
|
|
.param(0) |
|
|
|
|
|
.ok_or_else(|| RenderError::new("Param not found for helper \"js_escape\""))?; |
|
|
|
|
|
|
|
|
|
|
|
let value = param |
|
|
|
|
|
.value() |
|
|
|
|
|
.as_str() |
|
|
|
|
|
.ok_or_else(|| RenderError::new("Param for helper \"js_escape\" is not a String"))?; |
|
|
|
|
|
|
|
|
|
|
|
let escaped_value = value.replace('\\', "").replace('\'', "\\x22").replace('\"', "\\x27"); |
|
|
|
|
|
let quoted_value = format!(""{}"", escaped_value); |
|
|
|
|
|
|
|
|
|
|
|
out.write("ed_value)?; |
|
|
|
|
|
Ok(()) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|