Permanently protected module
From Wikipedia, the free encyclopedia


local p = {}



local function isnotempty(s)

	return s and s:match('%S')

end



function p.main(frame)

	local player = {}

	local coach = {}

	local pargs = frame:getParent().args

	local tracking = ''

	local iargs = {}

	local pmax = tonumber(frame.args'pmax' or '40') or 40

	local cmax = tonumber(frame.args'cmax' or '30') or 30

	for k,v in pairs(pargs) do

		if type(k) == 'string' and isnotempty(v) then

			if k:match('^team%d+$') then

				local num = mw.ustring.gsub(k,'^team(%d+)$','%1')

				table.insert(player, {tonumber(num) or 0, pargs'years' .. num or '', v})

			elseif k:match('^cteam%d+$') then

				local num = mw.ustring.gsub(k,'^cteam(%d+)$','%1')

				table.insert(coach, {tonumber(num) or 0, pargs'cyears' .. num or '', v})

			end

		end

	end

	

	table.sort(player, function (a, b) return a1 < b1 end)

	table.sort(coach, function (a, b) return a1 < b1 end)

	

	local i = 1

	if #player > 0 then

		iargs'header' .. i = frame.args'pheader' or 'As player:'

		i = i + 1

		for k,v in ipairs(player) do

			if v2 ~= '' then iargs'label' .. i = v2 end

			if v3 ~= '' then iargs'data' .. i = v3 end

			i = i + 1

		end

	end

	if #coach > 0 then

		iargs'header' .. i = frame.args'cheader' or 'As coach:'

		i = i + 1

		for k,v in ipairs(coach) do

			if v2 ~= '' then iargs'label' .. i = v2 end

			if v3 ~= '' then iargs'data' .. i = v3 end

			i = i + 1

		end

	end

	

	if i > 1 then

		iargs'child' = 'yes'

		iargs'labelstyle' = 'font-weight: normal;' .. (frame.args'yearstyle' or '')

		iargs'headerstyle' = 'line-height: 1.2em;text-align: left;' .. (frame.args'headerstyle' or '')

		iargs'datastyle' = 'line-height: 1.2em;text-align: left;' .. (frame.args'teamstyle' or '')

		if #player > pmax then

			tracking = tracking .. (frame.args'pmaxcat' or '')

		end

		if #coach > cmax then

			tracking = tracking .. (frame.args'cmaxcat' or '')

		end

		return (frame.args'title' or 'Career history') .. require('Module:Infobox').infobox(iargs) .. tracking

	end

	

	return tracking

end



return p