4,951
edits
Falterfire (talk | contribs) (Fixed failed copy+paste) |
Falterfire (talk | contribs) (Added custom sort function) |
||
Line 44: | Line 44: | ||
end | end | ||
return iterator | return iterator | ||
end | |||
--General purpose function for going through a table after sorting based on a custom sort order | |||
--Taken from https://stackoverflow.com/questions/15706270/sort-a-table-in-lua | |||
function p.spairs(t, order) | |||
-- collect the keys | |||
local keys = {} | |||
for k in pairs(t) do keys[#keys+1] = k end | |||
-- if order function given, sort by it by passing the table and keys a, b, | |||
-- otherwise just sort the keys | |||
if order then | |||
table.sort(keys, function(a,b) return order(t, a, b) end) | |||
else | |||
table.sort(keys) | |||
end | |||
-- return the iterator function | |||
local i = 0 | |||
return function() | |||
i = i + 1 | |||
if keys[i] then | |||
return keys[i], t[keys[i]] | |||
end | |||
end | |||
end | end | ||