From: Matthew Wild Date: Mon, 5 Oct 2009 13:38:04 +0000 (+0100) Subject: util.array: Per-array methods now always mutate the array, array.* return a mutated... X-Git-Url: https://git.enpas.org/?a=commitdiff_plain;h=4ac119e7af89cd0003f32427b69314bec147ecb6;p=prosody.git util.array: Per-array methods now always mutate the array, array.* return a mutated copy, and most methods (e.g. sort) now return the array --- diff --git a/util/array.lua b/util/array.lua index bbf26f32..ae3a0b5b 100644 --- a/util/array.lua +++ b/util/array.lua @@ -33,22 +33,11 @@ function array_base.map(outa, ina, func) end function array_base.filter(outa, ina, func) - local inplace, start_length = ina == outa, #ina; - local write = 1; - for read=1,start_length do - local v = ina[read]; + for k,v in ipairs(ina) do if func(v) then - outa[write] = v; - write = write + 1; - end - end - - if inplace and write < start_length then - for i=write,start_length do - outa[i] = nil; + outa:push(v); end end - return outa; end