Add --number flag to split column (#13831)

This allows parsing of data (e.g. key-value pairs) where the last column
may contain the delimiter.

- this PR should close #13742

# Description

Adds a `--number (-n)` flag to `split column`, analogous to `split row
--number`.

```
~> ['author: Salina Yoon' r#'title: Where's Ellie?: A Hide-and-Seek Book'#] | split column --number 2 ': ' key value
╭───┬────────┬──────────────────────────────────────╮
│ # │  key   │                value                 │
├───┼────────┼──────────────────────────────────────┤
│ 0 │ author │ Salina Yoon                          │
│ 1 │ title  │ Where's Ellie?: A Hide-and-Seek Book │
╰───┴────────┴──────────────────────────────────────╯
```

# User-Facing Changes
* `split column` gains a `--number` option

# Tests + Formatting
Tests included in strings::split::column::test::test_examples and
commands::split_column::to_column.

# After Submitting
Reference documentation is auto-generated from code. No other
documentation updates necessary.
This commit is contained in:
nome
2024-09-12 14:16:33 +02:00
committed by GitHub
parent fb34a4fc6c
commit 5101b5e306
2 changed files with 59 additions and 5 deletions

View File

@ -33,6 +33,19 @@ fn to_column() {
assert!(actual.out.contains("shipper"));
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
open sample.txt
| lines
| str trim
| split column -n 3 ","
| get column3
"#
));
assert!(actual.out.contains("tariff_item,name,origin"));
let actual = nu!(
cwd: dirs.test(), pipeline(
r"