Module:No ping

From Eurovision Wiki
Revision as of 19:09, 11 December 2025 by imported>Izno (merge: general improvement for anti-abuse and unaffecting others elsewhere; using modules can consider whether to reintroduce a user link for TAs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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

local p = {}

function p.main(frame)
	local args = frame:getParent().args
	return p._main(args)
end

function p._main(args)
	local ret = {}
	local fullUrl = mw.uri.fullUrl
	local format = string.format
	for i, username in ipairs(args) do
		local label = args['label' .. tostring(i)]
		local url = ""
		local targetUser = username
		if (username:sub(1, (mw.site.namespaces.User.name .. ':'):len()) == (mw.site.namespaces.User.name .. ':')) then
			targetUser = username:sub((mw.site.namespaces.User.name .. ':'):len() + 1)
		end
		if targetUser:sub(1, 2) == '~2' then
			-- Temporary user target; use internal contributions link
			url = mw.site.namespaces.Special.name .. ':Contributions/' .. targetUser
			url = format('[[%s|%s]]', url, label or username)
		else
			-- Named user target; use external link
			url = fullUrl(mw.site.namespaces.User.name .. ':' .. targetUser)
			url = tostring(url)
			url = format('[%s %s]', url, label or username)
		end
		ret[#ret + 1] = url
	end
	ret = mw.text.listToText(ret)
	ret = '<span class="plainlinks">' .. ret .. '</span>'
	return ret
end

return p