Jump to content

ᥛᥨᥝᥱ ᥓᥧᥰ:Check for unknown parameters

ᥘᥧᥐ ᥖᥤ ᥝᥤᥱ ᥑᥤᥱ ᥚᥤᥱ ᥖᥤᥱ ᥕᥣᥱ ᥛᥣᥰ

Documentation for this module may be created at ᥛᥨᥝᥱ ᥓᥧᥰ:Check for unknown parameters/doc

-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}

local function isnotempty(s)
	return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end

function p.check (frame)
	local args = frame.args
	local pargs = frame:getParent().args
	local ignoreblank = isnotempty(frame.args['ignoreblank'])
	local checkpos = isnotempty(frame.args['checkpositional'])
	local knownargs = {}
	local unknown = 'Found _VALUE_, '

	local res = {}
	local regexps = {}
	local comments = {}
	local commentstr = ''
	
	-- create the list of known args, regular expressions, and the return string
	for k, v in pairs(args) do
		if type(k) == 'number' then
			v = mw.ustring.gsub(v, '^%s*(.-)%s*$', '%1')
			knownargs[v] = 1
		else
			if (k == 'unknown' and type(v) == 'string') then
				unknown = v
			elseif (mw.ustring.match(k, '^regexp[%d]*$') and type(v) == 'string') then
				table.insert(regexps, '^' .. v .. '$')
			end
		end
	end

	-- loop over the parent args, and make sure they are on the list
	for k,v in pairs(pargs) do
		if (type(k) == 'string' and knownargs[k] == nil) then
			local knownflag = nil
			for r = 1,#regexps do
				if( mw.ustring.match(k,regexps[r]) ) then
					knownflag = 1
				end
			end
			if( (not knownflag) and ( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) ) then
				k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
				local r = mw.ustring.gsub(unknown, '_VALUE_', k)
				table.insert(res, r)
				table.insert(comments, '"' .. k .. '"')
			end
		elseif(checkpos and type(k) == 'number' and knownargs[tostring(k)] == nil) then
			if( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) then
				local r = mw.ustring.gsub(unknown, '_VALUE_', k)
				table.insert(res, r)
				table.insert(comments, '"' .. k .. '"')
			end
		end
	end

	if(#comments > 0) then
		commentstr = '<!-- Module:Check for unknown parameters results: ' ..
			table.concat(comments, ', ') .. '-->'
	end
	
	return table.concat(res) .. commentstr
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy