<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://the-democratika.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3APHL_sports_team</id>
	<title>Module:PHL sports team - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://the-democratika.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3APHL_sports_team"/>
	<link rel="alternate" type="text/html" href="https://the-democratika.com/wiki/index.php?title=Module:PHL_sports_team&amp;action=history"/>
	<updated>2026-04-04T18:07:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://the-democratika.com/wiki/index.php?title=Module:PHL_sports_team&amp;diff=10157&amp;oldid=prev</id>
		<title>&gt;MarcusAbacus at 12:27, 12 January 2024</title>
		<link rel="alternate" type="text/html" href="https://the-democratika.com/wiki/index.php?title=Module:PHL_sports_team&amp;diff=10157&amp;oldid=prev"/>
		<updated>2024-01-12T12:27:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = { isalias = false }&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local constants = {	CODE_LEN = 3, SPACE = &amp;#039;&amp;amp;nbsp;&amp;#039;, SHORT = &amp;#039;short&amp;#039;, INST = &amp;#039;inst&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName, league)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = (frame.args[1] ~= nil) and frame.args or frame:getParent().args&lt;br /&gt;
		args[&amp;#039;league&amp;#039;] = args[&amp;#039;league&amp;#039;] or league or &amp;#039;collegiate&amp;#039;&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stripwhitespace(text) return text:match(&amp;quot;^%s*(.-)%s*$&amp;quot;) end&lt;br /&gt;
&lt;br /&gt;
local function load_data(args)&lt;br /&gt;
	local data_module = &amp;#039;Module:PHL sports team/&amp;#039; .. args[&amp;#039;league&amp;#039;]&lt;br /&gt;
	return mw.loadData(data_module)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_key_by_code(code, data)&lt;br /&gt;
	if (data[code] ~= nil and type(data[code]) == &amp;#039;string&amp;#039;) then&lt;br /&gt;
		p.isalias = true&lt;br /&gt;
		return data[code]&lt;br /&gt;
	elseif (string.len(code) == constants.CODE_LEN) then&lt;br /&gt;
		for k,v in pairs(data) do&lt;br /&gt;
			if v[1]==code then return k end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_icon(team, size, alt_team)&lt;br /&gt;
	local icon = &amp;#039;[[File:%s colors.svg|%s|border|%s school colors|link=]]&amp;#039;&lt;br /&gt;
	return string.format(icon, team, size or &amp;#039;11px&amp;#039;, alt_team or team)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_athlete_link(link, athl_name)&lt;br /&gt;
	if mw.title.new(link or athl_name, &amp;#039;&amp;#039;).exists == true then return string.format(&amp;#039;[[%s|%s]]&amp;#039;, link or athl_name, athl_name) else return athl_name end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function show_empty_param(param)&lt;br /&gt;
	return mw.html.create(&amp;#039;span&amp;#039;):css(&amp;#039;color&amp;#039;, &amp;#039;red&amp;#039;):cssText(&amp;#039;style&amp;#039;):wikitext(string.format(&amp;#039;Value for parameter \&amp;#039;%s\&amp;#039; not provided.&amp;#039;, param))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_link_by_evt(args, div, divLt, text, team)&lt;br /&gt;
	local evt = { bk = &amp;#039;basketball&amp;#039;, vb = &amp;#039;volleyball&amp;#039;, ft = &amp;#039;football&amp;#039; }&lt;br /&gt;
	local mRdr = require(&amp;#039;Module:Redirect&amp;#039;)&lt;br /&gt;
	evt = evt[args[2]] or evt[args[3]] or evt[args[&amp;#039;evt&amp;#039;]]&lt;br /&gt;
	if evt == nil then&lt;br /&gt;
		if type(div) == &amp;#039;number&amp;#039; and div &amp;lt; 3 then&lt;br /&gt;
			 return mRdr.getTarget(team)&lt;br /&gt;
		else return mRdr.getTarget(text) end&lt;br /&gt;
	end&lt;br /&gt;
	if (type(div) == &amp;#039;string&amp;#039;) then div = 3 end&lt;br /&gt;
	local evt_link = string.format(&amp;#039;%s %s %s&amp;#039;, text, divLt[div-2], evt)&lt;br /&gt;
	if (args[&amp;#039;yr&amp;#039;] ~= nil) then return args[&amp;#039;yr&amp;#039;] .. &amp;#039; &amp;#039; .. evt_link .. &amp;#039; team&amp;#039; end&lt;br /&gt;
	return mRdr.getTarget(evt_link) or evt_link&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_name_by_year(team, year)&lt;br /&gt;
	if not year then return team[1] end&lt;br /&gt;
	for k, v in pairs(team) do&lt;br /&gt;
		if mw.ustring.find(k, &amp;quot;%d%d%d%dthru%d%d%d%d$&amp;quot;) then&lt;br /&gt;
			local start_year, end_year = mw.ustring.match(k, &amp;quot;(%d%d%d%d)thru(%d%d%d%d)$&amp;quot;)&lt;br /&gt;
			if (tonumber(start_year) &amp;lt;= tonumber(year)) and (tonumber(year) &amp;lt;= tonumber(end_year)) then&lt;br /&gt;
				return v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return team[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_link(args, team, name, div, divLt, text)&lt;br /&gt;
	local evt_link = get_link_by_evt(args, div, divLt, team[div] or team[3], team[3])&lt;br /&gt;
	if (type(div) == &amp;#039;number&amp;#039; and div &amp;gt;= 3 and div &amp;lt;= 6) then&lt;br /&gt;
		if ((args[&amp;#039;inst&amp;#039;] or name) ~= nil or args[3] == constants.SHORT)&lt;br /&gt;
				then return string.format(&amp;#039;[[%s|%s]]&amp;#039;, evt_link or team[div], not p.isalias and team[args[&amp;#039;inst&amp;#039;]] or text)&lt;br /&gt;
			elseif (evt_link ~= nil) then return string.format(&amp;#039;[[%s|%s]]&amp;#039;, evt_link, text)&lt;br /&gt;
			else return string.format(&amp;#039;[[%s]]&amp;#039;, text) end&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&amp;#039;[[%s|%s]]&amp;#039;, evt_link or team[3], text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_link_generic(args, team, text)&lt;br /&gt;
	local mRdr = require(&amp;#039;Module:Redirect&amp;#039;)&lt;br /&gt;
	local tln = team.link or get_name_by_year(team, args[&amp;#039;season&amp;#039;] or args[&amp;#039;team&amp;#039;])&lt;br /&gt;
	local dab  = team.dab and (tln .. &amp;#039; (&amp;#039; .. team.dab .. &amp;#039;)&amp;#039;) or nil&lt;br /&gt;
	local fln = dab or tln&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;#039;name&amp;#039;]     then fln = team[args[&amp;#039;name&amp;#039;]] or dab or tln end&lt;br /&gt;
	if args[&amp;#039;season&amp;#039;]   then fln = args[&amp;#039;season&amp;#039;] .. &amp;#039; &amp;#039; .. tln .. &amp;#039; season&amp;#039;&lt;br /&gt;
	elseif args[&amp;#039;team&amp;#039;] then fln = args[&amp;#039;team&amp;#039;] .. &amp;#039; &amp;#039; .. tln .. &amp;#039; team&amp;#039;&lt;br /&gt;
	else fln = mRdr.getTarget(fln) end&lt;br /&gt;
	return string.format(&amp;#039;[[%s|%s]]&amp;#039;, fln or dab or tln, text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local data = load_data(args)&lt;br /&gt;
	local in_team = stripwhitespace(args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	if (in_team:match(&amp;#039;^{{{.*}}}$&amp;#039;) ~= nil) then return show_empty_param(in_team) elseif (in_team == &amp;#039;&amp;#039; or nil) then return &amp;#039;—&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	local in_div = stripwhitespace(args[2] or &amp;#039;&amp;#039;)&lt;br /&gt;
	local in_name = args[&amp;#039;name&amp;#039;]&lt;br /&gt;
	local key = get_key_by_code(in_team, data)&lt;br /&gt;
	local team = data[key]&lt;br /&gt;
	if (team == nil) then return tostring(mw.html.create(&amp;#039;span&amp;#039;):css(&amp;#039;color&amp;#039;, &amp;#039;red&amp;#039;):cssText(&amp;#039;style&amp;#039;):wikitext(string.format(&amp;#039;Invalid team: %s&amp;#039;, in_team))) end&lt;br /&gt;
	&lt;br /&gt;
	local out&lt;br /&gt;
	local divLt = { &amp;quot;men&amp;#039;s&amp;quot;, &amp;quot;women&amp;#039;s&amp;quot;, &amp;quot;boys&amp;#039;&amp;quot;, &amp;quot;girls&amp;#039;&amp;quot; }&lt;br /&gt;
	&lt;br /&gt;
	if (in_div ~= constants.SHORT) then&lt;br /&gt;
		local div = { inst = 2, men = 3, women = 4, junior = 5, boys = 5, girls = 6 }&lt;br /&gt;
		in_div = div[in_div] or tonumber(in_div:match(&amp;#039;[2-6]&amp;#039;) or &amp;#039;3&amp;#039;)&lt;br /&gt;
		if (args[3] == constants.INST or args[&amp;#039;inst&amp;#039;] ~= nil or in_div == 2) then out = p.isalias and team[in_team] or team[div[&amp;#039;inst&amp;#039;]]&lt;br /&gt;
			elseif (args[3] == constants.SHORT) then out = team[7] or key or in_team&lt;br /&gt;
			else out = in_name or team[in_div] end&lt;br /&gt;
		if (out == nil) then return mw.html.create(&amp;#039;span&amp;#039;):css(&amp;#039;color&amp;#039;, &amp;#039;red&amp;#039;):cssText(&amp;#039;style&amp;#039;):wikitext(&amp;#039;No &amp;#039; .. divLt[in_div-2] .. &amp;#039; team&amp;#039;) end&lt;br /&gt;
	else&lt;br /&gt;
		out = team[7] or key or in_team&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	out = out:gsub(&amp;quot;-&amp;quot;, &amp;quot;&amp;amp;ndash;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if yesno(args[&amp;#039;add_link&amp;#039;] or &amp;#039;y&amp;#039;) then&lt;br /&gt;
		out = add_link(args, team, in_name, in_div, divLt, out)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args[&amp;#039;icon&amp;#039;] or &amp;#039;y&amp;#039;) then&lt;br /&gt;
		local icon = get_icon(key or in_team, args[&amp;#039;iconsize&amp;#039;])&lt;br /&gt;
		out = yesno(args[&amp;#039;rt&amp;#039;] or &amp;#039;n&amp;#039;) and out .. constants.SPACE .. icon or icon .. constants.SPACE .. out&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._rt(args)&lt;br /&gt;
	args[&amp;#039;rt&amp;#039;] = &amp;#039;y&amp;#039;&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._name(args)&lt;br /&gt;
	args[&amp;#039;icon&amp;#039;] = &amp;#039;n&amp;#039;&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._color(args)&lt;br /&gt;
	local data = load_data(args)&lt;br /&gt;
	local in_team = stripwhitespace(args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	local no_img = string.format(&amp;#039;[[File:No image.svg|%s|link=]]&amp;#039;, args[&amp;#039;size&amp;#039;] or &amp;#039;11px&amp;#039;)&lt;br /&gt;
	local note = &amp;#039;&amp;#039;&lt;br /&gt;
	if in_team and in_team:match(&amp;#039;[%*]$&amp;#039;) then&lt;br /&gt;
		note = mw.ustring.gsub(in_team, &amp;#039;^(.-)([%*]*)$&amp;#039;, &amp;#039;%2&amp;#039;)&lt;br /&gt;
		in_team = mw.ustring.gsub(in_team, &amp;#039;^(.-)([%*]*)$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if (in_team:match(&amp;#039;^{{{.*}}}$&amp;#039;) ~= nil) then&lt;br /&gt;
		return show_empty_param(in_team) .. note&lt;br /&gt;
	elseif (in_team == &amp;#039;&amp;#039; or nil) then return no_img .. note end&lt;br /&gt;
		&lt;br /&gt;
	local key = get_key_by_code(in_team, data)&lt;br /&gt;
	if ((data[in_team] or data[key]) == nil) then&lt;br /&gt;
		return no_img .. note&lt;br /&gt;
	end&lt;br /&gt;
	return get_icon(key or in_team, args[&amp;#039;size&amp;#039;], args[2]) .. note&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._generic(args)&lt;br /&gt;
	local data = load_data(args)&lt;br /&gt;
	local code, name, out = stripwhitespace(args[1] or &amp;#039;&amp;#039;), args[&amp;#039;name&amp;#039;]&lt;br /&gt;
	local team = data[code]&lt;br /&gt;
	&lt;br /&gt;
	if (code:match(&amp;#039;^{{{.*}}}$&amp;#039;) ~= nil) then return show_empty_param(code) elseif (code == &amp;#039;&amp;#039; or nil) then return &amp;#039;—&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	if type(team) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		local alias = mw.text.split(team, &amp;#039;%s*|%s*&amp;#039;)&lt;br /&gt;
		team = data[alias[1]]&lt;br /&gt;
		name = name or alias[2]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not team then return mw.html.create(&amp;#039;span&amp;#039;):css(&amp;#039;color&amp;#039;, &amp;#039;red&amp;#039;):cssText(&amp;#039;style&amp;#039;):wikitext(string.format(&amp;#039;Invalid team: %s&amp;#039;, code)) end&lt;br /&gt;
	if args[2] == constants.SHORT then out = team[2] or code&lt;br /&gt;
		elseif name then out = team[name] or name&lt;br /&gt;
		else out = get_name_by_year(team, args[&amp;#039;season&amp;#039;] or args[&amp;#039;team&amp;#039;] or args[&amp;#039;yr&amp;#039;])&lt;br /&gt;
	end&lt;br /&gt;
	return add_link_generic(args, team, out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._athlete(args)&lt;br /&gt;
	local athl_1 = args[&amp;#039;athl&amp;#039;]&lt;br /&gt;
	local athl_2 = args[&amp;#039;athl2&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	if athl_1 == nil then return mw.html.create(&amp;#039;span&amp;#039;):css(&amp;#039;color&amp;#039;, &amp;#039;red&amp;#039;):cssText(&amp;#039;style&amp;#039;):wikitext(&amp;#039;Invalid athlete: no value&amp;#039;) end&lt;br /&gt;
	local link = get_athlete_link(args[&amp;#039;link&amp;#039;], athl_1)&lt;br /&gt;
	&lt;br /&gt;
	if (athl_2 ~= nil) then link = link .. &amp;#039; and &amp;#039; .. get_athlete_link(args[&amp;#039;link2&amp;#039;], athl_2) end&lt;br /&gt;
	&lt;br /&gt;
	local showicon = yesno(args[&amp;#039;icon&amp;#039;])&lt;br /&gt;
	local sport = args[&amp;#039;sp&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	if (showicon) then args[3] = constants.SHORT end&lt;br /&gt;
	args[&amp;#039;add_link&amp;#039;] = &amp;#039;n&amp;#039;&lt;br /&gt;
	local lbl = p._name(args)&lt;br /&gt;
	if (sport ~= nil) then&lt;br /&gt;
		lbl = string.format(&amp;#039;%s&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size:90%%;&amp;quot;&amp;gt;(%s,&amp;amp;nbsp;%s)&amp;lt;/span&amp;gt;&amp;#039;, link, lbl, string.lower(sport))&lt;br /&gt;
	else lbl = string.format(&amp;#039;%s&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size:90%%;&amp;quot;&amp;gt;(%s)&amp;lt;/span&amp;gt;&amp;#039;, link, lbl)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if (showicon) then&lt;br /&gt;
		args[2] = args[1]&lt;br /&gt;
		return p._color(args) .. constants.SPACE .. lbl&lt;br /&gt;
	else return lbl&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._athlete_bc(args)&lt;br /&gt;
	if (args[&amp;#039;athl&amp;#039;] == nil) then&lt;br /&gt;
	    -- reassign arguments for backward compatibility --&lt;br /&gt;
	    args[&amp;#039;athl&amp;#039;] = args[2]&lt;br /&gt;
		args[2] = args[3] or &amp;#039;&amp;#039;&lt;br /&gt;
		args[3] = args[4] or &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return p._athlete(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.main = makeInvokeFunc(&amp;#039;_main&amp;#039;)&lt;br /&gt;
p.rt = makeInvokeFunc(&amp;#039;_rt&amp;#039;)&lt;br /&gt;
p.name = makeInvokeFunc(&amp;#039;_name&amp;#039;)&lt;br /&gt;
p.color = makeInvokeFunc(&amp;#039;_color&amp;#039;)&lt;br /&gt;
p.pba = makeInvokeFunc(&amp;#039;_generic&amp;#039;, &amp;#039;PBA&amp;#039;)&lt;br /&gt;
p.mpbl = makeInvokeFunc(&amp;#039;_generic&amp;#039;, &amp;#039;MPBL&amp;#039;)&lt;br /&gt;
p.athlete = makeInvokeFunc(&amp;#039;_athlete_bc&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>&gt;MarcusAbacus</name></author>
	</entry>
</feed>