Use iterator chain instead of string concat. (#2655)

* Use iterator chain instead of string concat

* Add regression test for multi-value lines
This commit is contained in:
RedlineTriad 2020-10-10 07:30:48 +02:00 committed by GitHub
parent 6817b472d0
commit 5770b15270
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 3 deletions

View file

@ -75,9 +75,9 @@ async fn lines(args: CommandArgs, registry: &CommandRegistry) -> Result<OutputSt
} => {
let mut leftover_string = leftover_string.lock();
let st = (&*leftover_string).clone() + &st;
let mut lines: Vec<String> = st.lines().map(|x| x.to_string()).collect();
let lo_lines = (&*leftover_string).lines().map(|x| x.to_string());
let st_lines = st.lines().map(|x| x.to_string());
let mut lines: Vec<String> = lo_lines.chain(st_lines).collect();
leftover_string.clear();

View file

@ -34,3 +34,18 @@ fn lines_proper_buffering() {
assert_eq!(actual.out, "[8194,4]");
}
#[test]
fn lines_multi_value_split() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open sample-simple.json
| get first second
| lines
| count
"#
));
assert_eq!(actual.out, "6");
}

View file

@ -0,0 +1,4 @@
{
"first": "first",
"second": "this\nshould\nbe\nseparate\nlines"
}