diff --git a/Cargo.lock b/Cargo.lock index 209cd68..8e220cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -936,7 +936,7 @@ dependencies = [ "gettext-utils", "glob", "hagrid-database", - "handlebars 1.1.0", + "handlebars", "hyperx", "lazy_static", "lettre", @@ -1014,23 +1014,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "handlebars" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82e5750d8027a97b9640e3fefa66bbaf852a35228e1c90790efd13c4b09c166" -dependencies = [ - "lazy_static", - "log 0.4.14", - "pest", - "pest_derive", - "quick-error 1.2.3", - "regex", - "serde", - "serde_json", - "walkdir", -] - [[package]] name = "handlebars" version = "3.5.5" @@ -2475,7 +2458,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c83f1287ad8fa034410928297a91db37518d5c46d7cc7e1e1b4a77aec0cd8807" dependencies = [ "glob", - "handlebars 3.5.5", + "handlebars", "normpath", "notify", "rocket", diff --git a/Cargo.toml b/Cargo.toml index 1666c11..cb4031b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ time = "0.1" tempfile = "3.0" structopt = "0.2" url = "1.6" -handlebars = "1.1.0" +handlebars = "3" num_cpus = "1.0" ring = "0.13" base64 = "0.10" diff --git a/src/i18n.rs b/src/i18n.rs index 7501efd..996cbd7 100644 --- a/src/i18n.rs +++ b/src/i18n.rs @@ -56,7 +56,7 @@ impl HelperDef for I18NHelper { h: &Helper<'reg, 'rc>, reg: &'reg Handlebars, context: &'rc Context, - rcx: &mut RenderContext<'reg>, + rcx: &mut RenderContext<'reg, '_>, out: &mut dyn Output, ) -> HelperResult { let id = if let Some(id) = h.param(0) { @@ -76,7 +76,7 @@ impl HelperDef for I18NHelper { let rerender = h .param(1) .and_then(|p| p - .path() + .relative_path() .map(|v| v == "rerender") ).unwrap_or(false); @@ -87,14 +87,20 @@ impl HelperDef for I18NHelper { .as_str() .expect("Language must be string"); + fn render_error_with(e: E) -> RenderError + where + E: std::error::Error + Send + Sync + 'static + { + RenderError::from_error("Failed to render", e) + } let response = self.lookup(lang, &id); if rerender { - let data = rcx.evaluate(context, ".", false).unwrap(); - let response = reg.render_template(&response, data) - .map_err(RenderError::with)?; - out.write(&response).map_err(RenderError::with)?; + let data = rcx.evaluate(context, "this").unwrap(); + let response = reg.render_template(&response, data.as_json()) + .map_err(render_error_with)?; + out.write(&response).map_err(render_error_with)?; } else { - out.write(&response).map_err(RenderError::with)?; + out.write(&response).map_err(render_error_with)?; } Ok(()) } diff --git a/src/mail.rs b/src/mail.rs index 7eae053..654cd09 100644 --- a/src/mail.rs +++ b/src/mail.rs @@ -52,7 +52,7 @@ mod context { pub struct Service { from: Mailbox, domain: String, - templates: Handlebars, + templates: Handlebars<'static>, transport: Transport, } diff --git a/src/template_helpers.rs b/src/template_helpers.rs index 22d6ccc..c3ce6bd 100644 --- a/src/template_helpers.rs +++ b/src/template_helpers.rs @@ -48,7 +48,7 @@ fn load_localized_template_names(template_path: &Path, localized_dir: &str) -> R .collect() } -pub fn load_handlebars(template_dir: &Path) -> Result { +pub fn load_handlebars(template_dir: &Path) -> Result> { let mut handlebars = Handlebars::new(); let i18ns = include_i18n!();