Module:TableGenerator

Revision as of 22:00, 14 September 2024 by Sur (talk | contribs)

Documentation for this module may be created at Module:TableGenerator/doc

local p = {}

--<table class="wikitable">
--{{#invoke: TableGenerator | generateHtmlTable | cols=3 | onlyBody=true | Item 1 | Item 2 | Item 3 | Item 4 | Item 5 }}
--</table>

--creates

--Item 1, Item 2, Item 3
--Item 4, item 5
function p.generateHtmlTable(frame)
    -- Get the arguments passed to the template
    local args = frame.args
    local cols = tonumber(args['cols']) or 3  -- Default number of columns is 3
    local onlyBody = args['onlyBody'] == 'true'  -- Check if onlyBody is set to true
    
    -- Initialize the HTML table structure
    local result = ''
    
    if not onlyBody then
        result = result .. '<table class="wikitable">\n'
    end
    
    local count = 0
    for i, value in ipairs(args) do
        -- If it's the start of a new row
        if count % cols == 0 then
            if count > 0 then
                result = result .. '  </tr>\n'
            end
            result = result .. '  <tr>\n'
        end

        -- Add the value as a table cell
        result = result .. '    <td>' .. value .. '</td>\n'
        count = count + 1
    end
    
    -- Close the last row if necessary
    if count % cols ~= 0 then
        result = result .. '  </tr>\n'
    end

    if not onlyBody then
        result = result .. '</table>'
    end

    return result
end

--Used for converting a list to a parameter list without resorting to string parser functions
--{{#invoke:TableGenerator|replaceCommasWithPipes|Your,string,with,commas}}
--outputs
--Your|string|with|commas
function p.replaceCommasWithPipes(frame)
    -- Get the input string from the template arguments
    local inputString = frame.args[1] or ""
    
    -- Replace all commas with pipes
    local outputString = inputString:gsub(",", "|")
    
    return outputString
end

return p