Module:Flag
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This Lua module is used on many pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This module depends on the following other modules: |
Lua-native alternative to popular flag templates. Can be used to reduce post-expand include size of pages with lots of templates, since it avoids calling multilevel templates.
Usage
[កែប្រែ]- {{flag}} → {{#invoke:flag|}}
- {{flag country}} → Flag#country
- {{flag decoration}} → Flag#decoration (or Flag#deco)
- {{flag icon}} → Flag#icon
- {{flag link}} → Flag#link
- {{flag+link}} → Flag#+link
- {{flag athlete}} → Flag#athlete
- {{flag medalist}} → Flag#medalist
- {{flag IOC athlete}} → Flag#IOC athlete
- {{fb}} → Flag#fb
- {{fb-rt}} → Flag#fb-rt
- {{fbicon}} → Flag#fbicon
- {{ru}} → Flag#ru
Examples
[កែប្រែ]! colspan=3| Template !! colspan=3| Module
|-
! Code !! Output !! PEIS !! Code !! Output !! PEIS
|-
| {{flag|CHN}}
|| CHN || 443b || {{#invoke:flag||CHN}}
|| CHN || 128b
|-
| {{flag country|CHN}}
|| ចិន || 577b || {{#invoke:flag|country|CHN}}
|| CHN || 128b
|-
| {{flag decoration|CHN}}
/{{flag deco|CHN}}
|| ទំព័រគំរូ:Flag deco || 452b || {{#invoke:flag|decoration|CHN}}
/{{#invoke:flag|deco|CHN}}
|| || 107b
|-
| {{flag icon|CHN}}
|| || 548b || {{#invoke:flag|icon|CHN}}
|| || 117b
|-
| {{flag link|CHN|at the 2004 Summer Olympics}}
|| ទំព័រគំរូ:Flag link || 497b || {{#invoke:flag|link|CHN|at the 2004 Summer Olympics}}
|| CHN || 198b
|-
| {{flag+link|History of|CHN}}
|| ទំព័រគំរូ:Flag+link || 663b || {{#invoke:flag|+link|History of|CHN}}
|| CHN || 139b
|-
| {{flag athlete|Andy Murray|GBR}}
|| ទំព័រគំរូ:Flagathlete || 617b || {{#invoke:flag|athlete|Andy Murray|GBR}}
|| GBR || 210b
|-
| {{flag medalist|Andy Murray|GBR}}
|| ទំព័រគំរូ:Flagmedalist || 469b || {{#invoke:flag|medalist|Andy Murray|GBR}}
|| Andy Murray
GBR || 129b
|-
| {{flag IOC athlete|Mark Spitz|USA|1972 Summer}}
|| ទំព័រគំរូ:Flag IOC athlete || 346b || {{#invoke:flag|IOC athlete | Mark Spitz| USA| 1972 Summer}}
|| Mark Spitz (USA) || 178b
|-
| {{fb|CHN}}
|| ស.ប. ចិន || 560b || {{#invoke:flag|fb|CHN}}
|| Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. || 151b
|-
| {{fb-rt|CHN}}
|| ស.ប. ចិន || 482b || {{#invoke:flag|fb-rt|CHN}}
|| Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. || 151b
|-
| {{fbicon|CHN}}
|| ទំព័រគំរូ:Fbicon || 444b || {{#invoke:flag|fbicon|CHN}}
|| Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. || 163b
|-
| {{ru|CHN}}
|| ទំព័រគំរូ:Ru || 646b || {{#invoke:flag|ru|CHN}}
|| Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. || 210b
|}
Caveats
[កែប្រែ]When used inside a template, parameters from that template are passed to the module. This can be useful in some situations, but can lead to conflicts (for example, if the parent template has a parameter |country=
that is unrelated to the flag it is supposed to display). To prevent this behavior, add the |frameonly=
parameter to the module call, e.g. {{#invoke:flag|deco|CHN|frameonly=true}}
.
local p = {}
function p._main(frame, name, mode, check)
local categories = {
['Flag icon'] = '[[Category:Flag icons missing country data templates]]',
['Flag decoration'] = '[[Category:Flag decoration missing country data templates]]',
}
local yesno = require('Module:Yesno')
--Get input arguments
local args = require('Module:Arguments').getArgs(frame,{frameOnly = ((frame.args.frameonly or '') ~= ''), valueFunc =
function(key,value)
if value then
value = mw.text.trim(value)
--Change empty string to nil for all args except 'image' and 'border'
if key=="image" or key=="border" or value~="" then
return value
end
end
return nil
end
})
local preftext = ""
if name == 'Flag+link' then
args.pref = args[1]
elseif name == 'Flag athlete' then
args.preftext = args[1]
args[2] = args.code or args[2] or ""
args.variant = args.variant or args[3]
elseif name == 'Flag medalist' then
preftext = (args[1] or "") .. "<br/>"
args[2] = args.code or args[2] or ""
args.variant = args.variant or args[3]
elseif name == 'Flag link' then
args.suff = args[2]
args[2] = args[1] or ""
args.variant = args.variant or args[3]
else
sports = {fb = 'fb', ['fb-rt'] = 'fb', fbicon = 'fb', ru = 'ru'}
if sports[name] then
args.avar = sports[name]
if name == 'fb' and yesno(args.align) == true then
args.align='c'
end
end
args.variant = args.variant or args[2]
args[2] = args[1] or ""
end
args[1] = mode .. (args.opts or '')
args.missingcategory = categories[name]
args.noredlink = args.noredlink or 'notext'
if args.placeholder and yesno(args.placeholder) ~= true then
args[1] = args[1] .. 'o'
end
if mw.title.getCurrentTitle().namespace == 0 then
local unknown = '[[Category:Pages using ' .. mw.ustring.lower(name) .. ' template with unknown parameters|_VALUE_' ..
frame:getParent():getTitle() .. ']]'
else
local unknown = ''
end
if check then
local opts = {
unknown=unknown,
preview='Page using [[Template:' .. name .. ']] with unknown parameter "_VALUE_"',
ignoreblank='y',
'1',
'2',
'variant',
'image',
'size',
'sz',
'border',
'align',
'al',
'width',
'w',
'alt',
'ilink',
'noredlink',
'missingcategory',
'name',
'clink',
'link',
'pref',
'suff',
'plink',
'the',
'section',
'altvar',
'avar',
'age',
'nalign',
'nal',
'text',
'nodata',
'opts',
'placeholder',
'getParent',
'frameonly'
}
check = require('Module:Check for unknown parameters')._check(opts,args)
else
check = ''
end
return preftext .. require('Module:Flagg').luaMain(frame,args) .. check
end
function p.main(frame) return p._main(frame, 'Flag', 'unc', false) end
p.flag = p.main
p[''] = p.main
function p.decoration(frame) return p._main(frame, 'Flag decoration', 'uxx', false) end
p.deco = p.decoration
p.flagdeco = p.decoration
p['flag decoration'] = p.decoration
function p.icon(frame) return p._main(frame, 'Flag icon', 'cxxl', true) end
p.flagicon = p.icon
p['flag icon'] = p.icon
function p.link(frame) return p._main(frame, 'Flag link', 'unpe', false) end
p.flaglink = p.link
p['flag link'] = p.link
function p.pluslink(frame) return p._main(frame, 'Flag+link', 'unpefo', false) end
p['+link'] = p.pluslink
p['flag+link'] = p.pluslink
function p.country(frame) return p._main(frame, 'Flag country', 'unce', false) end
p.flagcountry = p.country
p['flag country'] = p.country
function p.athlete(frame) return p._main(frame, 'Flag athlete', 'unape', false) end
p.flagathlete = p.athlete
p['flag athlete'] = p.athlete
function p.medalist(frame) return p._main(frame, 'Flag medalist', 'unce', false) end
p.flagmedalist = p.medalist
p['flag medalist'] = p.medalist
function p.fb(frame) return p._main(frame, 'fb', 'unpe', false) end
function p.fbrt(frame) return p._main(frame, 'fb-rt', 'unpre', false) end
p['fb-rt'] = p.fbrt
function p.fbicon(frame) return p._main(frame, 'fbicon', 'pxxl', false) end
function p.ru(frame) return p._main(frame, 'ru', 'unpe', false) end
function p.IOCathlete(frame) return require('Module:Country_alias').flagXYZ(frame:newChild{ title = 'Template:Flag IOC athlete', args = {type = 'athlete-O'} }) end
p.flagIOCathlete = p.IOCathlete
p['IOC athlete'] = p.IOCathlete
p['flag IOC athlete'] = p.IOCathlete
return p