Module:Airport destination list
| Protected | 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 edit source
{{#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')
		:css('font-size', '95%')
	-- 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
