]> granicus.if.org Git - jq/commitdiff
Added `all` and `any` builtins 296/head
authorSantiago Lapresta <santiago.lapresta@gmail.com>
Mon, 17 Feb 2014 03:01:32 +0000 (04:01 +0100)
committerSantiago Lapresta <santiago.lapresta@gmail.com>
Mon, 17 Feb 2014 03:01:32 +0000 (04:01 +0100)
builtin.c
docs/content/3.manual/manual.yml

index aac993db72f180513d26a32275c2762ec6889feb..ddf66d0078ef0c7559cb1957a53de2951d5e92bd 100644 (file)
--- a/builtin.c
+++ b/builtin.c
@@ -680,6 +680,8 @@ static const char* const jq_builtins[] = {
   "def rindex(i): .[i][-1:][0];",
   "def paths: path(recurse(if (type|. == \"array\" or . == \"object\") then .[] else empty end))|select(length > 0);",
   "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);",
 };
 
 
index ff9d429a52e73793f6893dfbc8054ee0c3e39977..fec50d0d38662432e4795dd70a2cd3a1059d8541 100644 (file)
@@ -690,6 +690,46 @@ sections:
             input: '[]'
             output: ["null"]
 
+      - title: `any`
+      body: |
+      
+        The filter `any` takes as input an array of boolean values,
+        and produces `true` as output if any of the the elements of
+        the array is `true`.
+      
+        If the input is an empty array, `any` returns `false`.
+      
+      examples:
+        - program: any
+          input: '[true, false]'
+          output: ["true"]
+        - program: any
+          input: '[false, false]'
+          output: ["false"]
+        - program: any
+          input: '[]'
+          output: ["false"]
+
+      - title: `all`
+      body: |
+      
+        The filter `all` takes as input an array of boolean values,
+        and produces `true` as output if all of the the elements of
+        the array are `true`.
+      
+        If the input is an empty array, `all` returns `true`.
+      
+      examples:
+        - program: all
+          input: '[true, false]'
+          output: ["false"]
+        - program: all
+          input: '[true, true]'
+          output: ["true"]
+        - program: all
+          input: '[]'
+          output: ["true"]
+
       - title: `range`
         body: |