]> granicus.if.org Git - jq/commitdiff
Added `arrays` and other filters
authorSantiago Lapresta <santiago.lapresta@gmail.com>
Mon, 10 Mar 2014 00:35:44 +0000 (01:35 +0100)
committerNicolas Williams <nico@cryptonector.com>
Thu, 13 Mar 2014 05:27:56 +0000 (00:27 -0500)
Arrays, objects, numbers, strings, booleans, nulls, values (non-nulls)
-- these builtins filter out those inputs that don't match the name of
the builtin.

This fixes #322 and #324.

builtin.c

index 9881dc1cd890777aaeaace68456eceb0b0481a2d..da766e16da7e88b7f671b778e4bfc93699f15da7 100644 (file)
--- a/builtin.c
+++ b/builtin.c
@@ -683,6 +683,14 @@ static const char* const jq_builtins[] = {
   "def leaf_paths: . as $dot|paths|select(. as $p|$dot|getpath($p)|type|. != \"array\" and . != \"object\");",
   "def any: reduce .[] as $i (false; . or $i);",
   "def all: reduce .[] as $i (true; . and $i);",
+  "def arrays: select(type == \"array\");",
+  "def objects: select(type == \"object\");",
+  "def iterables: arrays, objects;",
+  "def booleans: select(type == \"boolean\");",
+  "def numbers: select(type == \"number\");",
+  "def strings: select(type == \"string\");",
+  "def nulls: select(type == \"null\");",
+  "def values: arrays, objects, booleans, numbers, strings;",
 };
 #undef LIBM_DD