mirror of
https://github.com/nushell/nushell.git
synced 2025-08-19 13:11:15 +02:00
add reverse
This commit is contained in:
38
src/commands/reverse.rs
Normal file
38
src/commands/reverse.rs
Normal file
@@ -0,0 +1,38 @@
|
||||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::parser::CommandRegistry;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub struct Reverse;
|
||||
|
||||
impl WholeStreamCommand for Reverse {
|
||||
fn run(
|
||||
&self,
|
||||
args: CommandArgs,
|
||||
registry: &CommandRegistry,
|
||||
) -> Result<OutputStream, ShellError> {
|
||||
reverse(args, registry)
|
||||
}
|
||||
|
||||
fn name(&self) -> &str {
|
||||
"reverse"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("reverse")
|
||||
}
|
||||
}
|
||||
|
||||
fn reverse(args: CommandArgs, registry: &CommandRegistry) -> Result<OutputStream, ShellError> {
|
||||
let args = args.evaluate_once(registry)?;
|
||||
let (input, _args) = args.parts();
|
||||
|
||||
let output = input.values.collect::<Vec<_>>();
|
||||
|
||||
let output = output.map(move |mut vec| {
|
||||
vec.reverse();
|
||||
vec.into_iter().collect::<VecDeque<_>>()
|
||||
});
|
||||
|
||||
Ok(output.flatten_stream().from_input_stream())
|
||||
}
|
Reference in New Issue
Block a user