diff --git a/crates/nu-command/src/math/abs.rs b/crates/nu-command/src/math/abs.rs index 2bf717a67..535953054 100644 --- a/crates/nu-command/src/math/abs.rs +++ b/crates/nu-command/src/math/abs.rs @@ -17,33 +17,36 @@ impl Command for SubCommand { "Returns absolute values of a list of numbers" } - fn run(&self, context: &EvaluationContext, call: &Call, input: Value) -> Result { - let mapped = input.map(move |val| match val.value { + fn run(&self, _context: &EvaluationContext, call: &Call, input: Value) -> Result { + let head = call.head; + input.map(head, move |val| match val { Value::Int { val, span } => Value::int(val.abs(), span), Value::Float { val, span } => Value::Float{val: val.abs(), span: span}, Value::Duration { val, span } => Value::Duration{val: val.abs(), span: span}, - other => abs_default(other)?, - }); - Ok(mapped) + other => abs_default(other, head), + }) } fn examples(&self) -> Vec { vec![Example { description: "Get absolute of each value in a list of numbers", example: "echo [-50 25] | math abs", - result: Some(vec![ - Value::test_int(50), - Value::test_int(25), - ]), + result: Some(Value:: List { + vals: vec![ + Value::test_int(50), + Value::test_int(25), + ], + span: Span::unknown(), + }), }] } } -fn abs_default(_: Value) -> Result { - Value::Error(ShellError::unexpected( - "Only numerical values are supported", - )) - .into() +fn abs_default(_: Value, head: Span) -> Value { + Value::Error {error: ShellError::UnsupportedInput( + String::from("Only numerical values are supported"), + head + )} } #[cfg(test)] diff --git a/crates/nu-command/src/math/mod.rs b/crates/nu-command/src/math/mod.rs index ea889f5db..88e1bccde 100644 --- a/crates/nu-command/src/math/mod.rs +++ b/crates/nu-command/src/math/mod.rs @@ -1,3 +1,3 @@ -pub mod abs; +mod abs; pub use abs::SubCommand as MathAbs;