پودمان:Check for deprecated parameters

از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[نمایش] [ویرایش] [تاریخچه] [پاکسازی]

پودمان:Check for deprecated parameters را می‌توان برای بررسی کاربردهای پارامترهای منسوخ‌شدهٔ یک الگو به انتهای کد آن الگو افزود. این پودمان در صورت یافتن پارامترهای منسوخ‌شده، صفحه را به یک ردهٔ مشخص می‌افزاید و در یک پیام در حالت پیش‌نمایش، پارامتر منسوخ‌شدهٔ مورد استفاده در صفحه را نیز نمایش می‌دهد.

نکته: با توجه به طبیعت منسوخ‌سازی پارامترها، الگویی که برای پیاده‌سازی این پودمان ایجاد شده باشد وجود ندارد.

استفاده[ویرایش]

{{#invoke:check for deprecated parameters|check
| category        = [[رده:<نام رده>|_VALUE_]]
| پارامتر قدیمی ۱ = پارامتر جدید ۱ 
| پارامتر قدیمی ۲ = پارامتر جدید ۲ 
| ....
| پارامتر قدیمی N = پارامتر جدید N 
}}

جستارهای وابسته[ویرایش]

-- 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 mw.ustring.match(s, '^%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
			'این صفحه از [['..frame:getParent():getTitle()..']] با پارامتر منسوخ‌شدهٔ «_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 = mw.ustring.gsub(category, '_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 = mw.ustring.gsub(
				preview,
				'_VALUE_» استفاده می‌کند',
				v..'» استفاده می‌کند. آن را با «'..dep_values[v]..'» جایگزین کنید.'
			)
			table.insert(res, p )
		end
	end

	return table.concat(res)
end

return p