From Wikipedia, the free encyclopedia

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 pargsvv or isnotempty(pargsvv]) 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 ' in ' .. args'template'  or ''

	if #argpairs > 0 then

		for i, v in ipairs( argpairs ) do

			table.insert(

				warnmsg,

				mw.ustring.format(

					'Using more than one of the following parameters%s: <code>%s</code>.',

					template,

					table.concat(v, '</code>, <code>')

				)

			)

			if cat ~= '' then

				res = res .. '[[' .. cat .. '|' .. (v1 == '' and ' ' or '') .. v1 .. ']]'

			end	

		end

	end

	

	if #warnmsg > 0 then

		res = require('Module:If preview')._warning({

			table.concat(warnmsg, '<br>')

		}) .. res

	end

	

	return res

end



return p