Halo Esports Wiki

We are currently performing extensive maintenance to this wiki and as a result there will likely be errors. Please be patient while we work to fix all problems.

READ MORE

Halo Esports Wiki
Advertisement
Halo Esports Wiki

Documentation for this module may be created at Module:Team/doc

local util_args = require('Module:ArgsUtil')
local util_table = require('Module:TableUtil')
local util_text = require('Module:TextUtil')
local util_vars = require('Module:VarsUtil')
local cache = require('mw.ext.LuaCache')
local PREFIX = 'teamnames_08_'
local SIZES = {
	short = 36,
	medium = 48,
	long = 60,
	square = 123
}

local lang = mw.getLanguage('en')

local h = {}
local p = {}

function h.getInfo(str, settings)
	if str == '' or not str then str = 'tbd' end
	settings.vars = h.getFromVariableOrCache(str:gsub('_', ' '))
	if settings.suffix then
		settings.link = settings.link or (settings.vars.link .. '/' .. settings.suffix)
	else
		settings.link = settings.link or settings.vars.link
	end
	if settings.short then
		settings.vars.short = settings.short
	end
	settings.linked = not settings.vars.exception
	return
end

function h.getFromVariableOrCache(str)
	local key = PREFIX .. 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 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 ('<span class="team"><span class="teamimage-right">%s</span><span class="teamname">%s</span></span>'):format(
		h.image(settings, size),
		settings.vars[size]
	)
end

function h.rightlinked(settings, size)
	return ('<span class="team"><span class="teamimage-right">%s</span><span class="teamname">%s</span></span>'):format(
		h.image(settings, size),
		h.linkedDisplay(settings.linked, settings.link, settings.vars[size])
	)
end

function h.left(settings, size)
	return ('<span class="team"><span class="teamname">%s</span><span class="teamimage-left">%s</span></span>'):format(
		settings.vars[size],
		h.image(settings, size)
	)
end

function h.leftlinked(settings, size)
	return ('<span class="team"><span class="teamname">%s</span><span class="teamimage-left">%s</span></span>'):format(
		h.linkedDisplay(settings.linked, settings.link, settings.vars[size]),
		h.image(settings, size)
	)
end

function h.image(settings, size, shape)
	return ('&#8288;[[File:%slogo %s.png|%spx|link=%s%s]]&#8288;'):format(
		settings.vars.file,
		shape or 'std',
		settings.size or SIZES[size],
		settings.linked and settings.link or '',
		settings.vars.class and ('|class=%s-logo-std'):format(settings.vars.class) or ''
	)
end

function p.main(frame)
	-- this should NEVER be called from Lua, only invoked from MW
	local args = util_args.merge()
	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.linkifexists(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	if not settings.vars.exists then
		return nil
	end
	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)
	settings.linked = false
	return h.image(settings, 'long')
end

function p.onlyimageshort(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	settings.linked = false
	return h.image(settings, 'short')
end

function p.onlyimagelinked(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	return h.image(settings, 'long')
end

function p.onlyimagelinkedmedium(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	return h.image(settings, 'medium')
end

function p.onlyimagelinkedshort(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	return h.image(settings, 'short')
end

function p.square(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	settings.linked = false
	return h.image(settings, 'square', 'square')
end

function p.squarelinked(str, settings)
	if not settings then settings = {} end
	h.getInfo(str, settings)
	return h.image(settings, 'square', 'square')
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
Advertisement