From 005511b424e4f66130b533b67cc23772e3780607 Mon Sep 17 00:00:00 2001 From: amtoine Date: Fri, 24 Feb 2023 10:21:25 +0100 Subject: [PATCH] use the tools from `pipeline_data.rs` to print true tables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit uses the construct from `PipelineData::print` to - get the "declaration ID" of the `table` command - execute that command on the example outputs Then we use the construct from `PipelineData::write_all_and_flush` to - iterate over all the items of the table - print them in a pretty way .# Example output ```nushell > help merge ... Add an 'index' column to the input table > [a b c] | wrap name | merge ( [1 2 3] | wrap index ) ╭───┬──────╮ │ # │ name │ ├───┼──────┤ │ 1 │ a │ │ 2 │ b │ │ 3 │ c │ ╰───┴──────╯ ``` .## Limitations - the format is not perfect for now - the use of private method bodies from `PipelineData` is not ideal --- crates/nu-engine/src/documentation.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/nu-engine/src/documentation.rs b/crates/nu-engine/src/documentation.rs index fb9a8c3fd5..f06e225144 100644 --- a/crates/nu-engine/src/documentation.rs +++ b/crates/nu-engine/src/documentation.rs @@ -213,11 +213,22 @@ fn get_documentation( match &example.result { Some(result) => { - for item in PipelineData::Value(result.clone(), None) { + let decl_id = engine_state.find_decl("table".as_bytes(), &[]).unwrap(); + let table = engine_state + .get_decl(decl_id) + .run( + engine_state, + stack, + &Call::new(Span::new(0, 0)), + PipelineData::Value(result.clone(), None), + ) + .unwrap(); + + for item in table { let _ = write!( long_desc, - "{}\n", - item.into_string("\n", engine_state.get_config()) + " {}\n", + item.into_string("\n ", engine_state.get_config()) ); } }