Editing Module:TableGenerator

Warning: You are not logged in. Once you make an edit, a temporary account will be created for you. Learn more. Log in or create an account to continue receiving notifications after this account expires, and to access other features.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
local p = {}
local p = {}


--<table class="wikitable">
--{{#invoke: TableGenerator | generateWikiTable | cols=3 | Item 1 | Item 2 | Item 3 | Item 4 | Item 5 }}
--{{#invoke: TableGenerator | generateHtmlTable | cols=3 | only_body=true | cell_values=Item 1, Item 20, Item 3, Item 40, Item 5 }}
--creates
--</table>
--Item 1, Item 2, Item 3
 
--Item 4, item 5
-- Creates:
function p.generateWikiTable(frame)
-- Item 1, Item 20, Item 3
-- Item 40, Item 5
function p.generateHtmlTable(frame)
     -- Get the arguments passed to the template
     -- 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
     local cols = tonumber(args['cols']) or 3  -- Default number of columns is 3
     local only_body = args['only_body'] == 'true'  -- Check if only_body is set to true
 
     local class = args['class']
     -- Initialize the table structure
    local class_is_statbox = class == 'Statbox_hero'
     local result = '{| class="wikitable"\n'
    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
     local count = 0
     for value in cell_values:gmatch("[^,]+") do
     for i, value in ipairs(args) do
         table.insert(values, value:match("^%s*(.-)%s*$"))  -- Trim whitespace
         -- If the first argument is 'cols', skip it
        if i > 1 then
            -- If it's the start of a new row
            if count % cols == 0 then
                result = result .. '|-\n'
            end
 
            -- Add the value as a table cell
            result = result .. '| ' .. value .. '\n'
            count = count + 1
        end
     end
     end
      
      
    -- Close any unfilled row
    if count % cols ~= 0 then
        result = result .. '|-\n'
    end
    -- Close the table
    result = result .. '|}'
    return result
end
--{{#invoke: TableGenerator | generateHtmlTable | cols=3 | Item 1 | Item 2 | Item 3 | Item 4 | Item 5 }}
--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
     -- Initialize the HTML table structure
     -- Initialize the HTML table structure
     local result = ''
     local result = '<table class="wikitable">\n'
   
    if not only_body then
        result = result .. '<table class="wikitable">\n'
    end
      
      
     local count = 0
     local count = 0
     for i, value in ipairs(values) do
     for i, value in ipairs(args) do
         -- If it's the start of a new row
         -- If the first argument is 'cols', skip it
        if count % cols == 0 then
        if i > 1 then
             if count > 0 then
            -- If it's the start of a new row
            if count % cols == 0 then
                result = result .. '  <tr>\n'
            end
 
            -- Add the value as a table cell
            result = result .. '    <td>' .. value .. '</td>\n'
            count = count + 1
 
            -- Close the row if we reached the end of a column set
             if count % cols == 0 then
                 result = result .. '  </tr>\n'
                 result = result .. '  </tr>\n'
             end
             end
            result = result .. '  <tr>\n'
         end
         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
     end
      
      
     -- Close the last row if necessary
     -- Close any unfilled row
     if count % cols ~= 0 then
     if count % cols ~= 0 then
         result = result .. '  </tr>\n'
         result = result .. '  </tr>\n'
     end
     end


     if not only_body then
     -- Close the table
        result = result .. '</table>'
    result = result .. '</table>'
    end


     return result
     return result
Please note that all contributions to The Deadlock Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see Deadlock:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)
Preview page with this template

Page included on this page: