मॉड्यूल:Check for deprecated parameters
दिखावट
|
|
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
| This Lua module is used on many pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
| This module depends on the following other modules: |
Module:Check for deprecated parameters अप्रचलित मापदंडों के उपयोग की जांच के लिए इसे एक साँचे में जोड़ा जा सकता है। यह पृष्ठ को एक विशिष्ट श्रेणी में रखेगा, और एक पूर्वावलोकन संदेश प्रदर्शित करेगा, जब उसे बहिष्कृत पैरामीटर उपयोग का पता चलेगा। टिप्पणी: बहिष्करण की प्रकृति के कारण, इस विभाग/मॉड्यूल में अक्सर इसे लागू करने वाला कोई साँचा नहीं होगा।
उपयोग
{{#invoke:Check for deprecated parameters|check
| category = [[category:category_name|_VALUE_]]
| old_param1 = new_param1
| old_param2 = new_param2
| ....
| old_paramN = new_paramN
}}
यह भी देखे
- श्रेणी:अस्वीकृत पैरामीटर
- Module:Params - मापदंडों से जुड़े जटिल संचालन के लिए
- Module:Check for unknown parameters
- Module:Check for clobbered 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 MAX_PARAMS = 9 -- Limit to only showing 10 preview warnings
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 = '<code>'..v..'</code>. '
local replaceValue = replaceTable and replaceTable[v]
replaceString = replaceString..(replaceValue and 'Replace with <code>'..replaceValue..'</code>.' 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 = {}
local reg_exps = {}
for k, v in pairs(args) do
if ( type(k) == 'string' and k:find('^_regexp[1-9][0-9]*$') and v:find('=') ) then
local v_split = mw.text.split(v, '%s*=%s*')
if ( #v_split == 2 ) then
table.insert(reg_exps, { '^' .. v_split[1] .. '$', v_split[2] } )
end
elseif 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)
else
for _, regexp in ipairs(reg_exps) do
if mw.ustring.match( tostring(k), regexp[1] ) then
table.insert(values, k)
dep_values[k] = mw.ustring.gsub(tostring(k), regexp[1], regexp[2])
break
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_'
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)
if #results >= MAX_PARAMS*2 then
while #results > MAX_PARAMS*2 do
table.remove(results) -- Calling without index removes the last element
end
table.insert(results, require('Module:If preview')._warning({'Page using [['..caller..']] with <b>multiple other</b> deprecated parameters. Fix those above and preview again.'}))
end
return table.concat(results)
end
return p