Merge with 0.4
[prosody.git] / util / array.lua
index f1f8fa9773bb4abdb9e4fc97327698a1c590acf1..072b24a75ccea9d93a1b1517ecda414a77f9ee56 100644 (file)
@@ -44,4 +44,25 @@ function array:shuffle()
        end
 end
 
-_G.array = array 
+function array:reverse()
+       local len = #self-1;
+       for i=len,1,-1 do
+               self:push(self[i]);
+               self:pop(i);
+       end
+end
+
+function array.collect(f, s, var)
+       local t, var = {};
+       while true do
+               var = f(s, var);
+               if var == nil then break; end
+               table.insert(t, var);
+       end
+       return setmetatable(t, array_mt);
+end
+
+_G.array = array;
+module("array");
+
+return array;