use the tools from pipeline_data.rs to print true tables

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
This commit is contained in:
amtoine 2023-02-24 10:21:25 +01:00
parent d2633cc59b
commit 005511b424
No known key found for this signature in database
GPG key ID: 37AAE9B486CFF1AB

View file

@ -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())
);
}
}