Template:ModuleTableCompareLevels: Difference between revisions

Template page
m (Software2 moved page ModuleTestPageMain to ModuleTable CompareLevels without leaving a redirect)
No edit summary
Line 1: Line 1:
<!-- IF YOU ADD/REMOVE PROPERTIES HERE, MAKE SURE YOU CHANGE THEM IN THE CSV TEMPLATE AND LUA MODULE AS WELL -->
local p = {}
{{#invoke:ModuleLevelTable|process|
 
{{#ask:
local parsedArray = {}
[[-Has subobject::ModuleTestPage]]
 
|?Module:Name
local function addToParsedArray(parsedTable)
|?Module:Rarity
    parsedArray[#parsedArray+1] = {}
|?Module:Socket
    for i=1,#parsedTable do
|?Module:Class
        parsedArray[#parsedArray][i] = parsedTable[i]
|?Module:MaxEnhancementLevel
    end
|?Module:CapacityCost0
end
|?Module:ExclusiveCategory
 
|?Module:Effect0
local function parseCSV(csvString) -- csvString is one line
|?Module:Effect1
    local result = {}
|?Module:Effect2
    for value in string.gmatch(csvString, '([^,]+)') do
|?Module:Effect3
        table.insert(result, value)
|?Module:Effect4
    end
|?Module:Effect5
    return result
|?Module:Effect6
end
|?Module:Effect7
 
|?Module:Effect8
local function generateTabberLine(element_level)
|?Module:Effect9
    local tabTitle = "|-|Level " .. tostring(element_level) .. "\n"
|?Module:Effect10
    local tabContent = "This is the content of the tab.\n"
|format=template
    return tabTitle .. tabContent
|template=Module Level Table CSV
end
|sep=,  
 
|link=none
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
            addToParsedArray(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
   
    return #parsedArray
 
    local tabCount = parsedArray[1][6] + 1 --Un-upgraded is level 0, so max level + 1
   
    local tabberHeadder = [[
        <tabber>
    ]]
 
    local tabberContent = ""
    for i = 0, tabCount do
        tabberContent = tabberContent .. generateTabberLine(i)
    end
 
    local tabberFooter = [[
        </tabber>
    ]]
   
    return tabberHeadder .. tabberContent .. tabberFooter
end
 
 
 
return p
 
 
--Debug lines
-- local csvText = "ModuleTestPage#_9a88490adf412a0c81fe3a2fa2d78e3c,Test Module Name,Transcendent,Almandine,High-Power Rounds,10,6,Resource,,,,,,,,,,"

Revision as of 15:20, 4 June 2024

local p = {}

local parsedArray = {}

local function addToParsedArray(parsedTable)

   parsedArray[#parsedArray+1] = {}
   for i=1,#parsedTable do
       parsedArray[#parsedArray][i] = parsedTable[i] 
   end

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

local function generateTabberLine(element_level)

   local tabTitle = "|-|Level " .. tostring(element_level) .. "\n"
   local tabContent = "This is the content of the tab.\n"
   return tabTitle .. tabContent

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
           addToParsedArray(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
   
   return #parsedArray
   local tabCount = parsedArray[1][6] + 1 --Un-upgraded is level 0, so max level + 1
   
   local tabberHeadder = [[

"" for i = 0, tabCount do tabberContent = tabberContent .. generateTabberLine(i) end local tabberFooter = [[

   ]]
   
   return tabberHeadder .. tabberContent .. tabberFooter

end


return p


--Debug lines -- local csvText = "ModuleTestPage#_9a88490adf412a0c81fe3a2fa2d78e3c,Test Module Name,Transcendent,Almandine,High-Power Rounds,10,6,Resource,,,,,,,,,,"