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 showblankpos = isnotempty(frame.args['showblankpositional']) | |||
local | |||
local ignoreblank = isnotempty(args['ignoreblank']) | |||
local showblankpos = isnotempty(args['showblankpositional']) | |||
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'] | ||
local values = {} | local values = {} | ||
Line 60: | Line 34: | ||
end | end | ||
end | end | ||
if isnotempty(preview) then | if isnotempty(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> ' .. preview .. ' (this message is shown only in preview).</div>' | ||
elseif preview == nil then | elseif preview == nil then | ||
Line 70: | Line 44: | ||
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 51: | ||
end | end | ||
if not knownflag and ( not ignoreblank or isnotempty(v) ) then | if not knownflag and ( not ignoreblank or isnotempty(v) ) then | ||
table.insert(values, | k = mw.ustring.gsub(k, '[^%w\-_ ]', '?') | ||
table.insert(values, k) | |||
end | end | ||
elseif type(k) == 'number' and | elseif type(k) == 'number' and | ||
knownargs[tostring(k)] == nil and | knownargs[tostring(k)] == nil and | ||
( showblankpos or isnotempty(v) ) | ( showblankpos or isnotempty(v) ) | ||
then | then | ||
table.insert(values, k .. ' = ' .. | local vlen = mw.ustring.len(v) | ||
v = mw.ustring.sub(v, 1, (vlen < 25) and vlen or 25) | |||
v = mw.ustring.gsub(v, '[^%w\-_ ]', '?') | |||
table.insert(values, k .. ' = ' .. v .. ((vlen >= 25) and ' ...' or '')) | |||
end | end | ||
end | end | ||
-- add | -- add resuls to the output tables | ||
if #values > 0 then | if #values > 0 then | ||
if | if frame:preprocess( "{{REVISIONID}}" ) == "" then | ||
unknown = preview | unknown = preview | ||
end | end | ||
for | for k, v in pairs(values) do | ||
if v == '' then | if v == '' then | ||
-- Fix odd bug for | = which gets stripped to the empty string and | |||
-- breaks category links | |||
v = ' ' | |||
end | end | ||
local r = unknown:gsub('_VALUE_', v) | |||
local r = unknown:gsub('_VALUE_', | |||
table.insert(res, r) | table.insert(res, r) | ||
end | end | ||
Line 105: | Line 82: | ||
return table.concat(res) | return table.concat(res) | ||
end | end | ||
return p | return p |