Skip to content

Commit d524b15

Browse files
committed
list.removeWhere: keep table continuous by default
1 parent 8b8c66a commit d524b15

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

Functional.moon

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,15 +180,20 @@ list = setmetatable {
180180
i += 1
181181
return removed, shift
182182

183-
removeWhere: (tbl, predicate = _function.true) ->
183+
removeWhere: (tbl, predicate = _function.true, sparse = false) ->
184184
removeAll = predicate == _function.true
185185
removed, r = {}, 0
186186
for i, v in ipairs tbl
187187
if removeAll or predicate v, i, tbl
188188
r += 1
189-
removed[r], tbl[i] = v
189+
if sparse
190+
removed[r], tbl[i] = v
191+
else removed[r] = i
190192

191-
return removed, r
193+
if sparse
194+
return removed, r
195+
else
196+
return list.removeIndexes(tbl, removed), r
192197

193198
slice: (tbl, first = 1, last = -1) ->
194199
len = #tbl

0 commit comments

Comments
 (0)