diff --git a/src/builtin.jq b/src/builtin.jq index c445f1a2d3..e65a8997d6 100644 --- a/src/builtin.jq +++ b/src/builtin.jq @@ -168,13 +168,9 @@ def until(cond; next): if cond then . else (next|_until) end; _until; def limit($n; exp): - if $n < 0 then exp else - label $out | - foreach exp as $item ( - [$n, null]; - if .[0] < 1 then break $out - else [.[0] -1, $item] end; - if .[0] == 0 then .[1], break $out else .[1] end) end; + if $n < 0 then exp + else label $out | foreach exp as $item ($n; .-1; $item, if . <= 0 then break $out else empty end) + end; def isempty(g): 0 == ((label $go | g | (1, break $go)) // 0); def first(g): label $out | g | ., break $out; def last(g): reduce g as $item (null; $item);