Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





Module:Check for clobbered parameters





Module  

Talk  



Language  

Watch  

View source  





This module may be appended to a template to check for uses of tuples of conflicting parameters.

Usage

Basic usage

{{#invoke:Check for clobbered parameters|check
|nested=1|template=Some template name
|cat={{main other|Category:Some tracking category}}
|arg1a; arg1b|arg2a; arg2b; arg2c|...|argNa; argNb}}

Here, (arg1a, arg1b), (arg2a, arg2b, arg2c), are tuples of the conflicting parameters.

By default, the module ignores blank parameters which is useful for {{if empty}} chains of parameters. For nested chains of parameters, use |nested=1 to consider blank parameters as well.

By default, the delimiter for the tuples is ; but this can be changed with |delimiter=.

The value of |template= is used to for the text of the preview warning message. When omitted, the module will use a generic message.

Example 1

{{Infobox
| above = {{{name|}}}

| label1 = Founder{{#if:{{{founders|}}}|s}}
| data1 = {{if empty| {{{founders|}}} | {{{founder|}}} }}

| label2 = Headquarters
| data2 = {{if empty| {{{headquarters|}}} | {{{hq|}}} | {{{location|}}} }}

}}<!-- 
  end infobox, start tracking
-->{{#invoke:Check for clobbered parameters|check
| template = Infobox example
| cat = {{main other|Category:Pages using infobox example with conflicting parameters}}
| founders; founder
| headquarters; hq; location
}}

Example 2

{{Infobox
| above = {{{name|}}}

| label1 = Founder(s)
| data1 = {{{founders|{{{founder|}}}}}}

| label2 = Headquarters
| data2 = {{{headquarters|{{{hq|{{{location|}}}}}}}}}

}}<!-- 
  end infobox, start tracking
-->{{#invoke:Check for clobbered parameters|check
| nested =1| template = Infobox example
| cat = {{main other|Category:Pages using infobox example with conflicting parameters}}
| founders; founder
| headquarters; hq; location
}}

See also

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

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Check_for_clobbered_parameters&oldid=1021944931"
 



Last edited on 7 May 2021, at 15:16  


Languages

 


Afrikaans
العربية

تۆرکجه
Basa Bali

Banjar
 / Bân-lâm-gú
Basa Banyumasan

Буряад
Cebuano
فارسی
Gaeilge


ि
Ilokano
Bahasa Indonesia
Jawa


Kurdî
Ladin
Македонски

Māori


Bahasa Melayu

Na Vosa Vakaviti


ି
Oʻzbekcha / ўзбекча

Papiamentu


Simple English
سنڌي
Slovenščina
کوردی
Tagalog
ி
 

Українська
اردو
Tiếng Vit


 

Wikipedia


This page was last edited on 7 May 2021, at 15:16 (UTC).

Content is available under CC BY-SA 4.0 unless otherwise noted.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Terms of Use

Desktop