Module:Flag

local margs = require('Module:Arguments')

local notblank = function (v) return (v or '') ~= '' end

local function _main(frame, name, mode, key)
	local categories = {
		['Flag icon'] = '[[Category:Flag icons missing country data templates]]' ..
			frame:expandTemplate{title = 'Preview warning', args = {'Unrecognized country in Template:flag icon'}},
		['Flag decoration'] = '[[Category:Flag decoration missing country data templates]]',
	}

    local yesno = require('Module:Yesno')

	--Get input arguments
	local args = margs.getArgs(frame, {
		frameOnly = notblank(frame.args.frameonly), valueFunc =
			function(argkey,value)
				if value then
					value = mw.text.trim(value)
					--Change empty string to nil for all args except 'image' and 'border'
					if argkey=="image" or argkey=="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
		local sports = {
			['3x3'] = '3x3',
			bb = 'bb',
			fb = 'fb',
			fbicon = 'fb',
			ru = 'ru',
			fba = 'fba',
			fbw = 'fbw',
			fbaicon = 'fba',
			futsal = 'futsal'
		}
		if sports[name]then
			args.avar = args[1] and sports[name] or nil
			if name == 'fb' and yesno(args.align) == true then
				args.align='c'
			elseif sports[name] == 'fba' then
				if args[1] then
					local list = require("Module:Fba/list")
					local old = notblank(args.old) and "_old" or ""
					local country = args[1]
					local fba = list.fbas[country .. old]
					if not fba then -- look for aliases
						local countryTable = require('Module:CountryData').getcachedtable(frame, country)
						if countryTable and countryTable.alias then
							country = countryTable.alias
							fba = list.fbas[country .. old]
						end
					end
					if args.name == "code" then
						args.name = list.codes[country] or country
					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
				elseif args.name == "code" or args.name == "full" then
					args.name = ""
				end
			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 = notblank(args[2]) and categories[name] or nil
	args.noredlink = args.noredlink or 'notext'

	if args.placeholder and yesno(args.placeholder) ~= true then
		args[1] = args[1] .. 'o'
	end

	local 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,
	u			= function (frame) return _main(frame, 'Flag',				'unu'   ) end,
	country		= function (frame) return _main(frame, 'Flag country',		'unce'  ) end,
	list        = function (frame) return _main(frame, 'Flag list',			'usc'   ) 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,
	['3x3']		= function (frame) return _main(frame, '3x3',				'unpe'  ) end,
	bb			= function (frame) return _main(frame, 'bb',				'unpe'  ) 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',				'unpre' ) end,
	fbw			= function (frame) return _main(frame, 'fbw',				'unpe'  ) end,
	['fbw-rt']	= function (frame) return _main(frame, 'fbw',				'unpre' ) end,
	fbicon		= function (frame) return _main(frame, 'fbicon',			'pxxl'  ) end,
	fbaicon		= function (frame) return _main(frame, 'fbaicon',			'pxxl'  ) end,
	futsal		= function (frame) return _main(frame, 'futsal',			'unpe'  ) end,
	['futsal-rt'] = function (frame) return _main(frame, 'futsal',			'unpre' ) 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 setmetatable (p, {['__index'] =											-- returns table p with the metatable __index set so that, if the table KEY isn't recognized, it returns
	function (_, key)															-- this anonymous function called as function(p, KEY)
		return function (frame) return _main(frame, 'Flag', 'unc', key) end		-- which interprets the module call as {{flag|KEY}} and passes it to _main()
	end
})

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.

  1. 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:
  2. 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.
  3. 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.
  4. 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.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.