From 8b41415b071225c8ff25cb7938ed19e258cc8827 Mon Sep 17 00:00:00 2001 From: Santiago Lapresta Date: Mon, 17 Feb 2014 04:01:32 +0100 Subject: [PATCH] Added `all` and `any` builtins --- builtin.c | 2 ++ docs/content/3.manual/manual.yml | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/builtin.c b/builtin.c index aac993d..ddf66d0 100644 --- 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);", }; diff --git a/docs/content/3.manual/manual.yml b/docs/content/3.manual/manual.yml index ff9d429..fec50d0 100644 --- a/docs/content/3.manual/manual.yml +++ b/docs/content/3.manual/manual.yml @@ -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: | -- 2.40.0