Module:Airport destination list/sandbox explained

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