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 = args['unknown'] or 'Found _VALUE_, ' | local unknown = frame.args['unknown'] or 'Found _VALUE_, ' | ||
local preview = args['preview'] | local preview = frame.args['preview'] or unknown | ||
local res = {} | local res = {} | ||
local regexps = {} | local regexps = {} | ||
local comments = {} | |||
local commentstr = '' | |||
local ispreview = frame:preprocess( "{{REVISIONID}}" ) == "" and 1 or 0 | |||
-- create the list of known args, regular expressions, and the return string | -- create the list of known args, regular expressions, and the return string | ||
Line 60: | Line 37: | ||
end | end | ||
end | end | ||
if isnotempty(preview) then | if isnotempty(frame.args['preview']) then | ||
preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>' | preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. frame.args['preview'] .. ' (this message is shown only in preview).</div>' | ||
elseif preview = | elseif isnotempty(frame.args['preview']) then | ||
preview = frame.args['preview'] | |||
else | |||
preview = unknown | preview = unknown | ||
end | |||
if ispreview == 1 then | |||
unknown = preview | |||
ignoreblank = false | |||
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 65: | ||
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 72: | ||
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 |