Module:Check for deprecated parameters: Difference between revisions

From Wikitia
Jump to navigation Jump to search
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 trim(s)
local function isnotempty(s)
return s:match('^%s*(.-)%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


local function isnotempty(s)
function p.check(frame)
return s and trim(s) ~= ''
-- create the table of deprecated values and their matching new value
return p._check(frame.args, frame:getParent().args, frame:getParent():getTitle())
end
end


function p.check (frame)
local moduleParams = {ignoreblank=true, preview=true, _category=true, _remove=true}
local args = frame.args
local pargs = frame:getParent().args
local ignoreblank = isnotempty(frame.args['ignoreblank'])
local deprecated = frame.args['category']
local preview = frame.args['preview'] or 'Page using [['..frame:getParent():getTitle()..']] with deprecated parameter _VALUE_'


function p._check(args, pargs, caller)
local dep_values = {}
local dep_values = {}
local values = {}
local res = {}
-- create the table of deprecated values and their matching new value
for k, v in pairs(args) do
for k, v in pairs(args) do
if k == 'ignoreblank' or k == 'preview' or k == 'deprecated' then else
        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
if isnotempty(preview) then
preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>'
elseif preview == nil then
preview = deprecated
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 ignoreblank then
        if not ignoreblank or isnotempty(v) then
if dep_values[k] and v~='' then
if dep_values[k] then
table.insert(values, k)
table.insert(values, k)
elseif removes[k] then
table.insert(remove_values, k)
end
end
else
if dep_values[k] then
table.insert(values, k)
end
end
end
end
end


-- add resuls to the output tables
    -- find out about calling context
if #values > 0 then
    local title = mw.title.getCurrentTitle()
if frame:preprocess( "{{REVISIONID}}" ) == "" then
 
deprecated = preview
    -- create local defaulted arguments
for k, v in pairs(values) do
    local category = args["_category"] or (title.namespace == 0 and "[[Category:Pages with deprecated parameters]]" or "")
if v == '' then
local preview = args['preview'] or 'Page using [[' .. caller .. ']] with deprecated parameter _VALUE_'
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
-- Fix: Only process preview if not empty
v = ' '
local previewResult = ''
end
if isnotempty(preview) then
local r = deprecated:gsub('_VALUE_', ('"'..v..'". replace with "'..dep_values[v]..'"'))
local ifPreview = require('Module:If preview')
table.insert(res, r)
if ifPreview and ifPreview._warning then
end
previewResult = ifPreview._warning({preview})
else
else
for k, v in pairs(values) do
previewResult = preview
local r = deprecated:gsub('_VALUE_', v)
table.insert(res, r)
end
end
end
end
end
 
return table.concat(res)
    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

Latest revision as of 07:51, 6 May 2026

Documentation for this module may be created at Module:Check for deprecated parameters/doc

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

function p.check(frame)
	-- create the table of deprecated values and their matching new value
	return p._check(frame.args, frame:getParent().args, frame:getParent():getTitle())
end

local moduleParams = {ignoreblank=true, preview=true, _category=true, _remove=true}

function p._check(args, pargs, caller)
	local dep_values = {}
	for k, v in pairs(args) do
        if not moduleParams[k] then
			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
	
	-- 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
        if not ignoreblank or isnotempty(v) then
			if dep_values[k] then
				table.insert(values, k)
			elseif removes[k] then
				table.insert(remove_values, k)
			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
			previewResult = preview
		end
	end
	
    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

return p