|
|
| Line 1: |
Line 1: |
| local p = {}
| | return require [[Module:Check for conflicting parameters]] |
| | |
| 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 ' 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 .. '|' .. (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
| |
Documentation for this module may be created at Module:Check for clobbered parameters/doc
return require [[Module:Check for conflicting parameters]]