Mô đun: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 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 = {}
	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 = {}
	if #argpairs > 0 then
		for i, v in ipairs( argpairs ) do
			table.insert(warnmsg, 'Sử dụng nhiều hơn một trong các tham số sau: <code>' ..
				table.concat(v, '</code>, <code>') .. '</code>')
			if cat ~= '' then
				res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
			end	
		end
	end
	
	if #warnmsg > 0 then
		if frame:preprocess( "{{REVISIONID}}" ) == "" then
			local ptxt = 'Cảnh báo ' .. args['template'] and args['template'] or 'Cảnh báo'
			res = '<div class="hatnote" style="color:red"><strong>' .. ptxt .. ':</strong> ' .. table.concat(warnmsg, '<br />') .. '</div>' .. res
		end
	end
	
	return res
end

return p
Chúng tôi bán
Bài viết liên quan
Con người rốt cuộc phải trải qua những gì mới có thể đạt đến sự giác ngộ?
Con người rốt cuộc phải trải qua những gì mới có thể đạt đến sự giác ngộ?
Mọi ý kiến và đánh giá của người khác đều chỉ là tạm thời, chỉ có trải nghiệm và thành tựu của chính mình mới đi theo suốt đời
Lịch sử và sự kiện đáng nhớ của Fontaine
Lịch sử và sự kiện đáng nhớ của Fontaine
Trước tiên nói về ảo thuật gia vĩ đại "Parsifal", đây là danh xưng gọi hai chị em ảo thuật gia, xuất thân từ Fleuve Cendre
Giới thiệu AG Meredith - The nigh unkillable Octopus
Giới thiệu AG Meredith - The nigh unkillable Octopus
Meredith gần như bất tử trên chiến trường nhờ Bubble Form và rất khó bị hạ nếu không có những hero chuyên dụng
Brooklyn 99 - nét mới trong thể loại sitcom
Brooklyn 99 - nét mới trong thể loại sitcom
B99 đúng là có tình yêu, nói về tình bạn nhưng đều ở mức vừa đủ để khiến một series về cảnh sát không bị khô khan nhàm chán