nushell/crates/nu-table
Maxim Zhiburt deca337a56
nu-table/ 1 refactoring + a few optimizations + small fix (#15653)
- A few days back I've got this idea regarding recalculus of width.
Now it calculates step by step.
So 1 loop over all data was removed.
All though there's full recalculation in case of `header_on_border`
😞 (can be fixed..... but I decided to be short)

In perfect world it also shall be refactored ......

- Also have done small refactoring to switch build table from
`Vec<Vec<_>>>` to table itself. To hide internals (kind of still there's
things which I don't like).
It touched the `--expand` algorithm lightly you can see the tests
changes.

- And when doing that noticed one more opportunity, to remove HashMap
usage and directly use `tabled::ColoredConfig`. Which reduces copy
operations and allocations.

- And fixed a small issue where trailing column being using deleted
column styles.


![image](https://github.com/user-attachments/assets/19b09dba-c688-4e91-960a-e11ed11fd275)

To conclude optimizations;
I did small testing and it's not slower.
But I didn't get the faster results either.
But I believe it must be faster well in all cases, I think maybe bigger
tables must be tested.
Maybe someone could have a few runs to compare performance.

cc: @fdncred
2025-05-01 09:43:30 -05:00
..
examples nu-table/ 1 refactoring + a few optimizations + small fix (#15653) 2025-05-01 09:43:30 -05:00
src nu-table/ 1 refactoring + a few optimizations + small fix (#15653) 2025-05-01 09:43:30 -05:00
tests nu-table/ 1 refactoring + a few optimizations + small fix (#15653) 2025-05-01 09:43:30 -05:00
.gitignore Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00
Cargo.toml Bump to 0.104.1 dev version (#15669) 2025-04-29 23:33:10 -04:00
LICENSE Fix rest of license year ranges (#8727) 2023-04-04 09:03:29 +12:00
README.md Add top-level crate documentation/READMEs (#12907) 2024-07-14 10:10:41 +02:00

The layout logic for Nushell's table viewer.

See also the separate table command implementation

Internal Nushell crate

This crate implements components of Nushell and is not designed to support plugin authors or other users directly.