Module:Flag
Appearance
![]() | 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 module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
![]() | This Lua module is used on approximately 325,000 pages, or roughly 1% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. 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
Generic flag templates
- {{flag}} → {{#invoke:flag|}}
- {{flag country}} → {{#invoke:flag|country}}
- {{flag decoration}} (or {{flagdeco}}) → {{#invoke:flag|decoration}} (or {{#invoke:flag|deco}})
- {{flag icon}} → {{#invoke:flag|icon}}
- {{flag link}} → {{#invoke:flag|link}}
- {{flag+link}} → {{#invoke:flag|+link}}
Sports flag templates
- {{flag athlete}} → {{#invoke:flag|athlete}}
- {{flag medalist}} → {{#invoke:flag|medalist}}
- {{flag team}} → {{#invoke:flag|team}}
- {{flag IOC}} → {{#invoke:flag|IOC}}
- {{flag IOC 2}} → {{#invoke:flag|IOC 2}}
- {{flag IOC athlete}} → {{#invoke:flag|IOC athlete}}
- {{fb}} → {{#invoke:flag|fb}}
- {{fba}} → {{#invoke:flag|fba}}
- {{fb-rt}} → {{#invoke:flag|fb-rt}}
- {{fbicon}} → {{#invoke:flag|fbicon}}
- {{fbaicon}} → {{#invoke:flag|fbaicon}}
- {{ru}} → {{#invoke:flag|ru}}
Examples
Template | Module | ||||
---|---|---|---|---|---|
Code | Output | PEIS | Code | Output | PEIS |
{{flag|CHN}} |
![]() |
443b | {{#invoke:flag||CHN}} |
Script error: The function "" does not exist. | 128b |
{{flag country|CHN}} |
![]() |
577b | {{#invoke:flag|country|CHN}} |
![]() |
128b |
{{flag decoration|CHN}} /{{flag deco|CHN}} |
![]() |
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}} |
![]() |
497b | {{#invoke:flag|link|CHN|at the 2004 Summer Olympics}} |
Script error: The function "link" does not exist. | 198b |
{{flag+link|History of|CHN}} |
![]() |
663b | {{#invoke:flag|+link|History of|CHN}} |
![]() |
139b |
{{flag team|GBR}} |
![]() |
804b | {{#invoke:flag|team|GBR}} |
Script error: The function "team" does not exist. | 193b |
{{flag athlete|Andy Murray|GBR}} |
![]() |
617b | {{#invoke:flag|athlete|Andy Murray|GBR}} |
![]() |
210b |
{{flag medalist|Andy Murray|GBR}} |
Andy Murray![]() |
469b | {{#invoke:flag|medalist|Andy Murray|GBR}} |
Andy Murray![]() |
129b |
{{flag IOC|CAN|1924 Winter|1}} |
![]() |
326b | {{#invoke:flag|IOC|CAN|1924 Winter|1}} |
Script error: The function "IOC" does not exist. | 163b |
{{flag IOC 2|HKG|1954 Asian Games|1}} |
![]() |
368b | {{#invoke:flag|IOC 2|HKG|1954 Asian Games|1}} |
Script error: The function "IOC 2" does not exist. | 184b |
{{flag IOC athlete|Mark Spitz|USA|1972 Summer}} |
![]() |
346b | {{#invoke:flag|IOC athlete|Mark Spitz|USA|1972 Summer}} |
Script error: The function "IOC athlete" does not exist. | 178b |
{{fb|CHN}} |
![]() |
560b | {{#invoke:flag|fb|CHN}} |
Script error: The function "fb" does not exist. | 151b |
{{fb-rt|CHN}} |
China ![]() |
482b | {{#invoke:flag|fb-rt|CHN}} |
Script error: The function "fb-rt" does not exist. | 151b |
{{fbicon|CHN}} |
![]() |
444b | {{#invoke:flag|fbicon|CHN}} |
Script error: The function "fbicon" does not exist. | 163b |
{{fba|CHN}} |
![]() |
625b | {{#invoke:flag|fba|CHN}} |
Script error: The function "fba" does not exist. | 149b |
{{fbaicon|CHN}} |
![]() |
500b | {{#invoke:flag|fbaicon|CHN}} |
Script error: The function "fbaicon" does not exist. | 159b |
{{ru|CHN}} |
![]() |
646b | {{#invoke:flag|ru|CHN}} |
Script error: The function "ru" does not exist. | 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 = {
Flagicon = '[[Category:Flagicons with missing country data templates]]',
Flagdeco = '[[Category:Flagdeco with missing country data templates]]',
}
local args = {}
local yesno = require('Module:Yesno')
if yesno(frame.args.getParent) then
for k,v in pairs(frame:getParent().args) do
if (v or '') ~= '' then
args[k] = v
end
end
end
for k,v in pairs(frame.args) do
if (v or '') ~= '' then
args[k] = v
end
end
if name == 'Flag+link' then
args.pref = args[1]
elseif name == 'Flagathlete' then
local athlete = args[1]
local code = args.code or args[2] or ''
args.text = function(data)
local tooltip = ((data['shortname alias'] or '') == '') and (data.alias or '') or data['shortname alias']
return athlete .. ' <span style="font-size:90%">(<abbr title="' .. tooltip .. '">' .. code .. '</abbr>)</span>';
end
args.variant = args.variant or args[3]
args.placeholder = true
elseif name == 'Flagmedalist' then
local medalist = args[1]
local country = args[2] or ""
local border = "|border"
args.variant = args.variant or args[3] or ""
args.text = function(data)
local iname = data["flag alias-"..args.variant] or data["flag alias"] or "Flag placeholder.svg"
local size = ((data.size or "") ~= "") and data.size or "23x15px"
if args["border"] then
if args["border"] == "" or args["border"] == "0" or args["border"] == "n" or args["border"] == "no" then
border = ""
end
else
local autoborder = data["border-"..args.variant] or data.border or ""
if autoborder~="border" then border = "" end
end
local clink = args["clink"] or args["link"] or data.alias or country
local cname = data["shortname alias"] or data.alias or country
local image = '<br/>[[File:'..iname..'|'..size..border..'|link=|alt=]] '
local display_name = clink=="" and cname or "[["..clink.."|"..cname.."]]"
return medalist .. image .. display_name
end
else
args.variant = args[2] or args.variant
args[2] = args[1]
end
args[1] = mode .. (args.opts or '')
args.missingcategory = categories[name]
args.noredlink = args.noredlink or 'no'
if 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'
}
check = require('Module:Check for unknown parameters')._check(opts,args)
else
check = ''
end
return require('Module:Flagg').luaMain(frame,args) .. check
end
function p.main(frame) return p._main(frame, 'Flag', 'uncb', false) end
p.flag = p.main
function p.deco(frame) return p._main(frame, 'Flagdeco', 'uxx', false) end
p.flagdeco = p.deco
function p.icon(frame) return p._main(frame, 'Flagicon', 'cxxl', true) end
p.flagicon = p.icon
function p.pluslink(frame) return p._main(frame, 'Flag+link', 'unpof', false) end
p['+link'] = p.pluslink
p['flag+link'] = p.pluslink
function p.country(frame) return p._main(frame, 'Flagcountry', 'unce', false) end
p.flagcountry = p.country
function p.athlete(frame) return p._main(frame, 'Flagathlete', 'unx', false) end
p.flagathlete = p.athlete
function p.medalist(frame) return p._main(frame, 'Flagmedalist', 'xxx', false) end
p.flagmedalist = p.medalist
return p