Difference between revisions of "Module:Hidden ping"

From blackwiki
Jump to navigation Jump to search
blackwiki>Ahecht
(Use root, not base)
blackwiki>Ahecht
(cleanup code)
Line 1: Line 1:
 
local p = {}
 
local p = {}
 +
 +
local function makeError(msg, frame)
 +
-- Show error only in preview
 +
if (frame:preprocess( "{{REVISIONID}}" ) ~= "") then return '' end
 +
msg ='<strong>Error in [[Template:Hidden ping]]:</strong> ' .. msg
 +
return mw.text.tag('div', {['class']='error'}, msg)
 +
end
  
 
function p.hiddenping(frame)
 
function p.hiddenping(frame)
Line 13: Line 20:
 
args[k] = title.rootText
 
args[k] = title.rootText
 
usernames = usernames + 1
 
usernames = usernames + 1
elseif (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
+
else
return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> Input contains forbidden characters.</div>'
+
return makeError('Input contains forbidden characters.', frame)
 
end
 
end
 
end
 
end
Line 20: Line 27:
  
 
if usernames < 1 then
 
if usernames < 1 then
if (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
+
return makeError('Username not given.', frame)
return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> Username not given.</div>'
+
elseif usernames > (tonumber(frame.args.max) or 50) then
else
+
return makeError('More than '..tostring(frame.args.max or 50)..' names specified.', frame)
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
 
else
 
local outStr = ''
 
local outStr = ''

Revision as of 01:49, 4 July 2018

Usage from wikitext

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

Usage within templates

{{#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.



local p = {}

local function makeError(msg, frame)
	-- Show error only in preview
	if (frame:preprocess( "{{REVISIONID}}" ) ~= "") then return '' end
	msg ='<strong>Error in [[Template:Hidden ping]]:</strong> ' .. msg
	return mw.text.tag('div', {['class']='error'}, msg)
end

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
			else
				return makeError('Input contains forbidden characters.', frame)
			end
		end
	end

	if usernames < 1 then
		return makeError('Username not given.', frame)
	elseif usernames > (tonumber(frame.args.max) or 50) then
		return makeError('More than '..tostring(frame.args.max or 50)..' names specified.', frame)
	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