Module:Player list

From nUSA Wiki Archive
Jump to navigation Jump to search

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

--- Functions for making lists of players
-- @require Dev:Links
-- @require Module:Player link
-- @require Module:RobloxUrls
-- @require Module:Utils
-- @require Module:DPL
-- <nowiki>
local links = require("Dev:Links")
local player_link = require("Module:Player link")
local roblox_urls = require("Module:RobloxUrls")
local utils = require("Module:Utils")
local dpl = require("Module:DPL")

local p = {}

--- Create an unordered list of players with links.
-- This function makes an attempt to avoid exceeding the expensive function limit.
-- @param {table} args A table with player names as values.
-- @return {string} Wikitext for list of players.
function p._player_list(args, forceDPL)
	forceDPL = true -- temporary
	args = utils.trim_positional_arguments(args)
	local items = {}
	
	if #args <= 90 and not forceDPL then
		for _, name in ipairs(args) do
			local item = "* " .. player_link._player_link{player = name}
			table.insert(items, item)
		end
	else
		local pages = dpl.list({category="Player pages"})
		local page_set = utils.array_to_set(pages)
		for _, name in ipairs(args) do
			local title = mw.title.makeTitle('Community', name)
			if title and page_set[title.prefixedText] then
				local item = "* " .. links.link(title.fullText, name, "local")
				table.insert(items, item)
			else
				local item = "* " .. links.link(tostring(roblox_urls.user_from_username(name)), name, "ext")
				table.insert(items, item)
			end
		end
	end
	return table.concat(items, "\n")
end

p.player_list = utils.make_wrapper_function(p._player_list)

return p