summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Korber <philippkorber@gmail.com>2018-11-22 17:47:08 +0100
committerPhilipp Korber <philippkorber@gmail.com>2018-11-22 17:47:08 +0100
commit3556b4a5cc50b1ed8c542eac148b39d80f8b1589 (patch)
tree90fc8965dcaec3ad22f65e8f7ab7010aebedc79e
parent8d83d551fb8e682e81706ad84124e079adac59e8 (diff)
fix(handlebars) uncommented module/fixed compiler errors
-rw-r--r--template/src/handlebars.rs35
-rw-r--r--template/src/lib.rs7
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::*;