From 01f676041db158a87ad98ccd7443dce7a85757f2 Mon Sep 17 00:00:00 2001 From: Santiago Lapresta Date: Fri, 30 May 2014 00:45:16 +0200 Subject: [PATCH] Added `join` function Signed-off-by: Nicolas Williams --- builtin.c | 1 + docs/content/3.manual/manual.yml | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/builtin.c b/builtin.c index 83d28dec..ad4145a5 100644 --- a/builtin.c +++ b/builtin.c @@ -703,6 +703,7 @@ static const char* const jq_builtins[] = { "def nulls: select(type == \"null\");", "def values: arrays, objects, booleans, numbers, strings;", "def scalars: select(. == null or . == true or . == false or type == \"number\" or type == \"string\");", + "def join(x): reduce .[] as $i (\"\"; . + (if . == \"\" then $i else x + $i end));", }; #undef LIBM_DD diff --git a/docs/content/3.manual/manual.yml b/docs/content/3.manual/manual.yml index 801b4b21..e64de245 100644 --- a/docs/content/3.manual/manual.yml +++ b/docs/content/3.manual/manual.yml @@ -1075,6 +1075,20 @@ sections: input: '"a, b,c,d, e"' output: ['["a","b,c,d","e"]'] + - title: `join` + body: | + + Joins the array of elements given as input, using the + argument as separator. It is the inverse of `split`: that is, + running `split("foo") | join("foo")` over any input string + returns said input string. + + examples: + - program: 'join(", ")' + input: '["a","b,c,d","e"]' + output: ['"a, b,c,d, e"'] + + - title: `recurse` body: |