Module:Check for deprecated parameters: Difference between revisions
enwiki>Ankush.srg m 1 revision imported |
No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 4: | Line 4: | ||
local p = {} | local p = {} | ||
local function | local function isnotempty(s) | ||
return s: | return s and mw.text.trim(s) ~= '' | ||
end | |||
local function scanValues(values, results, args, replaceTable) | |||
for k, v in pairs(values) do | |||
-- Fix: Check if category exists before using it | |||
local category = args.category or '' | |||
local c = category:gsub('_VALUE_', v) | |||
if isnotempty(c) then | |||
table.insert(results, c) | |||
end | |||
if v == '' then | |||
-- Fix odd bug for | = which gets stripped to the empty string | |||
-- and breaks category links | |||
v = ' ' | |||
end | |||
local replaceString = '"' .. v .. '". ' | |||
local replaceValue = replaceTable and replaceTable[v] | |||
replaceString = replaceString .. (replaceValue and 'Replace with "' .. replaceValue .. '".' or 'It should be removed.') | |||
-- Fix: Check if preview exists before using it | |||
local preview = args.preview or '' | |||
local p = preview:gsub('_VALUE_', replaceString) | |||
if isnotempty(p) then | |||
table.insert(results, p) | |||
end | |||
end | |||
end | end | ||
function p.check(frame) | |||
return | -- create the table of deprecated values and their matching new value | ||
return p._check(frame.args, frame:getParent().args, frame:getParent():getTitle()) | |||
end | end | ||
local moduleParams = {ignoreblank=true, preview=true, _category=true, _remove=true} | |||
function p._check(args, pargs, caller) | |||
local dep_values = {} | local dep_values = {} | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
if not moduleParams[k] then | |||
dep_values[k] = v | dep_values[k] = v | ||
end | |||
end | |||
-- Parse params to remove | |||
local removes = {} | |||
if args['_remove'] then | |||
for r in args['_remove']:gmatch("([^;]+)") do | |||
removes[mw.text.trim(r)] = 1 | |||
end | end | ||
end | end | ||
-- loop over the parent args and see if any are deprecated | -- loop over the parent args and see if any are deprecated | ||
local values = {} | |||
local remove_values = {} | |||
local ignoreblank = isnotempty(args['ignoreblank']) | |||
for k, v in pairs(pargs) do | for k, v in pairs(pargs) do | ||
if not ignoreblank or isnotempty(v) then | |||
if dep_values[k] | if dep_values[k] then | ||
table.insert(values, k) | table.insert(values, k) | ||
elseif removes[k] then | |||
table.insert(remove_values, k) | |||
end | end | ||
end | end | ||
end | end | ||
-- find out about calling context | |||
local title = mw.title.getCurrentTitle() | |||
-- create local defaulted arguments | |||
local category = args["_category"] or (title.namespace == 0 and "[[Category:Pages with deprecated parameters]]" or "") | |||
local preview = args['preview'] or 'Page using [[' .. caller .. ']] with deprecated parameter _VALUE_' | |||
-- Fix: Only process preview if not empty | |||
local previewResult = '' | |||
if isnotempty(preview) then | |||
local ifPreview = require('Module:If preview') | |||
if ifPreview and ifPreview._warning then | |||
previewResult = ifPreview._warning({preview}) | |||
else | else | ||
previewResult = preview | |||
end | end | ||
end | end | ||
return table.concat( | local localArgs = {category = category, preview = previewResult} | ||
-- scan through values and remove_values and create output results | |||
local results = {} | |||
scanValues(values, results, localArgs, dep_values) | |||
scanValues(remove_values, results, localArgs) | |||
return table.concat(results) | |||
end | end | ||
return p | return p | ||