dots/.config/awesome/quarrel/table.lua

60 lines
1.1 KiB
Lua

local qtable = {}
function qtable.map(t, f)
local nt = {}
for k,v in pairs(t) do
nt[k] = f(v)
end
return nt
end
function qtable.filter(t, f, dict)
local nt = {}
for k,v in pairs(t) do
if not f(v) then goto continue end
if dict then
nt[k] = v
else
table.insert(nt, v)
end
::continue::
end
return nt
end
-- This is taken from http://lua-users.org/wiki/SortedIteration
-- This version is stripped of comments and empty lines + some stuff is renamed
local function __gen_oindex(t)
local oindex = {}
for key in pairs(t) do
table.insert(oindex, key)
end
table.sort(oindex)
return oindex
end
function qtable.onext(t, state)
local key = nil
if state == nil then
t.__oindex = __gen_oindex(t)
key = t.__oindex[1]
else
for i = 1,#t.__oindex do
if t.__oindex[i] == state then
key = t.__oindex[i+1]
end
end
end
if key then
return key, t[key]
end
t.__oindex = nil
end
function qtable.opairs(t)
return qtable.onext, t, nil
end
return qtable