Module:Player

From TwogPedia
Revision as of 21:26, 19 August 2022 by Couchor (talk | contribs) (Created page with "local getFlag = require('Module:Localisation').getCountryName local p = {} function p._cleanInput(name) local arrayLink local arrayName if (name or '') ~= '' then name = name:gsub("%b{}", "") name = name:gsub("%b<>", "") name = name:gsub("%b[]", "") name = mw.text.trim(name) arrayLink, arrayName = p._split(name) end return arrayLink, arrayName end function p._split(name) local link = '' if (name or '') ~= '' then local nameArray =...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

local getFlag = require('Module:Localisation').getCountryName
local p = {}

function p._cleanInput(name)
  	local arrayLink
  	local arrayName
  	if (name or '') ~= '' then
  		name = name:gsub("%b{}", "")
  		name = name:gsub("%b<>", "")
  		name = name:gsub("%b[]", "")
  		name = mw.text.trim(name)
  		arrayLink, arrayName = p._split(name)
	end

	return  arrayLink, arrayName
end

function p._split(name)
  	local link = ''
	if (name or '') ~= '' then
		local nameArray = {}
		nameArray = mw.text.split(name, '|', true)
		if (nameArray[2] or '') ~= '' then
	  		link = nameArray[1]
	  		name = nameArray[2]
	  	end
	end
  
	return link, name
end

function p._hidden_sort(name, flag, race, hidden_sort)
	if (hidden_sort or '') ~= '' then
		local hs_text = hidden_sort
		if hidden_sort == 'race' then
			hs_text = race
		elseif hidden_sort == 'name' then
			hs_text = name
		elseif hidden_sort == 'flag' then
			hs_text = flag
		end
		return tostring(mw.html.create('span')
			:css('display', 'none')
			:wikitext(hs_text))
	end

	return ''
end

function p._flag(flag)
	if (flag or '') ~= '' then
		flag = flag:lower()
		local flag_img = (require('Module:Flag'))[flag]
		if (flag_img == nil) then
			flag_img = mw.getCurrentFrame():expandTemplate{ title = 'Flag/' .. flag }
		end
		return flag_img
	end

	return ''
end

function p._race(race)
	if (race or '') ~= '' then
		local race_img = (require('Module:RaceIcon').getSmallIcon)({race})
		return race_img
	end

	return ''
end

function p._name_link(name, link)
	local text = ''

	name = name or ''
	if (link or '') ~= '' then
		if link == 'store' or link == 'false' then
			text = name
		elseif link == 'true' then
			text = '[[' .. name .. ']]'
		else
			text = '[[' .. link .. '|' .. name .. ']]'
		end
	else
		text = '[[' .. name .. ']]'
	end

	return tostring (mw.html.create('span')
		:css('white-space', 'pre')
		:wikitext(text))
end

function p._var_defines(name, link, flag, race)
	if (name or '') == '' then
		return
	end

	link = link or ''
	if link == 'store' then
		mw.ext.VariablesLua.vardefine(name .. '_page', name)
	elseif link ~= 'false' then
		mw.ext.VariablesLua.vardefine(name .. '_page', (link ~= '') and link or name)
	end

	if (flag or '') ~= '' then
		mw.ext.VariablesLua.vardefine(name .. '_flag', getFlag(flag, 'false'))
	end
  
	if (race or '') ~= '' then
		mw.ext.VariablesLua.vardefine(name .. '_race', race)
	end
end

function p._player(args)
	local output = ''
 	local playerpage
  	local playername
  	local showRace = args['showRace'] or 'true'
  	local playerdq = args['dq'] or 'false'
  
	if args['noclean'] == nill then
		playerpage, playername = p._cleanInput(args[1])
		if args['link'] then
			if args['link'] == 'true' then
				playerpage = playername
			else
				playerpage = args['link']
			end
		end
	else
		playerpage = args['link']
		playername = args[1]
	end
  
	output = output .. p._hidden_sort(playername, args['flag'], args['race'], args['hs'])
	local flag_output = p._flag(args['flag'])
	output = output .. ((flag_output ~= '') and (flag_output .. '&nbsp;') or '')
  	if showRace == 'true' then
		local race_output = p._race(args['race'])
		output = output .. ((race_output ~= '') and (race_output .. '&nbsp;') or '')
	end
  	if playerdq == 'false' then
		output = output .. p._name_link(playername, playerpage)
	else
		output = output ..'<s>' .. p._name_link(playername, playerpage) .. '</s>'
	end

	if args['novar'] == nill then
  		p._var_defines(playername, playerpage, args['flag'], args['race'])
	end

	return output
end

function p._player2(args)
	local output = ''
 	local playerpage
  	local playername
  
	if args['noclean'] == nill then
		playerpage, playername = p._cleanInput(args[1])
		if args['link'] then
			if args['link'] == 'true' then
				playerpage = playername
			else
				playerpage = args['link']
			end
		end
	else
		playerpage = args['link']
		playername = args[1]
	end

	output = output .. p._hidden_sort(playername, args['flag'], args['race'], args['hs'])
	output = output .. p._name_link(playername, playerpage)
	local race_output = p._race(args['race'])
	output = output .. ((race_output ~= '') and ('&nbsp;' .. race_output) or '')
	local flag_output = p._flag(args['flag'])
	output = output .. ((flag_output ~= '') and ('&nbsp;' .. flag_output) or '')

  	if args['novar'] == nill then
		p._var_defines(playername, playerpage, args['flag'])
	end

	return output
end

function p.player(frame)
    return p._player(require('Module:Arguments').getArgs(frame))
end

function p.player2(frame)
    return p._player2(require('Module:Arguments').getArgs(frame))
end

return p