| Latest revision |
Your text |
| Line 1: |
Line 1: |
| local p = {} | | local p = {} |
|
| |
|
| --<table class="wikitable">
| | function p.countArgs(frame) |
| --{{#invoke: TableGenerator | generateHtmlTable | cols=3 | only_body=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 args = frame.args |
| local cols = tonumber(args['cols']) or 3 -- Default number of columns is 3 | | return args[1] |
| local only_body = args['only_body'] == 'true' -- Check if only_body is set to true
| |
| local class = args['class']
| |
| local class_is_statbox = class == 'Statbox_hero'
| |
| 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 only_body 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_str = ''
| |
| if (class_is_statbox) then
| |
| if value:find(" 0[^%.]") then
| |
| class_str = ' class="darker"'
| |
| end
| |
| else
| |
| if (class ~= nil) then
| |
| class_str = ' class="' .. class .. '"'
| |
| end
| |
| end
| |
| | |
| -- Add the value as a table cell with the appropriate class
| |
| result = result .. ' <td' .. class_str .. '>' .. 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 only_body then
| |
| result = result .. '</table>'
| |
| end
| |
| | |
| return result
| |
| end | | end |
|
| |
|
| return p | | return p |