Difference between revisions of "Module:Check for unknown parameters"
Jump to navigation
Jump to search
imported>Frietjes (clobber non-alphanumeric) |
imported>Frietjes (add optional ignoreblank parameter) |
||
Line 3: | Line 3: | ||
-- not on the list | -- not on the list | ||
local p = {} | local p = {} | ||
+ | |||
+ | local function isnotempty(s) | ||
+ | return s and s:match( '^%s*(.-)%s*$' ) ~= '' | ||
+ | end | ||
function p.check (frame) | function p.check (frame) | ||
local args = frame.args | local args = frame.args | ||
local pargs = frame:getParent().args | local pargs = frame:getParent().args | ||
− | + | local ignoreblank = isnotempty(frame.args['ignoreblank']) | |
local knownargs = {} | local knownargs = {} | ||
local unknown = 'Found _VALUE_, ' | local unknown = 'Found _VALUE_, ' | ||
Line 28: | Line 32: | ||
for k,v in pairs(pargs) do | for k,v in pairs(pargs) do | ||
if (knownargs[k] == nil and type(k) == 'string') then | if (knownargs[k] == nil and type(k) == 'string') then | ||
− | k = mw.ustring.gsub(k, '[^%w\-_ ]', '?') | + | if( (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) | ||
+ | end | ||
end | end | ||
end | end |
Revision as of 23:42, 25 November 2014
Documentation for this module may be created at Module: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 knownargs = {} local unknown = 'Found _VALUE_, ' local res = {} -- create the list of known args, 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 end end end -- loop over the parent args, and make sure they are on the list for k,v in pairs(pargs) do if (knownargs[k] == nil and type(k) == 'string') then if( (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) end end end return table.concat(res) end return p