Modul:Check for deprecated parameters
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and trim(s) ~= ''
end
function p.check (frame)
-- create the table of deprecated values and their matching new value
local args = frame.args
local dep_values = {}
for k, v in pairs(args) do
if k == 'ignoreblank' or k == 'preview' or k == 'deprecated' then else
dep_values[k] = v
end
end
-- loop over the parent args and see if any are deprecated
local values = {}
local ignoreblank = isnotempty(frame.args['ignoreblank'])
local pargs = frame:getParent().args
for k, v in pairs(pargs) do
if ignoreblank then
if dep_values[k] and v~='' then
table.insert(values, k)
end
else
if dep_values[k] then
table.insert(values, k)
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local preview = frame.args['preview'] or
'Page using [['..frame:getParent():getTitle()..']] with deprecated parameter _VALUE_'
if isnotempty(preview) then
preview = require('Module:If preview')._warning({
preview
})
end
-- Kind of dangerous to trust that this is never nil, but I guess it's
-- preferable to display that the use of the module is broken rather than
-- have some sort of tracking category for pages which have an unknown
-- parent tracking template.
local category = frame.args['category']
for k, v in pairs(values) do
local c = category:gsub('_VALUE_', v)
table.insert(res, c)
if v == '' then
-- Fix odd bug for | = which gets stripped to the empty string
-- and breaks category links
v = ' '
end
local p = preview:gsub(
'_VALUE_',
'"'..v..'". Replace with "'..dep_values[v]..'".'
)
table.insert(res, p )
end
end
return table.concat(res)
end
return p