پودمان:Check for clobbered parameters: تفاوت میان نسخه‌ها

از ویکی حقوق
پرش به ناوبری پرش به جستجو
جز (۱ نسخه واردشده)
جز (۱ نسخه واردشده)
 
(یک نسخهٔ میانی ویرایش شده توسط یک کاربر دیگر نشان داده نشد)
خط ۱۴: خط ۱۴:
local checknested = isnotempty(args['nested'])
local checknested = isnotempty(args['nested'])
local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';'
local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';'
local cat = ''
if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
cat = args['cat']
end
local res = ''
local argpairs = {}
local argpairs = {}
for k, v in pairs(args) do
for k, v in pairs(args) do
if type(k) == 'number' then
if type(k) == 'number' then
خط ۴۰: خط ۳۵:
local warnmsg = {}
local warnmsg = {}
local res = ''
local cat = ''
if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
cat = args['cat']
end
local template = args['template'] and 'در ' .. args['template']  or ''
if #argpairs > 0 then
if #argpairs > 0 then
for i, v in ipairs( argpairs ) do
for i, v in ipairs( argpairs ) do
table.insert(warnmsg, 'Using more than one of the following parameters: <code>' ..
table.insert(
table.concat(v, '</code>, <code>') .. '</code>')
warnmsg,
mw.ustring.format(
'از بیش از یکی از این پارامترها استفاده می‌کند: <code>%s</code>',
template,
table.concat(v, '</code>, <code>')
)
)
if cat ~= '' then
if cat ~= '' then
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
خط ۵۱: خط ۵۸:
if #warnmsg > 0 then
if #warnmsg > 0 then
if frame:preprocess( "{{REVISIONID}}" ) == "" then
res = require('Module:If preview')._warning({
local ptxt = args['template'] and args['template'] .. ' warning' or 'Warning'
table.concat(warnmsg, '<br>')
res = '<div class="hatnote" style="color:red"><strong>' .. ptxt .. ':</strong> ' .. table.concat(warnmsg, '<br>') .. '</div>' .. res
}) .. res
end
end
end

نسخهٔ کنونی تا ‏۳ آوریل ۲۰۲۲، ساعت ۱۵:۱۶

توضیحات این پودمان می‌تواند در پودمان:Check for clobbered parameters/توضیحات قرار گیرد.

local p = {}

local function trim(s)
	return s:match('^%s*(.-)%s*$')
end

local function isnotempty(s)
	return s and s:match('%S')
end

function p.check(frame)
	local args = frame.args
	local pargs = frame:getParent().args
	local checknested = isnotempty(args['nested'])
	local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';'
	local argpairs = {}
	
	for k, v in pairs(args) do
		if type(k) == 'number' then
			local plist = mw.text.split(v, delimiter)
			local pfound = {}
			local count = 0
			for ii, vv in ipairs(plist) do
				vv = trim(vv)
				if checknested and pargs[vv] or isnotempty(pargs[vv]) then
					count = count + 1
					table.insert(pfound, vv)
				end
			end
			if count > 1 then
				table.insert(argpairs, pfound)
			end
		end
	end
	
	local warnmsg = {}
	local res = ''
	local cat = ''
	if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
		cat = args['cat']
	end
	local template = args['template'] and 'در ' .. args['template']  or ''
	if #argpairs > 0 then
		for i, v in ipairs( argpairs ) do
			table.insert(
				warnmsg,
				mw.ustring.format(
					'از بیش از یکی از این پارامترها استفاده می‌کند: <code>%s</code>',
					template,
					table.concat(v, '</code>, <code>')
				)
			)
			if cat ~= '' then
				res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
			end	
		end
	end
	
	if #warnmsg > 0 then
		res = require('Module:If preview')._warning({
			table.concat(warnmsg, '<br>')
		}) .. res
	end
	
	return res
end

return p