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

از ویکی حقوق
پرش به ناوبری پرش به جستجو
جز (۱ نسخه واردشده)
جز (۱ نسخه واردشده)
 
(یک نسخهٔ میانی ویرایش شده توسط یک کاربر دیگر نشان داده نشد)
خط ۲: خط ۲:


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


local function isnotempty(s)
local function isnotempty(s)
return s and s:match('%S')
return s and mw.ustring.match(s, '%S')
end
end


خط ۳۷: خط ۳۷:
local res = ''
local res = ''
local cat = ''
local cat = ''
if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
if args['cat'] and (
mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') or
mw.ustring.match(args['cat'],'^رده:')
)
then
cat = args['cat']
cat = args['cat']
end
end
local template = args['template'] and 'در ' .. args['template']  or ''
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
خط ۴۶: خط ۵۰:
warnmsg,
warnmsg,
mw.ustring.format(
mw.ustring.format(
'از بیش از یکی از این پارامترها استفاده می‌کند: <code>%s</code>',
'استفاده از بیش از یکی از پارامترهای زیر%s: <code>%s</code>.',
template,
template,
table.concat(v, '</code>, <code>')
table.concat(v, '</code>, <code>')

نسخهٔ کنونی تا ‏۲۲ دسامبر ۲۰۲۴، ساعت ۱۷:۲۶

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

local p = {}

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

local function isnotempty(s)
	return s and mw.ustring.match(s, '%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]:') or
		mw.ustring.match(args['cat'],'^رده:')
		)
	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(
					'استفاده از بیش از یکی از پارامترهای زیر%s: <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