diff options
author | Philipp Korber <philippkorber@gmail.com> | 2018-11-22 17:47:08 +0100 |
---|---|---|
committer | Philipp Korber <philippkorber@gmail.com> | 2018-11-22 17:47:08 +0100 |
commit | 3556b4a5cc50b1ed8c542eac148b39d80f8b1589 (patch) | |
tree | 90fc8965dcaec3ad22f65e8f7ab7010aebedc79e | |
parent | 8d83d551fb8e682e81706ad84124e079adac59e8 (diff) |
fix(handlebars) uncommented module/fixed compiler errors
-rw-r--r-- | template/src/handlebars.rs | 35 | ||||
-rw-r--r-- | template/src/lib.rs | 7 |
2 files changed, 22 insertions, 20 deletions
diff --git a/template/src/handlebars.rs b/template/src/handlebars.rs index 887dce1..2d06a31 100644 --- a/template/src/handlebars.rs +++ b/template/src/handlebars.rs @@ -1,6 +1,5 @@ use hbs; -use serde::{Serialize, Deserialize}; -use galemu::{Bound, BoundExt, create_gal_wrapper_type, Ref}; +use serde::Serialize; use failure::Error; @@ -8,10 +7,7 @@ use super::{ TemplateEngine, TemplateEngineCanHandleData, BodyTemplate, - PreparationData, AdditionalCIds, - PathRebaseable, - UnsupportedPathError, serde_impl }; @@ -38,38 +34,42 @@ impl TemplateEngine for Handlebars { fn load_body_template(&mut self, tmpl: Self::LazyBodyTemplate) -> Result<BodyTemplate<Self>, Error> { - let StandardLazyBodyTemplate { + let serde_impl::StandardLazyBodyTemplate { path, embeddings, media_type } = tmpl; let name = self.next_body_template_name(); - self.inner.register_template_file(name, path)?; + self.inner.register_template_file(&name, &path)?; + + const ERR_BAD_MEDIA_TYPE_DETECTION: &str = + "handlebars requires html/txt file extension or media type given in template spec"; let media_type = if let Some(media_type) = media_type { media_type - } else if let Some(extension) = path.extension().and_then(|osstr| osstr.as_str()) { + } else if let Some(extension) = path.extension().and_then(|osstr| osstr.to_str()) { match extension { "html" => "text/html; charset=utf-8".parse().unwrap(), - "txt" => "text/plain; charset=utf-8".parse().unwrap() + "txt" => "text/plain; charset=utf-8".parse().unwrap(), + _ => { return Err(failure::err_msg(ERR_BAD_MEDIA_TYPE_DETECTION)); } } } else { - return Err(failure::err_msg( - "handlebars requires html/txt file extension or media type given in template spec" - )); + return Err(failure::err_msg(ERR_BAD_MEDIA_TYPE_DETECTION)); }; Ok(BodyTemplate { template_id: name, - media_type: TODO, - inline_embeddings: Default::default(), + media_type, + inline_embeddings: embeddings, }) } fn load_subject_template(&mut self, template_string: String) -> Result<Self::Id, Error> { - Ok(self.inner.register_template_string("subject".to_owned(), template_string)?) + let id = "subject".to_owned(); + self.inner.register_template_string(&id, template_string)?; + Ok(id) } } @@ -86,11 +86,12 @@ impl<D> TemplateEngineCanHandleData<D> for Handlebars data: &'r D, additional_cids: AdditionalCIds<'r> ) -> Result<String, Error> { - Ok(self.inner.render(id, SerHelper { data, cids: additional_cid })?) + Ok(self.inner.render(id, &SerHelper { data, cids: additional_cids })?) } } -struct SerHelper<'r, D> { +#[derive(Serialize)] +struct SerHelper<'r, D: 'r> { data: &'r D, cids: AdditionalCIds<'r> }
\ No newline at end of file diff --git a/template/src/lib.rs b/template/src/lib.rs index b889213..09aea12 100644 --- a/template/src/lib.rs +++ b/template/src/lib.rs @@ -46,13 +46,14 @@ use mail_headers::{ headers }; -pub mod serde_impl; mod base_dir; mod path_rebase; mod additional_cid; +pub mod serde_impl; +pub mod error; -// #[cfg(feature="handlebars")] -// pub mod handlebars; +#[cfg(feature="handlebars")] +pub mod handlebars; pub use self::base_dir::*; pub use self::path_rebase::*; |