Andrés N. Robalino
803826cdcd
90 degree table rotations (clockwise and counter-clockwise) (#3086)
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
───┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴──────────┴──────────┴──────────┴──────────
```
2021-02-22 06:56:34 -05:00
..
2021-02-12 23:13:14 +13:00
2021-01-19 14:24:27 -06:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-22 06:56:34 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-01-12 17:59:53 +13:00
2021-01-12 17:59:53 +13:00
2021-01-12 17:59:53 +13:00
2021-02-18 20:24:27 -05:00
2021-02-05 19:34:26 -05:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-22 06:56:34 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-05 19:34:26 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-22 20:25:17 +13:00
2021-02-22 20:25:17 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-22 20:25:17 +13:00
2021-02-22 20:25:17 +13:00
2021-02-12 23:13:14 +13:00
2021-02-22 20:25:17 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-22 20:25:17 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-06 20:05:47 -05:00
2021-02-12 23:13:14 +13:00
2021-02-05 19:34:26 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-05 19:34:26 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-01-12 17:59:53 +13:00
2021-02-12 23:13:14 +13:00
2021-02-06 20:05:47 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-15 21:41:49 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-13 13:20:34 -06:00
2021-02-22 20:25:17 +13:00
2021-02-22 20:25:17 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-02 12:09:19 -05:00
2021-02-12 23:13:14 +13:00
2021-02-22 20:25:17 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-05 19:34:26 -05:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-12 23:13:14 +13:00
2021-02-18 15:56:14 +13:00
2021-02-12 23:13:14 +13:00