Darren Schroeder
761946c522
add the ability to combine columns with detect columns
( #9511 )
...
# Description
This PR adds the ability to manually combine columns in the `detect
columns` command. This is useful when items are close together but want
them to be in one column.
For example, if you want to parse the output of bash's `ls` command, the
output passed into `detect columns` would look similar to this.
```
❯ ^ls -lh
total 242K
-rw-r--r-- 1 dschroeder 197121 3.5K Mar 30 10:10 CODE_OF_CONDUCT.md
-rw-r--r-- 1 dschroeder 197121 11K Jun 21 14:16 CONTRIBUTING.md
-rw-r--r-- 1 dschroeder 197121 153K Jun 21 14:16 Cargo.lock
-rw-r--r-- 1 dschroeder 197121 5.7K Jun 21 08:47 Cargo.toml
-rw-r--r-- 1 dschroeder 197121 371 Mar 30 10:10 Cross.toml
-rw-r--r-- 1 dschroeder 197121 1.1K Apr 3 08:37 LICENSE
-rw-r--r-- 1 dschroeder 197121 13K Jun 21 14:16 README.md
drwxr-xr-x 1 dschroeder 197121 0 May 24 08:06 assets
drwxr-xr-x 1 dschroeder 197121 0 Jun 21 14:16 benches
-rw-r--r-- 1 dschroeder 197121 310 Mar 30 10:10 codecov.yml
drwxr-xr-x 1 dschroeder 197121 0 Jun 1 15:30 crates
drwxr-xr-x 1 dschroeder 197121 0 May 4 07:55 dict
drwxr-xr-x 1 dschroeder 197121 0 Mar 30 10:10 docker
-rw-r--r-- 1 dschroeder 197121 1.1K Jun 12 07:03 rust-toolchain.toml
drwxr-xr-x 1 dschroeder 197121 0 May 26 07:11 scripts
drwxr-xr-x 1 dschroeder 197121 0 Jun 15 07:14 src
drwxr-xr-x 1 dschroeder 197121 0 Jun 21 09:48 target
drwxr-xr-x 1 dschroeder 197121 0 Jun 21 12:30 tests
-rw-r--r-- 1 dschroeder 197121 16K Jun 21 14:16 toolkit.nu
drwxr-xr-x 1 dschroeder 197121 0 Jun 1 15:30 wix
```
Running it through `detect columns` is helpful but notice how the Month,
Day, and Time are in their own columns.
```
❯ ^ls -lh | detect columns --no-headers --skip 1
╭────┬────────────┬─────────┬────────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────────────────╮
│ # │ column0 │ column1 │ column2 │ column3 │ column4 │ column5 │ column6 │ column7 │ column8 │
├────┼────────────┼─────────┼────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────────────────┤
│ 0 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 3.5K │ Mar │ 30 │ 10:10 │ CODE_OF_CONDUCT.md │
│ 1 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 11K │ Jun │ 21 │ 14:16 │ CONTRIBUTING.md │
│ 2 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 153K │ Jun │ 21 │ 14:16 │ Cargo.lock │
│ 3 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 5.7K │ Jun │ 21 │ 08:47 │ Cargo.toml │
│ 4 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 371 │ Mar │ 30 │ 10:10 │ Cross.toml │
│ 5 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 1.1K │ Apr │ 3 │ 08:37 │ LICENSE │
│ 6 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 13K │ Jun │ 21 │ 14:16 │ README.md │
│ 7 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ May │ 24 │ 08:06 │ assets │
│ 8 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun │ 21 │ 14:16 │ benches │
│ 9 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 310 │ Mar │ 30 │ 10:10 │ codecov.yml │
│ 10 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun │ 1 │ 15:30 │ crates │
│ 11 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ May │ 4 │ 07:55 │ dict │
│ 12 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Mar │ 30 │ 10:10 │ docker │
│ 13 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 1.1K │ Jun │ 12 │ 07:03 │ rust-toolchain.toml │
│ 14 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ May │ 26 │ 07:11 │ scripts │
│ 15 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun │ 15 │ 07:14 │ src │
│ 16 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun │ 21 │ 09:48 │ target │
│ 17 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun │ 21 │ 12:30 │ tests │
│ 18 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 16K │ Jun │ 21 │ 14:16 │ toolkit.nu │
│ 19 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun │ 1 │ 15:30 │ wix │
├────┼────────────┼─────────┼────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────────────────┤
│ # │ column0 │ column1 │ column2 │ column3 │ column4 │ column5 │ column6 │ column7 │ column8 │
╰────┴────────────┴─────────┴────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────────────────╯
```
Now you can add `--combine-columns <range>` and get something like this.
```
❯ ^ls -lh | detect columns --no-headers --skip 1 --combine-columns 5..7
╭────┬────────────┬─────────┬────────────┬─────────┬─────────┬──────────────┬─────────────────────╮
│ # │ column0 │ column1 │ column2 │ column3 │ column4 │ column5 │ column6 │
├────┼────────────┼─────────┼────────────┼─────────┼─────────┼──────────────┼─────────────────────┤
│ 0 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 3.5K │ Mar 30 10:10 │ CODE_OF_CONDUCT.md │
│ 1 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 11K │ Jun 21 14:16 │ CONTRIBUTING.md │
│ 2 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 153K │ Jun 21 14:16 │ Cargo.lock │
│ 3 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 5.7K │ Jun 21 08:47 │ Cargo.toml │
│ 4 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 371 │ Mar 30 10:10 │ Cross.toml │
│ 5 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 1.1K │ Apr 3 08:37 │ LICENSE │
│ 6 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 13K │ Jun 21 14:16 │ README.md │
│ 7 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ May 24 08:06 │ assets │
│ 8 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun 21 14:16 │ benches │
│ 9 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 310 │ Mar 30 10:10 │ codecov.yml │
│ 10 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun 1 15:30 │ crates │
│ 11 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ May 4 07:55 │ dict │
│ 12 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Mar 30 10:10 │ docker │
│ 13 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 1.1K │ Jun 12 07:03 │ rust-toolchain.toml │
│ 14 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ May 26 07:11 │ scripts │
│ 15 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun 15 07:14 │ src │
│ 16 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun 21 09:48 │ target │
│ 17 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun 21 12:30 │ tests │
│ 18 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 16K │ Jun 21 14:16 │ toolkit.nu │
│ 19 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 │ Jun 1 15:30 │ wix │
├────┼────────────┼─────────┼────────────┼─────────┼─────────┼──────────────┼─────────────────────┤
│ # │ column0 │ column1 │ column2 │ column3 │ column4 │ column5 │ column6 │
╰────┴────────────┴─────────┴────────────┴─────────┴─────────┴──────────────┴─────────────────────╯
```
Then you can fancy-it-up by tweaking the other columns and renaming
columns.
```
❯ ^ls -lh | detect columns --no-headers --skip 1 --combine-columns 5..7 | update column5 {|r| $r.column5 | into datetime} | into int column1 column3 | into filesize column4 | rename perms links user inode filesize datetime name
╭────┬────────────┬───────┬────────────┬────────┬──────────┬──────────────┬─────────────────────╮
│ # │ perms │ links │ user │ inode │ filesize │ datetime │ name │
├────┼────────────┼───────┼────────────┼────────┼──────────┼──────────────┼─────────────────────┤
│ 0 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 3.5 KB │ 2 months ago │ CODE_OF_CONDUCT.md │
│ 1 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 11.0 KB │ 2 days ago │ CONTRIBUTING.md │
│ 2 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 153.0 KB │ 2 days ago │ Cargo.lock │
│ 3 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 5.7 KB │ 2 days ago │ Cargo.toml │
│ 4 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 371 B │ 2 months ago │ Cross.toml │
│ 5 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 1.1 KB │ 2 months ago │ LICENSE │
│ 6 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 13.0 KB │ 2 days ago │ README.md │
│ 7 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ a month ago │ assets │
│ 8 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 2 days ago │ benches │
│ 9 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 310 B │ 2 months ago │ codecov.yml │
│ 10 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 3 weeks ago │ crates │
│ 11 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 2 months ago │ dict │
│ 12 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 2 months ago │ docker │
│ 13 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 1.1 KB │ 2 weeks ago │ rust-toolchain.toml │
│ 14 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 4 weeks ago │ scripts │
│ 15 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ a week ago │ src │
│ 16 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 2 days ago │ target │
│ 17 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 2 days ago │ tests │
│ 18 │ -rw-r--r-- │ 1 │ dschroeder │ 197121 │ 16.0 KB │ 2 days ago │ toolkit.nu │
│ 19 │ drwxr-xr-x │ 1 │ dschroeder │ 197121 │ 0 B │ 3 weeks ago │ wix │
├────┼────────────┼───────┼────────────┼────────┼──────────┼──────────────┼─────────────────────┤
│ # │ perms │ links │ user │ inode │ filesize │ datetime │ name │
╰────┴────────────┴───────┴────────────┴────────┴──────────┴──────────────┴─────────────────────╯
```
# User-Facing Changes
<!-- List of all changes that impact the user experience here. This
helps us keep track of breaking changes. -->
# Tests + Formatting
<!--
Don't forget to add tests that cover your changes.
Make sure you've run and fixed any issues with these commands:
- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect -A clippy::result_large_err` to check that
you're using the standard code style
- `cargo test --workspace` to check that all tests pass
- `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
standard library
> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```
-->
# After Submitting
<!-- If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io ) after the
PR is merged, if necessary. This will help us keep the docs up to date.
-->
2023-06-23 16:19:08 -05:00
Jérémy Audiger
a5c604c283
Uniformize usage() and extra_usage() message ending for commands helper. ( #8268 )
...
# Description
Working on uniformizing the ending messages regarding methods usage()
and extra_usage(). This is related to the issue
https://github.com/nushell/nushell/issues/5066 after discussing it with
@jntrnr
# User-Facing Changes
None.
# Tests + Formatting
Don't forget to add tests that cover your changes.
Make sure you've run and fixed any issues with these commands:
- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass
# After Submitting
If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io ) after the
PR is merged, if necessary. This will help us keep the docs up to date.
2023-02-28 21:33:02 -08:00
Reilly Wood
e72cecf457
Remove unnecessary echo
uses from examples ( #7500 )
...
`echo` tends to confuse new Nu users; they expect it to work like
`print` when it just passes a value to the next stage of the pipeline.
We haven't quite figured out what to do about `echo` in the long run,
but I think a good start is to remove `echo` from command examples where
it would be unnecessary and arguably unidiomatic.
2022-12-16 11:51:00 -05:00
JT
eaec480f42
Improve empty pipelines ( #7383 )
...
# Description
This fix changes pipelines to allow them to actually be empty. Mapping
over empty pipelines gives empty pipelines. Empty pipelines immediately
return `None` when iterated.
This removes a some of where `Span::new(0, 0)` was coming from, though
there are other cases where we still use it.
# User-Facing Changes
None
# Tests + Formatting
Don't forget to add tests that cover your changes.
Make sure you've run and fixed any issues with these commands:
- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass
# After Submitting
If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io ) after the
PR is merged, if necessary. This will help us keep the docs up to date.
2022-12-08 07:31:57 +13:00
Dan Davison
df94052180
Declare input and output types of commands ( #6796 )
...
* Add failing test that list of ints and floats is List<Number>
* Start defining subtype relation
* Make it possible to declare input and output types for commands
- Enforce them in tests
* Declare input and output types of commands
* Add formatted signatures to `help commands` table
* Revert SyntaxShape::Table -> Type::Table change
* Revert unnecessary derive(Hash) on SyntaxShape
Co-authored-by: JT <547158+jntrnr@users.noreply.github.com>
2022-11-10 10:55:05 +13:00
Jae-Heon Ji
820a6bfb08
feat: add search terms to category of strings ( #5723 )
2022-06-06 08:47:09 -05:00
JT
76079d5183
Move config to be an env var ( #5230 )
...
* Move config to be an env var
* fix fmt and tests
2022-04-19 10:28:01 +12:00
Reilly Wood
d38a3a8b4e
Fix command descriptions+examples ( #5129 )
...
* Fix exit usage
* Move dfr as-date* format examples to extra_usage
* Update command usage and examples
* More docs on `str trim`
Co-authored-by: sholderbach <sholderbach@users.noreply.github.com>
2022-04-08 10:30:49 +02:00
Justin Ma
aea4355d04
refactor: change column names from 'Column*' to 'column*' ( #4556 )
2022-02-19 19:26:47 -05:00
Justin Ma
ac99ac003a
Add example for cd,transpose,detect columns,split column and split row ( #4549 )
2022-02-19 09:24:48 -06:00
JT
f5f9d56c37
Move to a standard kebab/snake style ( #4509 )
2022-02-17 09:55:17 -05:00
JT
a51d45b99d
Ignore clippy's erroneous warnings ( #895 )
2022-01-30 16:12:41 -05:00
JT
060a4b3f48
Port detect columns
( #892 )
2022-01-30 07:52:24 -05:00