mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 14:40:06 +02:00
last, skip, drop, take until, take while, skip until, skip while, where, reverse, shuffle, append, prepend and sort-by raise error when given non-lists (#7623)
Closes https://github.com/nushell/nushell/issues/6941
This commit is contained in:
@ -99,7 +99,7 @@ only unwrap the outer list, and leave the variable's contents untouched."#
|
||||
let metadata = input.metadata();
|
||||
|
||||
Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(call.head)?
|
||||
.chain(vec)
|
||||
.into_iter()
|
||||
.into_pipeline_data(engine_state.ctrlc.clone())
|
||||
|
@ -91,7 +91,7 @@ impl Command for Drop {
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
let metadata = input.metadata();
|
||||
let rows: Option<i64> = call.opt(engine_state, stack, 0)?;
|
||||
let v: Vec<_> = input.into_iter().collect();
|
||||
let v: Vec<_> = input.into_iter_strict(call.head)?.collect();
|
||||
let vlen: i64 = v.len() as i64;
|
||||
|
||||
let rows_to_drop = if let Some(quantity) = rows {
|
||||
|
@ -92,7 +92,7 @@ impl Command for Last {
|
||||
|
||||
// only keep last `to_keep` rows in memory
|
||||
let mut buf = VecDeque::<_>::new();
|
||||
for row in input.into_iter() {
|
||||
for row in input.into_iter_strict(call.head)? {
|
||||
if buf.len() == to_keep {
|
||||
buf.pop_front();
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ only unwrap the outer list, and leave the variable's contents untouched."#
|
||||
|
||||
Ok(vec
|
||||
.into_iter()
|
||||
.chain(input)
|
||||
.chain(input.into_iter_strict(call.head)?)
|
||||
.into_iter()
|
||||
.into_pipeline_data(engine_state.ctrlc.clone())
|
||||
.set_metadata(metadata))
|
||||
|
@ -66,13 +66,13 @@ impl Command for Reverse {
|
||||
&self,
|
||||
engine_state: &EngineState,
|
||||
_stack: &mut Stack,
|
||||
_call: &Call,
|
||||
call: &Call,
|
||||
input: PipelineData,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
let metadata = input.metadata();
|
||||
|
||||
#[allow(clippy::needless_collect)]
|
||||
let v: Vec<_> = input.into_iter().collect();
|
||||
let v: Vec<_> = input.into_iter_strict(call.head)?.collect();
|
||||
let iter = v.into_iter().rev();
|
||||
Ok(iter
|
||||
.into_pipeline_data(engine_state.ctrlc.clone())
|
||||
|
@ -31,11 +31,11 @@ impl Command for Shuffle {
|
||||
&self,
|
||||
engine_state: &EngineState,
|
||||
_stack: &mut Stack,
|
||||
_call: &Call,
|
||||
call: &Call,
|
||||
input: PipelineData,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
let metadata = input.metadata();
|
||||
let mut v: Vec<_> = input.into_iter().collect();
|
||||
let mut v: Vec<_> = input.into_iter_strict(call.head)?.collect();
|
||||
v.shuffle(&mut thread_rng());
|
||||
let iter = v.into_iter();
|
||||
Ok(iter
|
||||
|
@ -141,7 +141,7 @@ impl Command for Skip {
|
||||
.set_metadata(metadata))
|
||||
}
|
||||
_ => Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(call.head)?
|
||||
.skip(n)
|
||||
.into_pipeline_data(ctrlc)
|
||||
.set_metadata(metadata)),
|
||||
|
@ -94,7 +94,7 @@ impl Command for SkipUntil {
|
||||
let redirect_stderr = call.redirect_stderr;
|
||||
|
||||
Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(span)?
|
||||
.skip_while(move |value| {
|
||||
if let Some(var_id) = var_id {
|
||||
stack.add_var(var_id, value.clone());
|
||||
|
@ -95,7 +95,7 @@ impl Command for SkipWhile {
|
||||
let redirect_stderr = call.redirect_stderr;
|
||||
|
||||
Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(span)?
|
||||
.skip_while(move |value| {
|
||||
if let Some(var_id) = var_id {
|
||||
stack.add_var(var_id, value.clone());
|
||||
|
@ -84,7 +84,7 @@ impl Command for SortBy {
|
||||
let insensitive = call.has_flag("ignore-case");
|
||||
let natural = call.has_flag("natural");
|
||||
let metadata = &input.metadata();
|
||||
let mut vec: Vec<_> = input.into_iter().collect();
|
||||
let mut vec: Vec<_> = input.into_iter_strict(call.head)?.collect();
|
||||
|
||||
if columns.is_empty() {
|
||||
return Err(ShellError::MissingParameter("columns".into(), call.head));
|
||||
|
@ -90,7 +90,7 @@ impl Command for TakeUntil {
|
||||
let redirect_stderr = call.redirect_stderr;
|
||||
|
||||
Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(span)?
|
||||
.take_while(move |value| {
|
||||
if let Some(var_id) = var_id {
|
||||
stack.add_var(var_id, value.clone());
|
||||
|
@ -90,7 +90,7 @@ impl Command for TakeWhile {
|
||||
let redirect_stderr = call.redirect_stderr;
|
||||
|
||||
Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(span)?
|
||||
.take_while(move |value| {
|
||||
if let Some(var_id) = var_id {
|
||||
stack.add_var(var_id, value.clone());
|
||||
|
@ -84,7 +84,7 @@ not supported."#
|
||||
let redirect_stdout = call.redirect_stdout;
|
||||
let redirect_stderr = call.redirect_stderr;
|
||||
Ok(input
|
||||
.into_iter()
|
||||
.into_iter_strict(span)?
|
||||
.enumerate()
|
||||
.filter_map(move |(idx, value)| {
|
||||
stack.with_env(&orig_env_vars, &orig_env_hidden);
|
||||
|
Reference in New Issue
Block a user