web: port to handlebars 3, the version used in rocket's dyn templates
This commit is contained in:
parent
b97a06f51c
commit
fec0cc4852
|
@ -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",
|
||||
|
|
|
@ -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"
|
||||
|
|
20
src/i18n.rs
20
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: 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(())
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ mod context {
|
|||
pub struct Service {
|
||||
from: Mailbox,
|
||||
domain: String,
|
||||
templates: Handlebars,
|
||||
templates: Handlebars<'static>,
|
||||
transport: Transport,
|
||||
}
|
||||
|
||||
|
|
|
@ -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<Handlebars> {
|
||||
pub fn load_handlebars(template_dir: &Path) -> Result<Handlebars<'static>> {
|
||||
let mut handlebars = Handlebars::new();
|
||||
|
||||
let i18ns = include_i18n!();
|
||||
|
|
Loading…
Reference in New Issue