Documentation for this module may be created at Module:Team/doc
local util_args = require('Module:ArgsUtil')
local LOOKUP = mw.loadData('Module:Teamnames')
local lang = mw.getLanguage('en')
local SIZES = {
short = 38,
medium = 45,
long = 60,
square = 123
}
local h = {}
function h.getInfo(str, settings)
if str == '' or not str then str = 'TBD' end
settings.vars = util_args.lookupVars(str, LOOKUP, true)
if settings.vars then
settings.file = settings.vars.link
else
settings.vars = { link = str, long = str, medium = str }
if settings.short then
settings.vars.short = settings.short
else
-- if we don't have actual variables defined for this team then
-- other than 'Team ', the shortname will be the first 4 characters of the long name
settings.vars.short = lang:uc(str:gsub('Team ',''):sub(1, 4))
end
settings.file = ''
end
if settings.suffix then
settings.link = settings.vars.link .. '/' .. settings.suffix
else
settings.link = settings.vars.link
end
settings.linked = not settings.vars.exception
return
end
function h.linkedDisplay(linked, link, display)
if not linked then
return display
else
return ('[[%s|%s]]'):format(link, display)
end
end
function h.right(settings, size)
return ('[[File:%slogo std.png|%spx|link=%s]] %s'):format(
settings.file,
settings.size or SIZES[size],
settings.linked and settings.link or '',
settings.vars[size]
)
end
function h.rightlinked(settings, size)
return ('[[File:%slogo std.png|%spx|link=%s]] %s'):format(
settings.file,
settings.size or SIZES[size],
settings.linked and settings.link or '',
h.linkedDisplay(settings.linked, settings.link, settings.vars[size])
)
end
function h.left(settings, size)
return ('%s [[File:%slogo std.png|%spx|link=%s]]'):format(
settings.vars[size],
settings.file,
settings.size or SIZES[size],
settings.linked and settings.link or ''
)
end
function h.leftlinked(settings, size)
return ('%s [[File:%slogo std.png|%spx|link=%s]]'):format(
h.linkedDisplay(settings.linked, settings.link, settings.vars[size]),
settings.file,
settings.size or SIZES[size],
settings.linked and settings.link or ''
)
end
local p = {}
function p.main(frame)
-- this should NEVER be called from Lua, only invoked from MW
local args = util_args.merge(true)
if not args[1] then
return ''
end
local style = args[2] or 'rightlonglinked'
args.size = args.size and args.size:gsub('px','')
return p[style](args[1], args)
end
function p.teamlinkname(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return settings.link
end
function p.teammediumname(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return settings.vars.medium
end
function p.teamname(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return settings.vars.long
end
function p.short(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return settings.vars.short
end
function p.onlyimage(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return ('[[File:%slogo std.png|%spx|link=]]'):format(
settings.file,
settings.size or SIZES.long
)
end
function p.onlyimagelinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return ('[[File:%slogo std.png|%spx|link=%s]]'):format(
settings.file,
settings.size or SIZES.long,
settings.linked and settings.link or ''
)
end
function p.square(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return ('[[File:%slogo square.png|%spx|link=]]'):format(
settings.file,
settings.size or SIZES.square
)
end
function p.squarelinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return ('[[File:%slogo square.png|%spx|link=%s]]'):format(
settings.file,
settings.size or SIZES.square,
settings.linked and settings.link or ''
)
end
function p.mediumplainlinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.linkedDisplay(settings.linked, settings.link, settings.vars.medium)
end
function p.plainlinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.linkedDisplay(settings.linked, settings.link, settings.vars.long)
end
function p.rightshort(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.right(settings, 'short')
end
function p.rightmedium(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.right(settings, 'medium')
end
function p.rightlong(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.right(settings, 'long')
end
function p.rightshortlinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.rightlinked(settings, 'short')
end
function p.rightmediumlinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.rightlinked(settings, 'medium')
end
function p.rightlonglinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.rightlinked(settings, 'long')
end
function p.leftshort(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.left(settings, 'short')
end
function p.leftmedium(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.left(settings, 'medium')
end
function p.leftlong(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.left(settings, 'long')
end
function p.leftshortlinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.leftlinked(settings, 'short')
end
function p.leftmediumlinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.leftlinked(settings, 'medium')
end
function p.leftlonglinked(str, settings)
if not settings then settings = {} end
h.getInfo(str, settings)
return h.leftlinked(settings, 'long')
end
function p.table(str, settings)
return settings.vars
end
return p