Modul:Check for deprecated parameters: Unterschied zwischen den Versionen

Aus PnP Wiki
Zur Navigation springenZur Suche springen
Vorlage>Hike395
remove "deprecated" from list of parameters to this module
(kein Unterschied)

Version vom 20. November 2025, 11:54 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Check for deprecated parameters/Doku erstellt werden

-- 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
		local c = args.category:gsub('_VALUE_', v)
		table.insert(results, c)
		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.')
		local p = args.preview:gsub('_VALUE_',replaceString)
		table.insert(results, p )
	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_'
	if isnotempty(preview) then
		preview = require('Module:If preview')._warning({preview})
	end
    local localArgs = {category=category,preview=preview}
	
    -- 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