Module:Aligned table
Appearance
![]() | This Lua module is used on 14,000+ pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
Implements {{Aligned table}}
-- This module implements {{aligned table}}
local p = {}
function p.table(frame)
local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args
local entries = {}
local colclass = {}
local colstyle = {}
local cols = tonumber(args['cols']) or 2
local class = args['class'] or ''
local style = args['style'] or ''
local leftright = args['leftright'] or ''
local fullwidth = args['fullwidth'] or ''
if leftright ~= '' then
colstyle[1] = 'text-align:left;'
colstyle[2] = 'text-align:right;'
end
if fullwidth ~= '' then
style = 'width:100%; border-collapse: collapse; border-spacing: 0px; border:none;' .. style
end
if class ~= '' then
class = ' class="' .. class .. '"'
end
if style ~= '' then
style = ' style="' .. style .. '"'
end
for i = 1,cols do
colclass[ i ] = colclass[ i ] or ''
colstyle[ i ] = colstyle[ i ] or ''
if args['align' .. tostring(i)] then
colstyle[ i ] = 'text-align:' .. args['align' .. tostring(i)] .. ';' .. colstyle[ i ]
end
if args['nowrap' .. tostring(i)] and args['nowrap' .. tostring(i)] ~= '' then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
end
if args['style' .. tostring(i)] then
colstyle[ i ] = colstyle[ i ] .. args['style' .. tostring(i)]
end
if args['class' .. tostring(i)] then
colclass[ i ] = args['class' .. tostring(i)]
end
end
for k, v in pairs( args ) do
if type( k ) == 'number' then
i = math.fmod(k-1,cols) + 1
entries[ k ] = '<td class="' .. colclass[i] .. '" style="' .. colstyle[i] .. '">' .. v .. '</td>'
if i == 1 then
entries[ k ] = '<tr style="vertical-align:top">' .. entries[ k ]
end
if i == cols then
entries[ k ] = entries[k] .. '</tr>'
end
end
end
return '<table' .. class .. style ..'>\n' .. table.concat( entries, '\n' ) .. '\n</table>'
end
return p