mirror of
https://github.com/nushell/nushell
synced 2024-12-26 04:53:09 +00:00
add 'from ndjson' into standard library (#10283)
close #8574 related #10276 # Description added below into standard library ``` def "from ndjson" []: string -> any { from json --objects } ``` # User-Facing Changes Users can use functions like "from ndjson" in standard library, and can open ndjson files with `open` command. ``` use std formats * # `from ndjson` is available now open sample.ndjson ``` # Tests + Formatting `toolkit check pr` - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting --------- Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com>
This commit is contained in:
parent
7b89fab327
commit
c761f7f844
3 changed files with 75 additions and 0 deletions
|
@ -28,6 +28,7 @@ pub fn load_standard_library(
|
||||||
("xml.nu", include_str!("../std/xml.nu")),
|
("xml.nu", include_str!("../std/xml.nu")),
|
||||||
("input.nu", include_str!("../std/input.nu")),
|
("input.nu", include_str!("../std/input.nu")),
|
||||||
("math.nu", include_str!("../std/math.nu")),
|
("math.nu", include_str!("../std/math.nu")),
|
||||||
|
("formats.nu", include_str!("../std/formats.nu")),
|
||||||
];
|
];
|
||||||
|
|
||||||
let mut working_set = StateWorkingSet::new(engine_state);
|
let mut working_set = StateWorkingSet::new(engine_state);
|
||||||
|
|
20
crates/nu-std/std/formats.nu
Normal file
20
crates/nu-std/std/formats.nu
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# formats.nu
|
||||||
|
#
|
||||||
|
# This file contains functions for formatting data in various ways.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# use std format *
|
||||||
|
# use std format <function name>
|
||||||
|
#
|
||||||
|
# These functions help `open` the files with unsupported extensions such as ndjson.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Convert from ndjson to structured data.
|
||||||
|
export def "from ndjson" []: string -> any {
|
||||||
|
from json --objects
|
||||||
|
}
|
||||||
|
|
||||||
|
# Convert from jsonl to structured data.
|
||||||
|
export def "from jsonl" []: string -> any {
|
||||||
|
from json --objects
|
||||||
|
}
|
54
crates/nu-std/tests/test_formats.nu
Normal file
54
crates/nu-std/tests/test_formats.nu
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
use std assert
|
||||||
|
|
||||||
|
def ndjson_test_data1 [] {
|
||||||
|
'{"a":1}
|
||||||
|
{"a":2}
|
||||||
|
{"a":3}
|
||||||
|
{"a":4}
|
||||||
|
{"a":5}
|
||||||
|
{"a":6}'
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
def from_ndjson_multiple_objects [] {
|
||||||
|
use std formats *
|
||||||
|
let result = ndjson_test_data1 | from ndjson
|
||||||
|
let expect = [{a:1},{a:2},{a:3},{a:4},{a:5},{a:6}]
|
||||||
|
assert equal $result $expect "could not convert from NDJSON"
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
def from_ndjson_single_object [] {
|
||||||
|
use std formats *
|
||||||
|
let result = '{"a":1}' | from ndjson
|
||||||
|
let expect = [{a:1}]
|
||||||
|
assert equal $result $expect "could not convert from NDJSON"
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
def from_ndjson_invalid_object [] {
|
||||||
|
use std formats *
|
||||||
|
assert error { '{"a":1' | from ndjson }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
def from_jsonl_multiple_objects [] {
|
||||||
|
use std formats *
|
||||||
|
let result = ndjson_test_data1 | from jsonl
|
||||||
|
let expect = [{a:1},{a:2},{a:3},{a:4},{a:5},{a:6}]
|
||||||
|
assert equal $result $expect "could not convert from JSONL"
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
def from_jsonl_single_object [] {
|
||||||
|
use std formats *
|
||||||
|
let result = '{"a":1}' | from jsonl
|
||||||
|
let expect = [{a:1}]
|
||||||
|
assert equal $result $expect "could not convert from JSONL"
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
def from_jsonl_invalid_object [] {
|
||||||
|
use std formats *
|
||||||
|
assert error { '{"a":1' | from jsonl }
|
||||||
|
}
|
Loading…
Reference in a new issue