helpers: add sorted pairs function

This commit is contained in:
shagu
2021-10-10 14:26:05 +02:00
parent 6accfad2d9
commit 2dfc64ffd6
+35
View File
@@ -252,3 +252,38 @@ ShaguTweaks.Abbreviate = function(number, eachk)
return number
end
-- http://lua-users.org/wiki/SortedIteration
local function __genOrderedIndex( t )
local orderedIndex = {}
for key in pairs(t) do
table.insert( orderedIndex, key )
end
table.sort( orderedIndex )
return orderedIndex
end
local function orderedNext(t, state)
local key = nil
if state == nil then
t.__orderedIndex = __genOrderedIndex( t )
key = t.__orderedIndex[1]
else
for i = 1,table.getn(t.__orderedIndex) do
if t.__orderedIndex[i] == state then
key = t.__orderedIndex[i+1]
end
end
end
if key then
return key, t[key]
end
t.__orderedIndex = nil
return
end
ShaguTweaks.spairs = function(t)
return orderedNext, t, nil
end