Module:TableGenerator
Documentation for this module may be created at Module:TableGenerator/doc
local p = {}
--<table class="wikitable">
--{{#invoke: TableGenerator | generateHtmlTable | cols=3 | onlyBody=true | cell_values=Item 1, Item 20, Item 3, Item 40, Item 5 }}
--</table>
-- Creates:
-- Item 1, Item 20, Item 3
-- Item 40, 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
local cell_values = args['cell_values'] or "" -- Get the cell values argument
local values = {} -- Table to hold the individual cell values
-- Split the cell_values string by commas
for value in cell_values:gmatch("[^,]+") do
table.insert(values, value:match("^%s*(.-)%s*$")) -- Trim whitespace
end
-- 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(values) 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
-- If the value contains a " 0 " then it will be colored slightly darker
local class = ''
if value:find("0") then
class = ' class="darker"'
end
-- Add the value as a table cell with the appropriate class
result = result .. ' <td' .. class .. '>' .. 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
return p