diff options
author | Nicolas Williams <nico@cryptonector.com> | 2015-01-13 18:57:35 -0600 |
---|---|---|
committer | Nicolas Williams <nico@cryptonector.com> | 2015-01-14 01:32:25 -0600 |
commit | 97602456e32487d5fe5f7ecff3a0fddee8882d87 (patch) | |
tree | 2d0cf58e160fcbb7a87f87fcfc3240ee4919453f | |
parent | 8b5ff40402ab2d0f16f42207b0f475636483d288 (diff) |
join/1: respect empty strings (fix #668)
-rw-r--r-- | builtin.c | 2 | ||||
-rw-r--r-- | tests/all.test | 4 |
2 files changed, 5 insertions, 1 deletions
@@ -1065,7 +1065,7 @@ static const char* const jq_builtins[] = { "def scalars: select(. == null or . == true or . == false or type == \"number\" or type == \"string\");", "def scalars_or_empty: select(. == null or . == true or . == false or type == \"number\" or type == \"string\" or ((type==\"array\" or type==\"object\") and length==0));", "def leaf_paths: paths(scalars);", - "def join($x): reduce .[] as $i (\"\"; . + (if . == \"\" then $i else $x + $i end));", + "def join($x): reduce .[] as $i (null; (.//\"\") + (if . == null then $i else $x + $i end));", "def flatten: reduce .[] as $i ([]; if $i | type == \"array\" then . + ($i | flatten) else . + [$i] end);", "def flatten($x): reduce .[] as $i ([]; if $i | type == \"array\" and $x > 0 then . + ($i | flatten($x-1)) else . + [$i] end);", "def range($x): range(0;$x);", diff --git a/tests/all.test b/tests/all.test index e412c626..e0fac8dd 100644 --- a/tests/all.test +++ b/tests/all.test @@ -327,6 +327,10 @@ join(",","/") "a,b,c,d" "a/b/c/d" +[.[]|join("a")] +[[""],["",""],["","",""]] +["","a","aa"] + # Same check for flatten/1 flatten(-1,3,2,1) [0, [1], [[2]], [[[3]]]] |