Skip to content

Commit 7fd9e86

Browse files
committed
Make limit/2 more efficient
Contributed by @pkoppstein.
1 parent e113c67 commit 7fd9e86

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

src/builtin.jq

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,9 @@ def until(cond; next):
168168
if cond then . else (next|_until) end;
169169
_until;
170170
def limit($n; exp):
171-
if $n < 0 then exp else
172-
label $out |
173-
foreach exp as $item (
174-
[$n, null];
175-
if .[0] < 1 then break $out
176-
else [.[0] -1, $item] end;
177-
if .[0] == 0 then .[1], break $out else .[1] end) end;
171+
if $n < 0 then exp
172+
else label $out | foreach exp as $item ($n; .-1; $item, if . <= 0 then break $out else empty end)
173+
end;
178174
def isempty(g): 0 == ((label $go | g | (1, break $go)) // 0);
179175
def first(g): label $out | g | ., break $out;
180176
def last(g): reduce g as $item (null; $item);

0 commit comments

Comments
 (0)