Module:Check for clobbered parameters: Difference between revisions
Jump to navigation
Jump to search
Zackmann08 moved page Module:Check for clobbered parameters to Module:Check for conflicting parameters: renaming module per discussion |
m 1 revision imported |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
return | 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 ' 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 | |||
Latest revision as of 14:37, 1 January 2026
Documentation for this module may be created at Module:Check for clobbered parameters/doc
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 ' 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