Skip to content

Commit 5475911

Browse files
committed
Make {{fluent}} and {{fluentparam}} take string inputs
1 parent f3e75c8 commit 5475911

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

src/i18n.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,16 @@ impl HelperDef for I18NHelper {
181181
));
182182
};
183183

184-
let id = if let Some(id) = id.path() {
185-
id
184+
if id.path().is_some() {
185+
return Err(RenderError::new(
186+
"{{fluent}} takes a string parameter with no path",
187+
));
188+
}
189+
190+
let id = if let Json::String(ref s) = *id.value() {
191+
s
186192
} else {
187-
return Err(RenderError::new("{{fluent}} takes an identifier parameter"));
193+
return Err(RenderError::new("{{fluent}} takes a string parameter"));
188194
};
189195

190196
let mut args = if h.hash().is_empty() {
@@ -219,17 +225,25 @@ impl HelperDef for I18NHelper {
219225
block.name
220226
)));
221227
}
228+
222229
let id = if let Some(el) = block.params.get(0) {
223-
if let Parameter::Name(ref s) = *el {
224-
s
230+
if let Parameter::Literal(ref s) = *el {
231+
if let Json::String(ref s) = *s {
232+
s
233+
} else {
234+
return Err(RenderError::new(
235+
"{{fluentparam}} takes a string parameter",
236+
));
237+
}
225238
} else {
226239
return Err(RenderError::new(
227-
"{{fluentparam}} takes an identifier parameter",
240+
"{{fluentparam}} takes a string parameter",
228241
));
229242
}
230243
} else {
231244
return Err(RenderError::new("{{fluentparam}} must have one parameter"));
232245
};
246+
233247
if let Some(ref tpl) = block.template {
234248
let mut s = StringOutput::default();
235249
tpl.render(reg, context, rcx, &mut s)?;

0 commit comments

Comments
 (0)