Module:Check for deprecated parameters: Difference between revisions

From Project: Jotunnheim
Jump to navigation Jump to search
Content added Content deleted
imported>Rox
m (1 revision imported)
(Add option for a list of _remove params that need to simply be removed from the template.)
Line 22: Line 22:
 
end
 
end
   
  +
-- Parse params to remove
  +
local removes = {}
  +
if frame.args['_remove'] then
  +
for r in frame.args['_remove']:gmatch("([^;]+)") do
  +
r = mw.ustring.gsub(r,'^%s*','')
  +
r = mw.ustring.gsub(r,'%s*$','')
  +
removes[r] = 1
 
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 values = {}
  +
local remove_values = {}
 
local ignoreblank = isnotempty(frame.args['ignoreblank'])
 
local ignoreblank = isnotempty(frame.args['ignoreblank'])
 
local pargs = frame:getParent().args
 
local pargs = frame:getParent().args
Line 30: Line 41:
 
if dep_values[k] and v~='' then
 
if dep_values[k] and v~='' then
 
table.insert(values, k)
 
table.insert(values, k)
  +
elseif removes[k] and v~='' then
  +
table.insert(remove_values, k)
 
end
 
end
 
else
 
else
 
if dep_values[k] then
 
if dep_values[k] then
 
table.insert(values, k)
 
table.insert(values, k)
  +
elseif removes[k] then
end
 
  +
table.insert(remove_values, k)
  +
end
 
end
 
end
 
end
 
end
Line 64: Line 79:
 
'_VALUE_',
 
'_VALUE_',
 
'"'..v..'". Replace with "'..dep_values[v]..'".'
 
'"'..v..'". Replace with "'..dep_values[v]..'".'
  +
)
  +
table.insert(res, p )
  +
end
  +
end
  +
  +
if #remove_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(remove_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..'". It should be removed.'
 
)
 
)
 
table.insert(res, p )
 
table.insert(res, p )

Revision as of 02:35, 18 October 2025

Module:Check for deprecated parameters may be appended to a template to check for uses of deprecated parameters. It will place the page in a specific category, and display a preview message, when it finds deprecated parameter uses.

Note: due to the nature of deprecations, this module will often have no templates implementing it.

Usage

{{#invoke:check for deprecated parameters|check
|category=[[Category:<category_name>|_VALUE_]]
| old_param1 = new_param1 
| old_param2 = new_param2
| ....
| old_paramN = new_paramN
}}

See also


-- 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

	-- Parse params to remove
	local removes = {}
	if frame.args['_remove'] then
		for r in frame.args['_remove']:gmatch("([^;]+)") do
			r = mw.ustring.gsub(r,'^%s*','')
			r = mw.ustring.gsub(r,'%s*$','')
			removes[r] = 1
		end
	end
	
	-- loop over the parent args and see if any are deprecated
	local values = {}
	local remove_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)
			elseif removes[k] and v~='' then
				table.insert(remove_values, k)
			end
		else
			if dep_values[k] then
				table.insert(values, k)
			elseif removes[k] then
				table.insert(remove_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
	
	if #remove_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(remove_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..'". It should be removed.'
			)
			table.insert(res, p )
		end
	end

	return table.concat(res)
end

return p