From 656918f08bbbf167e11d9c7ac71d431bf9742676 Mon Sep 17 00:00:00 2001 From: itchyny Date: Sun, 25 Feb 2024 21:53:43 +0900 Subject: [PATCH] Implement pick/1 filter --- prelude.jq | 1 + tests/from_manual/functions.rs | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/prelude.jq b/prelude.jq index 1a5f7c6..78bf095 100644 --- a/prelude.jq +++ b/prelude.jq @@ -41,6 +41,7 @@ def nth($n): .[$n]; def del(f): delpaths([path(f)]); def setpath($paths; $v): getpath($paths) |= $v; +def pick(f): . as $v | reduce path(f) as $p (null; setpath($p; $v | getpath($p))); def to_entries: [keys[] as $key | {$key, value: .[$key]}]; def from_entries: reduce .[] as $entry ({}; .[$entry.key]=$entry.value); diff --git a/tests/from_manual/functions.rs b/tests/from_manual/functions.rs index 7a9eaf2..37a2f19 100644 --- a/tests/from_manual/functions.rs +++ b/tests/from_manual/functions.rs @@ -264,6 +264,19 @@ test!( "# ); +test!( + pick1, + r#" + pick(.x, .y[2], .y[0], .z) + "#, + r#" + {"x":1,"y":[1,2,3]} + "#, + r#" + {"x":1,"y":[1,null,3],"z":null} + "# +); + test!( entries1, r#"