summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-28 10:02:15 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-02-28 11:01:06 +0100
commitda620df345c2194100af338412da3ada211e18d6 (patch)
tree5b87be7d41f3bc99d0d58a42f1d88899700b7105
parent4edf5e9e413e5812decdebf5120182320623d4fe (diff)
Make error output in handlebars render error more verbose
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/etc/libimaginteraction/src/format.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/etc/libimaginteraction/src/format.rs b/lib/etc/libimaginteraction/src/format.rs
index e839e85f..a21294ad 100644
--- a/lib/etc/libimaginteraction/src/format.rs
+++ b/lib/etc/libimaginteraction/src/format.rs
@@ -152,9 +152,23 @@ impl HelperDef for StrikethroughHelper {
}
fn param_to_number(idx: usize, h: &Helper) -> Result<u64, RenderError> {
- match *h.param(idx).ok_or_else(|| RenderError::new("Too few arguments"))?.value() {
+ fn typenameof(v: &Value) -> String {
+ match *v {
+ Value::Null => "Null",
+ Value::Bool(_) => "Bool",
+ Value::Number(_) => "Number",
+ Value::String(_) => "String",
+ Value::Array(_) => "Array",
+ Value::Object(_) => "Object",
+ }.to_owned()
+ }
+
+ match h.param(idx).ok_or_else(|| RenderError::new("Too few arguments"))?.value() {
Value::Number(ref num) => num.as_u64().ok_or_else(|| RenderError::new("Number cannot be parsed")),
- _ => Err(RenderError::new("Type error: First argument should be a number")),
+ other => {
+ let msg = format!("Type error: First argument should be a number, but is {} -> {:?}", typenameof(other), serde_json::to_string(other));
+ Err(RenderError::new(msg))
+ },
}
}