From 3b99ce71a07993e220a874243b29c412c6d28b50 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 6 Sep 2021 16:16:32 +1200 Subject: [PATCH] add simple value iteration --- crates/nu-command/src/each.rs | 17 ++++++++++++++++- src/tests.rs | 5 +++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/crates/nu-command/src/each.rs b/crates/nu-command/src/each.rs index fbb24506d..10d04e3c4 100644 --- a/crates/nu-command/src/each.rs +++ b/crates/nu-command/src/each.rs @@ -95,7 +95,22 @@ impl Command for Each { .into_value_stream(), span: call.head, }), - _ => Ok(Value::nothing()), + Value::RowStream { .. } => panic!("iterating row streams is not yet supported"), + Value::Table { .. } => panic!("table iteration not yet supported"), + x => { + //TODO: we need to watch to make sure this is okay + let engine_state = context.engine_state.borrow(); + let block = engine_state.get_block(block_id); + + let state = context.enter_scope(); + if let Some(var) = block.signature.required_positional.first() { + if let Some(var_id) = &var.var_id { + state.add_var(*var_id, x); + } + } + + eval_block(&state, block, Value::nothing()) + } } } } diff --git a/src/tests.rs b/src/tests.rs index 13b1aa2a9..c7ed9041b 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -223,3 +223,8 @@ fn range_iteration1() -> TestResult { fn range_iteration2() -> TestResult { run_test("4..1 | each { |y| $y + 100 }", "[104, 103, 102, 101]") } + +#[test] +fn simple_value_iteration() -> TestResult { + run_test("4 | each { $it + 10 }", "14") +}