Module:Flag
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 multil…
| 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 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|main}}
- {{flagcountry}} → {{#invoke:flag|country}}
- {{flagdeco}} → {{#invoke:flag|deco}}
- {{flagicon}} → {{#invoke:flag|icon}}
- {{flag+link}} → {{#invoke:flag|+link}}
Examples
| Template | Module | ||||
|---|---|---|---|---|---|
| Code | Output | PEIS | Code | Output | PEIS |
{{flag|China}} |
443b | {{#invoke:flag|main|China}} |
Template:Country data main | 128b | |
{{flagcountry|China}} |
577b | {{#invoke:flag|country|China}} |
128b | ||
{{flagdeco|China}} |
452b | {{#invoke:flag|deco|China}} |
107b | ||
{{flagicon|China}} |
548b | {{#invoke:flag|icon|China}} |
117b | ||
{{flag+link|History of|China}} |
663b | {{#invoke:flag|+link|History of|China}} |
139b | ||
local margs = require('Module:Arguments')
local function _main(frame, name, mode, key)
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 = margs.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, sufftext = "", ""
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]
elseif key ~= nil then
args.variant = args.variant or args[1]
args[2] = key
else
sports = {
fb = 'fb',
['fb-rt'] = 'fb',
fbicon = 'fb',
ru = 'ru',
fba = 'fba',
fbaicon = 'fba'
}
if sports[name] and args[1] then
args.avar = sports[name]
if name == 'fb' and yesno(args.align) == true then
args.align='c'
elseif args.avar == 'fba' then
local list = require("Module:Fba/list")
local old = ((args.old or "") ~= "") and "_old" or ""
local fba = list.fbas[args[1] .. old]
if not fba and string.len(args[1]) == 3 then
for k, v in pairs(list.codes) do
if v == args[1] then fba = list.fbas[k]; break end
end
end
if args.name == "code" then
args.name = list.codes[args[1]]
elseif args.name == "full" then
args.name = fba
end
if fba then
mode = string.gsub(mode, "p", "c")
args.link = fba
end
args.altlink = args.old
end
elseif name == "Flag team" and (args.code or args[1]) then
sufftext = ' <span style="font-size:90%;">('..(args.code or args[1])..')</span>'
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
check = ''
if name == 'Flag icon' and mw.title.getCurrentTitle().namespace == 0 then
local unknown = '[[Category:Pages using ' .. mw.ustring.lower(name) ..
' template with unknown parameters|_VALUE_' .. frame:getParent():getTitle() .. ']]'
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)
end
return preftext .. require('Module:Flagg').luaMain(frame,args) .. sufftext .. check
end
local p = {
[''] = function (frame) return _main(frame, 'Flag', 'unc' ) end,
decoration = function (frame) return _main(frame, 'Flag decoration', 'uxx' ) end,
icon = function (frame) return _main(frame, 'Flag icon', 'cxxl' ) end,
link = function (frame) return _main(frame, 'Flag link', 'unpe' ) end,
['+link'] = function (frame) return _main(frame, 'Flag+link', 'unpefo') end,
country = function (frame) return _main(frame, 'Flag country', 'unce' ) end,
team = function (frame) return _main(frame, 'Flag team', 'unce' ) end,
athlete = function (frame) return _main(frame, 'Flag athlete', 'unape' ) end,
medalist = function (frame) return _main(frame, 'Flag medalist', 'unce' ) end,
fb = function (frame) return _main(frame, 'fb', 'unpe' ) end,
fba = function (frame) return _main(frame, 'fba', 'unpe' ) end,
['fb-rt'] = function (frame) return _main(frame, 'fb-rt', 'unpre' ) end,
fbicon = function (frame) return _main(frame, 'fbicon', 'pxxl' ) end,
fbaicon = function (frame) return _main(frame, 'fbaicon', 'pxxl' ) end,
ru = function (frame) return _main(frame, 'ru', 'unpe' ) end,
IOC = function (frame) return require('Module:Country_alias').flagIOC(frame:newChild{ title = 'Template:Flag IOC' }) end,
IOC2 = function (frame) return require('Module:Country_alias').flagXYZ(frame:newChild{ title = 'Template:Flag IOC 2', args = {name = margs.getArgs(frame).name or '', type = 'name'} }) end,
IOCathlete = function (frame) return require('Module:Country_alias').flagXYZ(frame:newChild{ title = 'Template:Flag IOC athlete', args = {type = 'athlete-O'} }) end,
}
p['deco'] = p.decoration
p['IOC 2'] = p.IOC2
p['IOC athlete'] = p.IOCathlete
local function index (_, key) -- This function gets called by the metatable as index(table, key)
return function (frame) return _main(frame, 'Flag', 'unc', key) end -- Interpret it as {{flag|key}} as pass to _main()
end
local metatable = {['__index'] = index} -- Set __index, which is returned if table[key] is nil, to the index function
setmetatable (p, metatable) -- Assign the metatable to the returned table
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.