diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 10:02:15 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 11:01:06 +0100 |
commit | da620df345c2194100af338412da3ada211e18d6 (patch) | |
tree | 5b87be7d41f3bc99d0d58a42f1d88899700b7105 | |
parent | 4edf5e9e413e5812decdebf5120182320623d4fe (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.rs | 18 |
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)) + }, } } |