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 | |||
if ispreview then ignoreblank = nil end | |||
-- 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 38: | ||
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 frame.args['preview'] then | ||
preview = frame.args['preview'] | |||
else | |||
preview = unknown | preview = unknown | ||
end | |||
if ispreview == 1 then unknown = preview 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 63: | ||
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 70: | ||
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 |