use crate::commands::WholeStreamCommand; use crate::data::Value; use crate::errors::ShellError; use crate::prelude::*; pub struct Trim; impl WholeStreamCommand for Trim { fn name(&self) -> &str { "trim" } fn signature(&self) -> Signature { Signature::build("trim") } fn usage(&self) -> &str { "Trim leading and following whitespace from text data." } fn run( &self, args: CommandArgs, registry: &CommandRegistry, ) -> Result { trim(args, registry) } } fn trim(args: CommandArgs, _registry: &CommandRegistry) -> Result { let input = args.input; Ok(input .values .map(move |v| { let string = String::extract(&v)?; ReturnSuccess::value(Value::string(string.trim()).tagged(v.tag())) }) .to_output_stream()) }