Fix deletion using assigning empty against arrays (fix #2051)

This commit is contained in:
itchyny authored and Nico Williams committed 2023-07-07 20:11:10 -05:00
1 parent cd8898d5b9
commit 371abc73ba
2 files changed
+18 -5

No files matched your search

+5 -5
View File
@@ -12,24 +12,24 @@ def add: reduce .[] as $x (null; . + $x);
def del(f): delpaths([path(f)]); def del(f): delpaths([path(f)]);
def _assign(paths; $value): reduce path(paths) as $p (.; setpath($p; $value)); def _assign(paths; $value): reduce path(paths) as $p (.; setpath($p; $value));
def _modify(paths; update): def _modify(paths; update):
reduce path(paths) as $p (.; reduce path(paths) as $p ([., []];
. as $dot . as $dot
| null | null
| label $out | label $out
| ($dot | getpath($p)) as $v | ($dot[0] | getpath($p)) as $v
| ( | (
( $$$$v ( $$$$v
| update | update
| (., break $out) as $v | (., break $out) as $v
| $$$$dot | $$$$dot
| setpath($p; $v) | setpath([0] + $p; $v)
), ),
( (
$$$$dot $$$$dot
| delpaths([$p]) | setpath([1]; .[1] + [$p])
) )
) )
); ) | . as $dot | $dot[0] | delpaths($dot[1]);
def map_values(f): .[] |= f; def map_values(f): .[] |= f;
# recurse # recurse
+13
View File
@@ -1044,6 +1044,19 @@ def inc(x): x |= .+1; inc(.[].a)
{"a":[{"b":5}]} {"a":[{"b":5}]}
{"a":[{"c":3,"b":5}]} {"a":[{"c":3,"b":5}]}
# #2051, deletion using assigning empty against arrays
(.[] | select(. >= 2)) |= empty
[1,5,3,0,7]
[1,0]
.[] |= select(. % 2 == 0)
[0,1,2,3,4,5]
[0,2,4]
.foo[1,4,2,3] |= empty
{"foo":[0,1,2,3,4,5]}
{"foo":[0,5]}
.[2][3] = 1 .[2][3] = 1
[4] [4]
[4, null, [null, null, null, 1]] [4, null, [null, null, null, 1]]