Module:Team ID

local p = {} local cargo = mw.ext.cargo local caching = require( 'Module:Cache' ).auto local fileExists = require( 'Module:FileExists' ) local getArgs = require( 'Module:Arguments' ).getArgs local tooltip = require( 'Module:Tooltip' )._main

local specials = { ["tbd"] = { "TBD", "To be decided" }, ["tba"] = { "TBD", "To be announced" }, ["grp. s."] = { "Grp. S.", "Group Stage (W/D/L)" }, ["grp.s."] = { "Grp. S.", "Group Stage (W/D/L)" }, ["grp"] = { "Grp. S.", "Group Stage (W/D/L)" }, ["league"] = { "League Play", "League Play (W/D/L)" }, ["league play"] = { "League Play", "League Play (W/D/L)" }, }

function p.main( frame ) local args = getArgs(frame, {   wrappers = {      'Template:Team ID'    }  }) return caching(p._main, args, 'teamid') end

function p._main( args ) assert( args and args[1], 'No team name entered' ) -- Check if a special rule exists for this input. local special = specials[string.lower(args[1])] if special then local values = special return tostring(tooltip( { values[1], values[2] } )) else local icon = 'Team icon Default.png' local name = args[1] -- Attempt to get the data through Cargo. -- _pageName matches are prioritized over matches in the names table. -- If multiple teams have the same name in their names table the first one is used. local cargo_info = cargo.query( 'professional_teams', 'icon, name', { where='_pageName="' .. args[1] .. '"', groupBy='_pageID' } )[1] if not cargo_info then cargo_info = cargo.query( 'professional_teams', 'icon, name', { where='names HOLDS "' .. args[1] .. '"', groupBy='_pageID' } )[1] end if cargo_info then if cargo_info['icon'] ~= '' or nil then icon = cargo_info['icon'] end if cargo_info['name'] ~= '' or nil then name = cargo_info['name'] end else if fileExists('File:Team icon ' .. args[1] .. '.png') then icon = 'Team icon ' .. args[1] .. '.png' end end

return ' ' .. name .. ' ' end end

return p