Documentation for this module may be created at Module:TeamClass/doc
local util_args = require("Module:ArgsUtil")
local util_table = require("Module:TableUtil")
local util_vars = require("Module:VarsUtil")
local cache = require('mw.ext.LuaCache')
local lang = mw.getLanguage('en')
local p = require('Module:FileEntityAbstract'):finalExtends()
local h = {}
p.objectType = 'Team'
p.cssClass = 'team-object'
p.defaultlength = 'link'
p.imagelength = 'file'
p.filePattern = '%slogo std.png'
p.squarePattern = '%slogo square.png'
p.imagesizes = { long = 60, medium = 48, short = 36, default = 60 }
p.luaCachePrefix = 'teamnames_08_'
function p:init(str, opts)
if not str then
self.is_nil = true
return
end
if not opts then opts = {} end
local vars = self:getFromVariableOrCache(str:gsub('_', ' '))
self.vars = util_table.shallowClone(vars)
if opts.suffix then
self.linkTarget = opts.link or (self.vars.link .. '/' .. opts.suffix)
else
self.linkTarget = opts.link or self.vars.link
end
if opts.short then
self.vars.short = opts.short
end
self.linked = not self.vars.exception
end
function p:getFromVariableOrCache(str)
local key = self.luaCachePrefix .. lang:lc(str)
return util_vars.getObject(key) or h.getFromCacheOrTeamnames(str, key)
end
function h.getFromCacheOrTeamnames(str, key)
local vars = cache.get(key) or h.getFromTeamnames(str, key)
if vars.exists == nil then
vars.exists = true
end
util_vars.setObject(key, vars)
return vars
end
function h.getFromTeamnames(str, key)
local vars_init = util_args.lookupVars(str, mw.loadData('Module:Teamnames'), true)
local vars
if vars_init then
vars = util_table.shallowClone(vars_init)
vars.file = vars.link or ''
vars.exception = util_args.nilToFalse(vars.exception)
vars.exists = true
else
vars = {
link = str,
long = str,
medium = str,
short = mw.ustring.upper(mw.ustring.sub(str:gsub('Team ',''), 1, 4)),
file = '',
exception = false,
exists = false,
}
end
cache.set(key, vars)
return vars
end
function p:square(opts)
if self.is_nil then return end
return self:_file(opts, nil, self.squarePattern)
end
function p:_file(opts, link, file)
return ('[[File:%s|link=%s|%spx%s]]'):format(
file or self.filePattern:format(self:get(self.imagelength)),
link,
opts.size or self.imagesizes[opts.len or 'default'] or self.imagesizes.default,
self:getImageClass()
)
end
function p:getImageClass()
local imageClass = self:get('class')
if not imageClass then return '' end
return ('|class=%s-logo-std'):format(imageClass)
end
return p