Module:Check for clobbered parameters: Difference between revisions
Jump to navigation
Jump to search
Richardpruen (talk | contribs) m (1 revision imported: Wikipedia article on Nicotine templates needed) |
(use if preview) |
||
Line 14: | Line 14: | ||
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 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 | ||
Line 40: | Line 35: | ||
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 ' in ' .. 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( | ||
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 | if cat ~= '' then | ||
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]' | res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]' | ||
Line 51: | Line 58: | ||
if #warnmsg > 0 then | if #warnmsg > 0 then | ||
res = require('Module:If preview')._warning({ | |||
table.concat(warnmsg, '<br>') | |||
}) .. res | |||
end | end | ||
Revision as of 16:16, 7 May 2021
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