Editing Module:Check for unknown parameters
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 9: | Line 9: | ||
local function isnotempty(s) | local function isnotempty(s) | ||
return s and s | return s and trim(s) ~= '' | ||
end | end | ||
function p.check (frame) | |||
local args = frame.args | |||
local pargs = frame:getParent().args | |||
local | local ignoreblank = isnotempty(frame.args['ignoreblank']) | ||
local checkpos = isnotempty(frame.args['checkpositional']) | |||
local | |||
local ignoreblank = isnotempty(args['ignoreblank']) | |||
local | |||
local knownargs = {} | local knownargs = {} | ||
local unknown = | local unknown = 'Found _VALUE_, ' | ||
local res = {} | local res = {} | ||
local regexps = {} | local regexps = {} | ||
local comments = {} | |||
local commentstr = '' | |||
-- create the list of known args, regular expressions, and the return string | -- create the list of known args, regular expressions, and the return string | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
Line 56: | Line 30: | ||
v = trim(v) | v = trim(v) | ||
knownargs[v] = 1 | knownargs[v] = 1 | ||
elseif k == 'unknown' then | |||
unknown = v | |||
elseif k:find('^regexp[1-9][0-9]*$') then | elseif k:find('^regexp[1-9][0-9]*$') then | ||
table.insert(regexps, '^' .. v .. '$') | table.insert(regexps, '^' .. v .. '$') | ||
end | end | ||
end | end | ||
-- adds one result to the output tables | |||
local function addresult(k) | |||
if k == '' then | |||
-- Fix odd bug for | = which gets stripped to the empty string and | |||
-- breaks category links | |||
k = ' ' | |||
end | |||
local r = unknown:gsub('_VALUE_', k) | |||
table.insert(res, r) | |||
table.insert(comments, '"' .. k .. '"') | |||
end | end | ||
Line 70: | Line 53: | ||
if type(k) == 'string' and knownargs[k] == nil then | if type(k) == 'string' and knownargs[k] == nil then | ||
local knownflag = false | local knownflag = false | ||
for | for i, regexp in ipairs(regexps) do | ||
if mw.ustring.match(k, regexp) then | if mw.ustring.match(k, regexp) then | ||
knownflag = true | knownflag = true | ||
Line 77: | Line 60: | ||
end | end | ||
if not knownflag and ( not ignoreblank or isnotempty(v) ) then | if not knownflag and ( not ignoreblank or isnotempty(v) ) then | ||
k = mw.ustring.gsub(k, '[^%w\-_ ]', '?') | |||
addresult(k) | |||
end | end | ||
elseif type(k) == 'number' and | elseif checkpos and | ||
type(k) == 'number' and | |||
knownargs[tostring(k)] == nil and | knownargs[tostring(k)] == nil and | ||
( | ( not ignoreblank or isnotempty(v) ) | ||
then | then | ||
addresult(k) | |||
end | end | ||
end | end | ||
if #comments > 0 then | |||
if # | commentstr = '<!-- Module:Check for unknown parameters results: ' .. | ||
table.concat(comments, ', ') .. '-->' | |||
table. | |||
end | end | ||
return table.concat(res) | return table.concat(res) .. commentstr | ||
end | end | ||
return p | return p |