Skip to content

Commit 3103b07

Browse files
authored
Merge pull request #1971 from rust-lang/remo/quqswvxktukm
Update to handlebars v5
2 parents a3fae35 + 2c7dfee commit 3103b07

File tree

5 files changed

+77
-52
lines changed

5 files changed

+77
-52
lines changed

Cargo.lock

Lines changed: 32 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@ edition = "2018"
77
[dependencies]
88
lazy_static = "1.2.0"
99
fluent = "0.16"
10-
fluent-bundle = "0.11.0"
10+
fluent-bundle = "0.15.0"
1111
fluent-syntax = "0.11.0"
1212
fluent-locale = "0.10.1"
13-
handlebars-fluent = "0.3.1"
13+
handlebars-fluent = "0.4.0"
1414
rand = "0.8"
1515
regex = "1"
16-
rocket = "0.5.0"
17-
rocket_dyn_templates = { version = "0.1.0", features = ["handlebars"] }
16+
rocket = "0.5.1"
17+
rocket_dyn_templates = { version = "0.2.0", features = ["handlebars"] }
1818
serde = { version = "1.0", features = ["derive"] }
1919
serde_yaml = "0.8.17"
2020
sass-rs = "0.2.1"
2121
reqwest = { version = "0.11.4", features = ["json"] }
2222
toml = "0.5"
2323
serde_json = "1.0"
2424
rust_team_data = { git = "https://github.com/rust-lang/team" }
25-
handlebars = "4.3.0"
25+
handlebars = "5.1.0"
2626
siphasher = "0.3.6"
2727
percent-encoding = "2.1.0"

src/i18n.rs

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use handlebars::{
2-
Context, Handlebars, Helper, HelperDef, HelperResult, Output, RenderContext, RenderError,
2+
Context, Handlebars, Helper, HelperDef, HelperResult, Output, RenderContext, RenderErrorReason,
33
};
44

55
use rocket::request::FromParam;
@@ -149,55 +149,64 @@ impl TeamHelperParam {
149149
impl HelperDef for TeamHelper {
150150
fn call<'reg: 'rc, 'rc>(
151151
&self,
152-
h: &Helper<'reg, 'rc>,
152+
h: &Helper<'rc>,
153153
_: &'reg Handlebars,
154154
context: &'rc Context,
155155
rcx: &mut RenderContext<'reg, 'rc>,
156156
out: &mut dyn Output,
157157
) -> HelperResult {
158158
let Some(name) = h.param(0) else {
159-
return Err(RenderError::new(
159+
return Err(RenderErrorReason::ParamNotFoundForIndex(
160160
"{{team-text}} must have at least two parameters",
161-
));
161+
0,
162+
)
163+
.into());
162164
};
163165
let Some(name) = name.relative_path() else {
164-
return Err(RenderError::new(
166+
return Err(RenderErrorReason::InvalidParamType(
165167
"{{team-text}} takes only identifier parameters",
166-
));
168+
)
169+
.into());
167170
};
168171

169172
let Some(id) = h.param(1) else {
170-
return Err(RenderError::new(
173+
return Err(RenderErrorReason::ParamNotFoundForIndex(
171174
"{{team-text}} must have at least two parameters",
172-
));
175+
1,
176+
)
177+
.into());
173178
};
174179
let Some(id) = id.relative_path() else {
175-
return Err(RenderError::new(
180+
return Err(RenderErrorReason::InvalidParamType(
176181
"{{team-text}} takes only identifier parameters",
177-
));
182+
)
183+
.into());
178184
};
179185

180186
let param = match id.as_str() {
181187
"name" => TeamHelperParam::Name,
182188
"description" => TeamHelperParam::Description,
183189
"role" => {
184190
let Some(role_id) = h.param(2) else {
185-
return Err(RenderError::new(
191+
return Err(RenderErrorReason::ParamNotFoundForIndex(
186192
"{{team-text}} requires a third parameter for the role id",
187-
));
193+
2,
194+
)
195+
.into());
188196
};
189197
TeamHelperParam::Role(role_id.value().as_str().unwrap().to_owned())
190198
}
191199
unrecognized => {
192-
return Err(RenderError::new(format!(
200+
return Err(RenderErrorReason::Other(format!(
193201
"unrecognized {{{{team-text}}}} param {unrecognized:?}",
194-
)));
202+
))
203+
.into());
195204
}
196205
};
197206

198207
let team = rcx
199208
.evaluate(context, name)
200-
.map_err(|e| RenderError::from_error(&format!("Cannot find team {}", name), e))?;
209+
.map_err(|e| RenderErrorReason::NestedError(Box::new(e)))?;
201210
let lang = context
202211
.data()
203212
.get("lang")
@@ -210,18 +219,18 @@ impl HelperDef for TeamHelper {
210219
if lang == "en-US" {
211220
let english = param.english(team.as_json());
212221
out.write(english)
213-
.map_err(|e| RenderError::from_error("failed to render English team data", e))?;
222+
.map_err(|e| RenderErrorReason::NestedError(Box::new(e)))?;
214223
} else if let Some(value) = self.i18n.lookup_no_default_fallback(
215224
&lang.parse().expect("language must be valid"),
216225
&param.fluent_id(team_name),
217226
None,
218227
) {
219228
out.write(&value)
220-
.map_err(|e| RenderError::from_error("failed to render translated team data", e))?;
229+
.map_err(|e| RenderErrorReason::NestedError(Box::new(e)))?;
221230
} else {
222231
let english = param.english(team.as_json());
223232
out.write(english)
224-
.map_err(|e| RenderError::from_error("failed to render", e))?;
233+
.map_err(|e| RenderErrorReason::NestedError(Box::new(e)))?;
225234
}
226235
Ok(())
227236
}

src/teams.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use handlebars::{Context, Handlebars, Helper, HelperResult, Output, RenderContext, RenderError};
1+
use handlebars::{
2+
Context, Handlebars, Helper, HelperResult, Output, RenderContext, RenderErrorReason,
3+
};
24
use percent_encoding::{utf8_percent_encode, AsciiSet, NON_ALPHANUMERIC};
35
use rust_team_data::v1::{Team, TeamKind, Teams, BASE_URL};
46
use std::cmp::Reverse;
@@ -212,16 +214,21 @@ pub fn encode_zulip_stream(
212214
let zulip_stream = if let Some(p) = h.param(0) {
213215
p.value()
214216
} else {
215-
return Err(RenderError::new(
217+
return Err(RenderErrorReason::ParamNotFoundForIndex(
216218
"{{encode-zulip-stream takes 1 parameter}}",
217-
));
219+
0,
220+
)
221+
.into());
218222
};
219223
let zulip_stream = if let Some(s) = zulip_stream.as_str() {
220224
s
221225
} else {
222-
return Err(RenderError::new(
223-
"{{encode-zulip-stream takes a string parameter}}",
224-
));
226+
return Err(RenderErrorReason::ParamTypeMismatchForName(
227+
"encode-zulip-stream",
228+
"0".into(),
229+
"string".into(),
230+
)
231+
.into());
225232
};
226233

227234
// https://github.com/zulip/zulip/blob/159641bab8c248f5b72a4e736462fb0b48e7fa24/static/js/hash_util.js#L20-L25

templates/learn/get-started.html.hbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,5 @@ fn main() {
137137
src="/static/images/ferris.gif" />
138138
</div>
139139
</section>
140-
{{> components/tools/install-script }}
141140
{{/inline}}
142141
{{~> (lookup this "parent")~}}

0 commit comments

Comments
 (0)