From 4b618a8727365b880e115c6fd53869040c2ad238 Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Fri, 9 Aug 2013 17:48:21 +0200 Subject: Remove all trailing whitespace --- util/array.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'util/array.lua') diff --git a/util/array.lua b/util/array.lua index 2d58e7fb..9bf215af 100644 --- a/util/array.lua +++ b/util/array.lua @@ -1,7 +1,7 @@ -- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain --- +-- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- @@ -59,13 +59,13 @@ function array_base.filter(outa, ina, func) write = write + 1; end end - + if inplace and write <= start_length then for i=write,start_length do outa[i] = nil; end end - + return outa; end -- cgit v1.2.3 From 087ed3fedce82fe59e6ed593ccf13928071d5e9e Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 6 Oct 2013 23:18:54 +0200 Subject: util.array: Improve array:reverse() and make it work as both method and non-mutating function --- util/array.lua | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'util/array.lua') diff --git a/util/array.lua b/util/array.lua index 9bf215af..6f2abe04 100644 --- a/util/array.lua +++ b/util/array.lua @@ -11,6 +11,7 @@ local t_insert, t_sort, t_remove, t_concat local setmetatable = setmetatable; local math_random = math.random; +local math_floor = math.floor; local pairs, ipairs = pairs, ipairs; local tostring = tostring; @@ -84,6 +85,25 @@ function array_base.pluck(outa, ina, key) return outa; end +function array_base.reverse(outa, ina) + local len = #ina; + if ina == outa then + local middle = math_floor(len/2); + len = len + 1; + local o; -- opposite + for i = 1, middle do + o = len - i; + outa[i], outa[o] = outa[o], outa[i]; + end + else + local off = len + 1; + for i = 1, len do + outa[i] = ina[off - i]; + end + end + return outa; +end + --- These methods only mutate the array function array_methods:shuffle(outa, ina) local len = #self; @@ -94,15 +114,6 @@ function array_methods:shuffle(outa, ina) return self; end -function array_methods:reverse() - local len = #self-1; - for i=len,1,-1 do - self:push(self[i]); - self:pop(i); - end - return self; -end - function array_methods:append(array) local len,len2 = #self, #array; for i=1,len2 do -- cgit v1.2.3