Module:Hidden ping

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

Usage from wikitext[edit]

This module cannot be used directly from wikitext. Please use the {{Hidden ping}} template instead.

Usage within templates[edit]

{{#invoke:Hidden ping|hiddenping|max=maximum number of names}}

  • The |max= parameter sets the maximum number of names that the template will accept. If not specified, it defaults to 50 (which is the maximum number that Echo currently supports as of August 2015). If this number of names is exceeded, the parent template will return an error message when previewed.


Code

local p = {}

function p.hiddenping(frame)
	local origArgs = frame:getParent().args
	local args = {}
	local maxArg = 0
	local usernames = 0
	for k, v in pairs(origArgs) do
		if type(k) == 'number' and mw.ustring.match(v,'%S') then
			if k > maxArg then maxArg = k end
			local title = mw.title.new(v)
			if title then
				args[k] = title.rootText
				usernames = usernames + 1
			elseif (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
				return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> Input contains forbidden characters.</div>'
			end
		end
	end

	if usernames < 1 then
		if (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
			return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> Username not given.</div>'
		else
			return ''
		end
	elseif usernames > (tonumber(frame.args.max) or 50) and (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
		return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> More than '..tostring(frame.args.max or 50)..' names specified.</div>'
	else
		local outStr = ''
		for i = 1, maxArg do
			if args[i] then outStr = outStr..'[[:User:'..args[i]..'|&#x200B;]]' end
		end
		return outStr
	end
end

return p