Lompat ke isi

Modul:Flag

Ḍâri Wikipèḍia bhâsa Madhurâ, lombhung pangataowan mardhika

TemplateStyles' src attribute must not be empty.

TemplateStyles' src attribute must not be empty.

TemplateStyles' src attribute must not be empty.

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.

Generic flag templates

[beccè' sombher]

Sports flag templates

[beccè' sombher]

Examples

[beccè' sombher]
Template Module
Code Output PEIS Code Output PEIS
{{flag|CHN}}  CHN 443b {{#invoke:flag||CHN}}  CHN 128b
{{flag country|CHN}}  Tiongkok 577b {{#invoke:flag|country|CHN}}  Tiongkok 128b
{{flag decoration|CHN}}/{{flag deco|CHN}} Cèṭa'an:Flag deco 452b {{#invoke:flag|decoration|CHN}}/{{#invoke:flag|deco|CHN}} 107b
{{flag icon|CHN}} Tiongkok 548b {{#invoke:flag|icon|CHN}} Tiongkok 117b
{{flag link|CHN|at the 2004 Summer Olympics}}  Tiongkok 497b {{#invoke:flag|link|CHN|at the 2004 Summer Olympics}}  Tiongkok 198b
{{flag+link|History of|CHN}} Cèṭa'an:Flag+link 663b {{#invoke:flag|+link|History of|CHN}}  Tiongkok 139b
{{flag team|GBR}} Cèṭa'an:Flag team 804b {{#invoke:flag|team|GBR}}  United Kingdom (GBR) 193b
{{flag athlete|Andy Murray|GBR}} Cèṭa'an:Flag athlete 617b {{#invoke:flag|athlete|Andy Murray|GBR}}  Andy Murray (GBR) 210b
{{flag medalist|Andy Murray|GBR}} Cèṭa'an:Flag medalist 469b {{#invoke:flag|medalist|Andy Murray|GBR}} Andy Murray
 United Kingdom
129b
{{flag IOC|CAN|1924 Winter|1}} Cèṭa'an:Flag IOC 326b {{#invoke:flag|IOC|CAN|1924 Winter|1}}  Canada (1) 163b
{{flag IOC 2|HKG|1954 Asian Games|1}}  Hong Kong (1) 368b {{#invoke:flag|IOC 2|HKG|1954 Asian Games|1}}  Hong Kong (1) 184b
{{flag IOC athlete|Mark Spitz|USA|1972 Summer}} Cèṭa'an:Flag IOC athlete 346b {{#invoke:flag|IOC athlete|Mark Spitz|USA|1972 Summer}}  Mark Spitz (USA) 178b
{{fb|CHN}}  Tiongkok 560b {{#invoke:flag|fb|CHN}} Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. 151b
{{fb-rt|CHN}} Cèṭa'an:Fb-rt 482b {{#invoke:flag|fb-rt|CHN}} Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. 151b
{{fbicon|CHN}} Cèṭa'an:Fbicon 444b {{#invoke:flag|fbicon|CHN}} Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. 163b
{{ru|CHN}} Cèṭa'an:Ru 646b {{#invoke:flag|ru|CHN}} Lua error in package.lua at line 80: module 'Module:Flagg/Altvar data' not found. 210b

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 margs = require('Module:Arguments')

local function _main(frame, name, mode)
	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]
	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
		elseif name == "Flag team" and (args.code or args[1]) then
			sufftext = '&nbsp;<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

	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
	
	check = ''
	
	if name == 'Flag icon' 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)
	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,
	['fb-rt']  = function (frame) return _main(frame, 'fb-rt',           'unpre' ) end,
	fbicon     = function (frame) return _main(frame, 'fbicon',          '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

return p