No edit summary |
No edit summary |
||
| Line 5: | Line 5: | ||
local wat = {} | local wat = {} | ||
local | local function shallowcopy(orig) | ||
local orig_type = type(orig) | |||
local copy | |||
if orig_type == 'table' then | |||
copy = {} | |||
for orig_key, orig_value in pairs(orig) do | |||
copy[orig_key] = orig_value | |||
end | |||
else -- number, string, boolean, etc | |||
copy = orig | |||
end | |||
return copy | |||
end | |||
local function parseCSV(csvString) -- csvString is one line | local function parseCSV(csvString) -- csvString is one line | ||
result = {} | local result = {} | ||
for value in string.gmatch(csvString, '([^,]+)') do | for value in string.gmatch(csvString, '([^,]+)') do | ||
table.insert(result, value) | table.insert(result, value) | ||
| Line 16: | Line 29: | ||
function p.process(frame) | function p.process(frame) | ||
local csvText = frame.args[1] or "" | local csvText = frame.args[1] or "" | ||
-- Put all the CSV lines into an array | -- Put all the CSV lines into an array | ||
for line in csvText:gmatch("[^\r\n]+") do | for line in csvText:gmatch("[^\r\n]+") do | ||
local parsedLine = parseCSV(line) | |||
if #parsedLine > 0 then | |||
parsedArray[#parsedArray+1] = shallowcopy(parsedLine) | |||
end | |||
end | end | ||
Revision as of 02:18, 4 June 2024
Documentation for this module may be created at Module:ModuleLevelTable/doc
local p = {}
local parsedArray = {}
local wat = {}
local function shallowcopy(orig)
local orig_type = type(orig)
local copy
if orig_type == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[orig_key] = orig_value
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
local function parseCSV(csvString) -- csvString is one line
local result = {}
for value in string.gmatch(csvString, '([^,]+)') do
table.insert(result, value)
end
return result
end
function p.process(frame)
local csvText = frame.args[1] or ""
-- Put all the CSV lines into an array
for line in csvText:gmatch("[^\r\n]+") do
local parsedLine = parseCSV(line)
if #parsedLine > 0 then
parsedArray[#parsedArray+1] = shallowcopy(parsedLine)
end
end
if #parsedArray == 0 then
return "Error: ModuleLevelTable had no results. Report this to Discord!"
end
-- IMPORTANT! This assumes data is structured EXACTLY in this order!
--1 Nonsensical invoking ID
--2 |?Module:Name
--3 |?Module:Rarity
--4 |?Module:Socket
--5 |?Module:Class
--6 |?Module:MaxEnhancementLevel
--7 |?Module:CapacityCost0
--8 |?Module:ExclusiveCategory
--9 |?Module:Effect0
--10 |?Module:Effect1
--11 |?Module:Effect2
--12 |?Module:Effect3
--13 |?Module:Effect4
--14 |?Module:Effect5
--15 |?Module:Effect6
--16 |?Module:Effect7
--17 |?Module:Effect8
--18 |?Module:Effect9
--19 |?Module:Effect10
--local tabCount = parsedArray[1][6] + 1 --Un-upgraded is level 0, so max level + 1
local tabber = [[
<tabber>
|-|First Tab Title=
First tab content goes here.
|-|Second Tab Title=
Second tab content goes here.
|-|Third Tab Title=
Third tab content goes here.
</tabber>
]]
--local wat = ""
--for key, value in ipairs(parsedArray[1]) do
-- wat = wat .. "\n" .. "Key:" .. key .. "Value:" .. value
--end
return parsedArray[1][1]
end
return p