Module:National squad

-- This module implements Template:National squad and -- Template:National squad no numbers to avoid articles being added to -- Category:Pages where template include size is exceeded -- when the template is used many times. local p = {}

function p.main(frame) local nonumbers = frame.args['nonumbers'] local args = frame:getParent.args local country = args.country or '' local coach_label = args.coach_type or 'Coach' local comp = args.comp or '' local name = args.name or '' local gender = (args.gender or ) == 'female' and ' women\'s' or  local titlestyle = 'background-color:' .. (args.bg or 'transparent') .. ';'		.. 'color:' .. (args.fg or 'inherit') .. ';' 		.. 'border: 1px solid ' .. (args.bordercolor or '#aaa') .. ';'	local image = frame:expandTemplate{ title = 'flagicon', args = {args.country or 'none', args.flagvar or '', size = '50px'} }

local ospan = '' local cspan = ' ' local title = string.format('%s%s%s – %s%s%s', 		args['team link'] or (country .. gender .. ' national football team'), 		ospan, args.title or country .. ' squad', cspan, 		args['comp link'] or comp, ospan, comp, cspan) local haspos = false -- Tracking and preview warnings local knownargs = {['bg']=1, ['fg']=1, ['bordercolor']=1, ['coach']=1, ['coach_type']=1, ['comp']=1, ['comp link']=1, ['country']=1, ['flagvar']=1, ['gender']=1, ['list']=1, ['name']=1, ['note']=1, ['team link']=1, ['title']=1} local badargs = {} for k, v in pairs(args) do		if knownargs[k] then elseif type(k) == 'string' then local n = tonumber(k:match('^p(%d+)$') or k:match('pos(%d+)') or '0') if k:match('^p%d+$') and n >= 1 and n <= 40 then elseif nonumbers and (k:match('^pos%d+$') and n >= 1 and n <= 40) then if v and v ~= '' then haspos = true end elseif v and v ~= '' then table.insert(badargs, k)			end elseif v and v ~= '' then table.insert(badargs, k)		end end local preview, tracking = ,  if #badargs > 0 then for k, v in pairs(badargs) do			if v == '' then	v = ' '	end v = mw.ustring.gsub(v, '[^%w\-_ ]', '?') preview = preview .. ' Warning: ' .. 'Page using national squad with unknown parameter "' .. v 				.. '" (this message is shown only in preview). '			tracking = tracking .. ''		end if frame:preprocess( "" ) ~= "" then preview = '' end end if (args['title'] == nil and args['team link'] == nil and args.country == nil) or args.comp == nil then tracking = tracking .. ''	end -- if tracking ~=  and mw.title.getCurrentTitle.namespace > 0 then tracking =  end local list1 = args.list or '' if list1 == '' then for k = 1,40 do if args['p' .. k] and args['p' .. k] ~= '' then local n = nonumbers and (args['pos' .. k] or '') or tostring(k) if n ~= '' or haspos == true then list1 = list1 .. string.format(						'* %s %s  \n',						n, args['p' .. k]) else list1 = list1 .. string.format(						'* %s  \n', args['p' .. k]) end end end if args['coach'] and args['coach'] ~= '' then list1 = list1 .. string.format(				'* %s: %s ',				coach_label, args['coach']) end end local list3 = args.note and (' ' .. args.note .. ' ') or nil return require('Module:Navbox')._navbox({		name = name ~= '' and name or nil,		titlestyle = titlestyle, 		listclass = 'hlist', bodyclass = 'vcard', titleclass = 'fn org',		image = image, title = title, list1 = list1, list3 = list3	}) .. tracking .. preview end

return p