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