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

از ویکی حقوق
پرش به ناوبری پرش به جستجو
جز (۱ نسخه واردشده)
fa.wikipedia.org>Shkuru Afshar
بدون خلاصۀ ویرایش
خط ۱۴: خط ۱۴:
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