Path of Exile Wiki

Please consider helping keep the wiki up to date. Check the to-do list of updates needed for version 3.14.0.

Game data exports will becoming later as the technical changes in addition to regular changes take some more time.

READ MORE

Path of Exile Wiki
mNo edit summary
(Declare variables locally)
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
-- Author: [#OMEGA] - K2
 
-- Author: [#OMEGA] - K2
xtable = {}
+
local xtable = {}
   
 
function xtable:new(tbl)
 
function xtable:new(tbl)
Line 7: Line 7:
 
self.__index = self
 
self.__index = self
 
return tbl
 
return tbl
  +
end
  +
  +
function xtable:insert(value, index)
  +
if index ~= nil then
  +
table.insert(self, index, value)
  +
else
  +
table.insert(self, value)
  +
end
  +
end
  +
  +
function xtable:insertT(value, index)
  +
for _, v in ipairs(value) do
  +
xtable.insert(self, v, index)
  +
end
 
end
 
end
   
Line 18: Line 32:
 
function xtable:removeT(value)
 
function xtable:removeT(value)
 
for _, v in ipairs(value) do
 
for _, v in ipairs(value) do
xtable:remove(v)
+
xtable.remove(self, v)
 
end
 
end
 
end
 
end
Line 40: Line 54:
 
i = i + 1
 
i = i + 1
 
end
 
end
return 0
+
return nil
 
end
 
end
   
Line 52: Line 66:
 
function xtable:containsT(value)
 
function xtable:containsT(value)
 
for _, v in ipairs(value) do
 
for _, v in ipairs(value) do
if not xtable:contains(v) then return false end
+
if not xtable.contains(self, v) then return false end
 
end
 
end
 
return true
 
return true
Line 62: Line 76:
 
table.insert(x, k)
 
table.insert(x, k)
 
end
 
end
return xtable:new(x)
+
return xtable.new(x)
 
end
 
end
   
Line 70: Line 84:
 
table.insert(x, v)
 
table.insert(x, v)
 
end
 
end
return xtable:new(x)
+
return xtable.new(x)
 
end
 
end
   

Latest revision as of 11:22, 13 July 2021

Template info icon Module documentation[view] [edit] [history] [purge]

Overview

Extends the functionality of tables.

-- Author: [#OMEGA] - K2
local xtable = {}

function xtable:new(tbl)
    tbl = tbl or {}
    setmetatable(tbl, self)
    self.__index = self
    return tbl
end

function xtable:insert(value, index)
    if index ~= nil then
        table.insert(self, index, value)
    else
        table.insert(self, value)
    end
end

function xtable:insertT(value, index)
    for _, v in ipairs(value) do
        xtable.insert(self, v, index)
    end
end

function xtable:remove(value)
    local i = self:index(value)
    if i > 0 then
        table.remove(self, i)
    end
end

function xtable:removeT(value)
    for _, v in ipairs(value) do
        xtable.remove(self, v)
    end
end

function xtable:size()
    -- for cases where # operator doesnt want to work
    local i = 0
    for _, _ in ipairs(self) do
        i = i + 1
    end
    return i
end
    
function xtable:index(value)
    -- no idea why lua starts at one... 
    local i = 1
    for _, v in ipairs(self) do
        if v == value then
            return i
        end
        i = i + 1
    end
    return nil
end

function xtable:contains(value)
    for _, v in ipairs(self) do
        if v == value then return true end
    end
    return false
end

function xtable:containsT(value)
    for _, v in ipairs(value) do
        if not xtable.contains(self, v) then return false end
    end
    return true
end

function xtable:keys()
    x = {}
    for k, _ in ipairs(self) do
        table.insert(x, k)
    end
    return xtable.new(x)
end

function xtable:values()
    x = {}
    for _, v in ipairs(self) do
        table.insert(x, v)
    end
    return xtable.new(x)
end

return xtable