mirror of
https://github.com/nushell/nushell
synced 2025-01-02 16:29:00 +00:00
803826cdcd
Also for 180 degree is expected. Rotation is not exactly like pivoting (transposing) for instance, given the following table: ``` > echo [[col1, col2, col3]; [cell1, cell2, cell3] [cell4, cell5, cell6]] ───┬───────┬───────┬─────── # │ col1 │ col2 │ col3 ───┼───────┼───────┼─────── 0 │ cell1 │ cell2 │ cell3 1 │ cell4 │ cell5 │ cell6 ───┴───────┴───────┴─────── ``` To rotate it counter clockwise by 90 degrees, we can resort to first transposing (`pivot`) them adding a new column (preferably integers), sort by that column from highest to lowest, then remove the column and we have a counter clockwise rotation. ``` > echo [[col1, col2, col3]; [cell1, cell2, cell3] [cell4, cell5, cell6]] | pivot | each --numbered { = $it.item | insert idx $it.index } | sort-by idx | reverse | reject idx ───┬─────────┬─────────┬───────── # │ Column0 │ Column1 │ Column2 ───┼─────────┼─────────┼───────── 0 │ col3 │ cell3 │ cell6 1 │ col2 │ cell2 │ cell5 2 │ col1 │ cell1 │ cell4 ───┴─────────┴─────────┴───────── ``` Which we can get easily, in this case, by doing: ``` > echo [[col1, col2, cel3]; [cell1, cell2, cell3] [cell4, cell5, cell6]] | rotate counter-clockwise ───┬─────────┬─────────┬───────── # │ Column0 │ Column1 │ Column2 ───┼─────────┼─────────┼───────── 0 │ col3 │ cell3 │ cell6 1 │ col2 │ cell2 │ cell5 2 │ col1 │ cell1 │ cell4 ───┴─────────┴─────────┴───────── ``` There are also many powerful use cases with rotation, it makes a breeze creating tables with many columns, say: ``` echo 0..12 | rotate counter-clockwise | reject Column0 ───┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬──────────┬──────────┬──────────┬────────── # │ Column1 │ Column2 │ Column3 │ Column4 │ Column5 │ Column6 │ Column7 │ Column8 │ Column9 │ Column10 │ Column11 │ Column12 │ Column13 ───┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼──────────┼──────────┼──────────┼────────── 0 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 │ 12 ───┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴──────────┴──────────┴──────────┴────────── ```
62 lines
726 B
Rust
62 lines
726 B
Rust
mod append;
|
|
mod autoenv;
|
|
mod autoenv_trust;
|
|
mod autoenv_untrust;
|
|
mod cal;
|
|
mod cd;
|
|
mod compact;
|
|
mod count;
|
|
mod cp;
|
|
mod def;
|
|
mod default;
|
|
mod drop;
|
|
mod each;
|
|
mod echo;
|
|
mod empty;
|
|
mod enter;
|
|
mod every;
|
|
mod first;
|
|
mod flatten;
|
|
mod format;
|
|
mod get;
|
|
mod group_by;
|
|
mod hash_;
|
|
mod headers;
|
|
mod histogram;
|
|
mod insert;
|
|
mod into_int;
|
|
mod keep;
|
|
mod last;
|
|
mod lines;
|
|
mod ls;
|
|
mod math;
|
|
mod merge;
|
|
mod mkdir;
|
|
mod move_;
|
|
mod open;
|
|
mod parse;
|
|
mod path;
|
|
mod prepend;
|
|
mod random;
|
|
mod range;
|
|
mod reduce;
|
|
mod rename;
|
|
mod reverse;
|
|
mod rm;
|
|
mod rotate;
|
|
mod save;
|
|
mod select;
|
|
mod semicolon;
|
|
mod skip;
|
|
mod sort_by;
|
|
mod split_by;
|
|
mod split_column;
|
|
mod split_row;
|
|
mod str_;
|
|
mod touch;
|
|
mod uniq;
|
|
mod update;
|
|
mod where_;
|
|
mod which;
|
|
mod with_env;
|
|
mod wrap;
|