mirror of
https://github.com/Reuh/ubiquitousse.git
synced 2025-10-27 09:09:30 +00:00
Add has and ipairs to uqt.util
This commit is contained in:
parent
4b75f21e52
commit
010a526ef3
1 changed files with 37 additions and 0 deletions
|
|
@ -31,6 +31,17 @@ util = {
|
|||
--- List operations ---
|
||||
-----------------------
|
||||
|
||||
--- Check if the list contains a value.
|
||||
-- @tparam table t the list
|
||||
-- @param v value to search
|
||||
-- @treturn bool true if is in list, false otherwise
|
||||
has = function(t, v)
|
||||
for _, x in ipairs(t) do
|
||||
if x == v then return true end
|
||||
end
|
||||
return false
|
||||
end,
|
||||
|
||||
--- Remove the first occurence of an element in a list.
|
||||
-- @tparam table t the list
|
||||
-- @param x the element to remove
|
||||
|
|
@ -61,6 +72,32 @@ util = {
|
|||
return r
|
||||
end,
|
||||
|
||||
--- Chainable ipairs.
|
||||
-- Same as ipairs, but can take several tables, which will be chained, in order.
|
||||
ipairs = function(a, b, ...)
|
||||
if b == nil then
|
||||
return ipairs(a)
|
||||
else
|
||||
local tables = {a, b, ...}
|
||||
local itable = 1
|
||||
local f, s, var = ipairs(tables[itable])
|
||||
return function()
|
||||
local i, v = f(s, var)
|
||||
if i == nil then
|
||||
itable = itable + 1
|
||||
if tables[itable] then
|
||||
f, s, var = ipairs(tables[itable])
|
||||
i, v = f(s, var)
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
var = i
|
||||
return i, v
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
--- Applies a function to every item in list t.
|
||||
-- The function receive two argument: the value and then the key.
|
||||
-- @tparam table t initial list
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue