This Lua module is used on approximately 4,900 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 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 {{Airport destination list}}.
Usage
{{#invoke:Airport destination list|table}}
local p = {}
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
function p.table(frame)
local args = (frame.args[1] ~= nil) and frame.args or frame:getParent().args
local cols
if isnotempty(args['4thcoltitle']) and isnotempty(args['3rdcoltitle']) then
cols = 4
elseif isnotempty(args['3rdcoltitle']) then cols = 3
else cols = 2
end
-- compute the maximum cell index
local cellcount = 0
for k, v in pairs( args ) do
if type( k ) == 'number' and isnotempty(v) then
cellcount = math.max(cellcount, k)
end
end
-- compute the number of rows
local rows = math.ceil(cellcount / cols)
-- create the root table
local root = mw.html.create('table')
root
:addClass('wikitable')
:addClass('sortable')
-- add the header row
local row = root:tag('tr')
local cell= row:tag('th')
cell:wikitext('Airlines')
cell= row:tag('th')
cell:addClass('unsortable')
cell:wikitext('Destinations')
if (isnotempty(args['3rdcoltitle'])) then
cell= row:tag('th')
cell:css('width','10%')
if (isnotempty(args['3rdcolunsortable'])) then
cell:addClass('unsortable')
end
cell:wikitext(args['3rdcoltitle'])
end
if (isnotempty(args['4thcoltitle'])) then
cell= row:tag('th')
if (isnotempty(args['4thcolunsortable'])) then
cell:addClass('unsortable')
end
cell:wikitext(args['4thcoltitle'])
end
-- loop over rows
for j=1,rows do
row = root:tag('tr')
for i=1,cols do
cell= row:tag('td')
if (i > 2) then cell:css('text-align','center') end
cell:wikitext(args[cols*(j - 1) + i] or '')
end
end
-- return the root table
return tostring(root)
end
return p