Module:TableGenerator: Difference between revisionsGive feedback
Jump to navigation
Jump to search
Tag: Undo |
Tag: Undo |
||
| Line 2: | Line 2: | ||
--<table class="wikitable"> | --<table class="wikitable"> | ||
--{{#invoke: | --{{#invoke: TableGenerator | generateHtmlTable | cols=3 | onlyBody=true | Item 1 | Item 2 | Item 3 | Item 4 | Item 5 }} | ||
--</table> | --</table> | ||
--creates | --creates | ||
-- | --Item 1, Item 2, Item 3 | ||
-- | --Item 4, Item 5 | ||
function p. | function p.generateHtmlTable(frame) | ||
-- Get the arguments passed to the template | |||
local args = frame.args | local args = frame.args | ||
local cols = tonumber(args['cols']) or 3 | local cols = tonumber(args['cols']) or 3 -- Default number of columns is 3 | ||
local onlyBody = args['onlyBody'] == 'true' | local onlyBody = args['onlyBody'] == 'true' -- Check if onlyBody is set to true | ||
local | local cell_values = args['cell_values'] or "" -- Get the cell values argument | ||
local values = | 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 = '' | local result = '' | ||
if not onlyBody then | if not onlyBody then | ||
result = result .. '<table class="wikitable">\n' | result = result .. '<table class="wikitable">\n' | ||
end | end | ||
local count = 0 | local count = 0 | ||
for i, value in ipairs(values) do | for i, value in ipairs(values) do | ||
-- If it's the start of a new row | |||
if count % cols == 0 then | if count % cols == 0 then | ||
if count > 0 then | if count > 0 then | ||
| Line 34: | Line 39: | ||
end | end | ||
-- Add the value as a table cell | |||
result = result .. ' <td>' .. value .. '</td>\n' | result = result .. ' <td>' .. value .. '</td>\n' | ||
count = count + 1 | count = count + 1 | ||
end | end | ||
-- Close the last row if necessary | |||
if count % cols ~= 0 then | if count % cols ~= 0 then | ||
result = result .. ' </tr>\n' | result = result .. ' </tr>\n' | ||