<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AFlagg%2Fsandbox2</id>
	<title>Module:Flagg/sandbox2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AFlagg%2Fsandbox2"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Flagg/sandbox2&amp;action=history"/>
	<updated>2026-05-07T03:53:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Flagg/sandbox2&amp;diff=136235&amp;oldid=prev</id>
		<title>imported&gt;Uzume: convert unnecessary global variables to local variables</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Flagg/sandbox2&amp;diff=136235&amp;oldid=prev"/>
		<updated>2020-07-02T11:20:03Z</updated>

		<summary type="html">&lt;p&gt;convert unnecessary global variables to local variables&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--For testing the use of data modules instead of the current templates; see [[WT:WPFT]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	--Get input arguments&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame,{valueFunc =&lt;br /&gt;
		function(key,value)&lt;br /&gt;
			if value then&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				--Change empty string to nil for all args except &amp;#039;image&amp;#039; and &amp;#039;border&amp;#039;&lt;br /&gt;
				if key==&amp;quot;image&amp;quot; or key==&amp;quot;border&amp;quot; or value~=&amp;quot;&amp;quot; then&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
	--Call main function&lt;br /&gt;
	return p.luaMain(frame,args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function loadCountryData(country)&lt;br /&gt;
	if country == &amp;quot;test&amp;quot; then&lt;br /&gt;
		return mw.loadData(&amp;quot;Module:Sandbox/SiBr4/Flag data&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local redirs = mw.loadData(&amp;quot;Module:Sandbox/Ahecht/flag/redirects&amp;quot;)&lt;br /&gt;
		while redirs[country] do&lt;br /&gt;
			country = redirs[country]&lt;br /&gt;
		end&lt;br /&gt;
		success, data = pcall(mw.loadData,&amp;quot;Module:Sandbox/Ahecht/flag/&amp;quot;..country)&lt;br /&gt;
		if success then&lt;br /&gt;
			return data[country]&lt;br /&gt;
		else --doesn&amp;#039;t exist, return error message&lt;br /&gt;
			return {error=data}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function firstNonNil(...)&lt;br /&gt;
	for i, value in ipairs({...}) do&lt;br /&gt;
		if value ~= nil then&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function ternary(cond,iftrue,iffalse)&lt;br /&gt;
	if cond then return iftrue else return iffalse end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function getvar(data,key,variant,lastDefault)&lt;br /&gt;
	if key and #key &amp;gt; 0 then&lt;br /&gt;
		if type(data) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			local subkey = &amp;quot;&amp;quot;&lt;br /&gt;
			--check for key in data (with literal hyphens)&lt;br /&gt;
			while #key &amp;gt; 0 and data[key] == nil do&lt;br /&gt;
				--remove last section of key and retry&lt;br /&gt;
				key, trail = string.match(key,&amp;quot;^(.-)(%-?[^%-]*)$&amp;quot;)&lt;br /&gt;
				subkey = trail..subkey&lt;br /&gt;
			end&lt;br /&gt;
			if #key &amp;gt; 0 then --data[key] exists&lt;br /&gt;
				--return it or look for subkey in nested table&lt;br /&gt;
				return getvar(data[key],string.gsub(subkey,&amp;quot;^%-&amp;quot;,&amp;quot;&amp;quot;),variant,lastDefault)&lt;br /&gt;
			else --key not found&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else --no subtable&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	elseif variant and #variant &amp;gt; 0 then --no key; look for variant&lt;br /&gt;
		if type(data) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			--remember default to fall back to&lt;br /&gt;
			if data[&amp;#039;#default&amp;#039;] ~= nil then&lt;br /&gt;
				lastDefault = data[&amp;#039;#default&amp;#039;]&lt;br /&gt;
			end&lt;br /&gt;
			local subvar = &amp;quot;&amp;quot;&lt;br /&gt;
			--check for variant in data (with literal hyphens)&lt;br /&gt;
			while #variant &amp;gt; 0 and data[variant] == nil do&lt;br /&gt;
				--remove last section of variant and retry&lt;br /&gt;
				variant, trail = string.match(variant,&amp;quot;^(.-)(%-?[^%-]*)$&amp;quot;)&lt;br /&gt;
				subvar = trail..subvar&lt;br /&gt;
			end&lt;br /&gt;
			if #variant &amp;gt; 0 then --data[variant] exists&lt;br /&gt;
				--return it or look for subvar in nested table&lt;br /&gt;
				return getvar(data[variant],nil,string.gsub(subvar,&amp;quot;^%-&amp;quot;,&amp;quot;&amp;quot;),lastDefault)&lt;br /&gt;
			else --variant not found&lt;br /&gt;
				return lastDefault&lt;br /&gt;
			end&lt;br /&gt;
		else --value or nil&lt;br /&gt;
			return data&lt;br /&gt;
		end&lt;br /&gt;
	else --base case (no key or variant); return data&lt;br /&gt;
		if type(data) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			return firstNonNil(data[&amp;quot;#default&amp;quot;], lastDefault)&lt;br /&gt;
		else --value or nil&lt;br /&gt;
			return data&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.getvar(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)&lt;br /&gt;
	local country = args[1]&lt;br /&gt;
	local key = args[2]&lt;br /&gt;
	local fallBack = require(&amp;#039;Module:Yesno&amp;#039;)(args[3])&lt;br /&gt;
	local data = loadCountryData(country)&lt;br /&gt;
	if data.error then&lt;br /&gt;
		return &amp;quot;&amp;lt;span class=&amp;#039;error&amp;#039;&amp;gt;&amp;quot;..data.error..&amp;quot;&amp;lt;span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local value&lt;br /&gt;
	if fallBack then&lt;br /&gt;
		value = getvar(data,nil,key)&lt;br /&gt;
	else&lt;br /&gt;
		value = getvar(data,key,nil)&lt;br /&gt;
	end&lt;br /&gt;
	return value==nil and &amp;quot;nil&amp;quot; or value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function fillParams(str,values)&lt;br /&gt;
	return string.gsub(str, &amp;quot;%{%{%{([^%{%}%|]+)(%|?)([^%{%}]-)%}%}%}&amp;quot;, function(param,pipe,default)&lt;br /&gt;
		if values[param] then&lt;br /&gt;
			return values[param]&lt;br /&gt;
		elseif pipe ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			return default&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;{{{&amp;quot;..param..&amp;quot;}}}&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.luaMain(frame,args)&lt;br /&gt;
	local function emp2nil(x)&lt;br /&gt;
		if x==&amp;quot;&amp;quot; then return nil else return x end&lt;br /&gt;
	end&lt;br /&gt;
	local function space2emp(x)&lt;br /&gt;
		if string.find(x,&amp;quot;^%s*$&amp;quot;) then return &amp;quot;&amp;quot; else return x end&lt;br /&gt;
	end&lt;br /&gt;
	local function nopx(x)&lt;br /&gt;
		if x~=nil and (string.find(x,&amp;quot;^%d+$&amp;quot;) or string.find(x,&amp;quot;^%d+px$&amp;quot;)) then return string.gsub(x,&amp;quot;^(.*)px&amp;quot;,&amp;quot;%1&amp;quot;) else return nil end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Country &amp;amp; mode parameters&lt;br /&gt;
	local mode = string.lower(args[1] or &amp;quot;usc&amp;quot;)&lt;br /&gt;
	local mi = string.sub(mode,1,1)&lt;br /&gt;
	local ms = string.sub(mode,2,2)&lt;br /&gt;
	local mn = string.sub(mode,3,3)&lt;br /&gt;
	local me = string.sub(mode,4,-1)&lt;br /&gt;
	&lt;br /&gt;
	local country = args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
	local avar = args[&amp;quot;avar&amp;quot;] or args[&amp;quot;altvar&amp;quot;]&lt;br /&gt;
	local clink = args[&amp;quot;clink&amp;quot;] or args[&amp;quot;link&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	--Get country data &amp;amp; altvar data&lt;br /&gt;
	local data = args[&amp;quot;nodata&amp;quot;] and {} or loadCountryData(country)&lt;br /&gt;
	if data.error then&lt;br /&gt;
		return &amp;quot;&amp;lt;span class=&amp;#039;error&amp;#039;&amp;gt;&amp;quot;..data.error..&amp;quot;&amp;lt;span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local alink, amap, asuf&lt;br /&gt;
	if avar then&lt;br /&gt;
		local altData = mw.loadData(&amp;quot;Module:Flagg/Altvar data/sandbox&amp;quot;)&lt;br /&gt;
		amap = altData.map&lt;br /&gt;
		avar = string.gsub(string.lower(avar or &amp;quot;&amp;quot;),&amp;quot;[ \-]&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
		avar = altData.aliases[avar] or avar&lt;br /&gt;
		if not amap[avar] then error(&amp;quot;Unknown avar&amp;quot;) end&lt;br /&gt;
		local age = args[&amp;quot;age&amp;quot;] and &amp;quot;under-&amp;quot;..args[&amp;quot;age&amp;quot;] or amap[avar].age or &amp;quot;&amp;quot;&lt;br /&gt;
		asuf = amap[avar].altlink&lt;br /&gt;
		alink = getvar(data,&amp;quot;link alias&amp;quot;,amap[avar].altvar) or (clink or data[&amp;quot;shortname alias&amp;quot;] or data.alias or country)..&amp;quot; &amp;quot;..asuf&lt;br /&gt;
		alink = fillParams(alink,{age=age,mw=amap[avar].mw})&lt;br /&gt;
	else&lt;br /&gt;
		avar = &amp;quot;&amp;quot;&lt;br /&gt;
		amap = {[&amp;quot;&amp;quot;]={altvar=&amp;quot;&amp;quot;}}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Name and link parameters&lt;br /&gt;
	clink = clink or data.alias or country&lt;br /&gt;
	&lt;br /&gt;
	local pref = args[&amp;quot;pref&amp;quot;]&lt;br /&gt;
	local suff = args[&amp;quot;suff&amp;quot;] or asuf&lt;br /&gt;
	if not pref and not suff then --Default prefix&lt;br /&gt;
		pref = &amp;quot;Flag of&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local yn_map = {[&amp;quot;&amp;quot;]=0; [&amp;quot;0&amp;quot;]=0; [&amp;quot;no&amp;quot;]=0; [&amp;quot;n&amp;quot;]=0; [&amp;quot;1&amp;quot;]=1; [&amp;quot;yes&amp;quot;]=1; [&amp;quot;y&amp;quot;]=1}&lt;br /&gt;
	local fthe = (args[&amp;quot;pthe&amp;quot;] and yn_map[args[&amp;quot;pthe&amp;quot;]]~=0) or (args[&amp;quot;the&amp;quot;] and yn_map[args[&amp;quot;the&amp;quot;]]~=0)&lt;br /&gt;
	local nthe = (args[&amp;quot;nthe&amp;quot;] and yn_map[args[&amp;quot;nthe&amp;quot;]]~=0) or (args[&amp;quot;the&amp;quot;] and yn_map[args[&amp;quot;the&amp;quot;]]~=0)&lt;br /&gt;
	fthe = fthe and (pref and &amp;quot;t&amp;quot; or &amp;quot;T&amp;quot;)..&amp;quot;he &amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
	nthe = nthe and (pref and &amp;quot;t&amp;quot; or &amp;quot;T&amp;quot;)..&amp;quot;he &amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
	local flink = args[&amp;quot;plink&amp;quot;] or args[&amp;quot;flink&amp;quot;] or alink&lt;br /&gt;
	              or clink==&amp;quot;&amp;quot; and &amp;quot;&amp;quot; or space2emp((pref or &amp;quot;&amp;quot;)..&amp;quot; &amp;quot;)..fthe..clink..space2emp(&amp;quot; &amp;quot;..(suff or &amp;quot;&amp;quot;))&lt;br /&gt;
	local fsec = args[&amp;quot;psection&amp;quot;] or args[&amp;quot;section&amp;quot;]&lt;br /&gt;
	local csec = args[&amp;quot;csection&amp;quot;] or args[&amp;quot;section&amp;quot;]&lt;br /&gt;
	fsec = fsec and &amp;quot;#&amp;quot;..fsec or &amp;quot;&amp;quot;&lt;br /&gt;
	csec = csec and &amp;quot;#&amp;quot;..csec or &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	if string.find(me,&amp;quot;f&amp;quot;) then&lt;br /&gt;
		if mw.title.new( flink ).exists == false then&lt;br /&gt;
			flink = clink&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local name = args[&amp;quot;name&amp;quot;]&lt;br /&gt;
	if not name then&lt;br /&gt;
		local cname = string.find(me,&amp;quot;e&amp;quot;) and (getvar(data,&amp;quot;name alias&amp;quot;,amap[avar].altvar)&lt;br /&gt;
		              or data[&amp;quot;shortname alias&amp;quot;] or data.alias) or country&lt;br /&gt;
		if mn == &amp;quot;f&amp;quot; then&lt;br /&gt;
			name = cname==&amp;quot;&amp;quot; and &amp;quot;&amp;quot; or space2emp((pref or &amp;quot;&amp;quot;)..&amp;quot; &amp;quot;)..nthe..cname..space2emp(&amp;quot; &amp;quot;..(suff or &amp;quot;&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			name = cname&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Image parameters&lt;br /&gt;
	local pimage = args[&amp;quot;image&amp;quot;]&lt;br /&gt;
	local placeholder = &amp;quot;Flag placeholder.svg&amp;quot;&lt;br /&gt;
	local variant = args[&amp;quot;variant&amp;quot;] or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
	local image_map = {[&amp;quot;&amp;quot;]=placeholder; [&amp;quot;none&amp;quot;]=placeholder; [&amp;quot;blank&amp;quot;]=placeholder}&lt;br /&gt;
	if pimage then --Remove namespace&lt;br /&gt;
		pimage = string.gsub(pimage,&amp;quot;^[Ff][Ii][Ll][Ee]:&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
		pimage = string.gsub(pimage,&amp;quot;^[Ii][Mm][Aa][Gg][Ee]:&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local iname = image_map[pimage] or pimage&lt;br /&gt;
	&lt;br /&gt;
	local size = args[&amp;quot;size&amp;quot;] or args[&amp;quot;sz&amp;quot;]&lt;br /&gt;
	local size_map = {xs=&amp;quot;12x8px&amp;quot;; s=&amp;quot;17x11px&amp;quot;; m=&amp;quot;23x15px&amp;quot;; l=&amp;quot;32x21px&amp;quot;; xl=&amp;quot;46x30px&amp;quot;}&lt;br /&gt;
	if size==nil or string.find(size,&amp;quot;^%d*x?%d+px$&amp;quot;) then&lt;br /&gt;
		--valid EIS size (..px, x..px or ..x..px) or unset&lt;br /&gt;
	elseif string.find(size,&amp;quot;^%d*x?%d+$&amp;quot;) then --EIS size without &amp;quot;px&amp;quot; suffix&lt;br /&gt;
		size=size..&amp;quot;px&amp;quot;&lt;br /&gt;
	else --size from map, or invalid value&lt;br /&gt;
		size = size_map[size] or nil&lt;br /&gt;
	end&lt;br /&gt;
	local border = args[&amp;quot;border&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	if iname then&lt;br /&gt;
		size = size or &amp;quot;23x15px&amp;quot;&lt;br /&gt;
		if yn_map[border]==0 then border = &amp;quot;&amp;quot; else border = &amp;quot;|border&amp;quot; end&lt;br /&gt;
	else&lt;br /&gt;
		iname = getvar(data,&amp;quot;flag alias-&amp;quot;..amap[avar].altvar..&amp;quot;-&amp;quot;..variant)&lt;br /&gt;
			 or getvar(data,&amp;quot;flag alias-&amp;quot;..variant)&lt;br /&gt;
			 or getvar(data,&amp;quot;flag alias&amp;quot;,amap[avar].altvar) or placeholder&lt;br /&gt;
		size = size or emp2nil(data.size) or &amp;quot;23x15px&amp;quot;&lt;br /&gt;
		if border then&lt;br /&gt;
			if yn_map[border]==0 then border = &amp;quot;&amp;quot; else border = &amp;quot;|border&amp;quot; end&lt;br /&gt;
		else&lt;br /&gt;
			local autoborder = firstNonNil(getvar(data,&amp;quot;border-&amp;quot;..amap[avar].altvar..&amp;quot;-&amp;quot;..variant),&lt;br /&gt;
				                           getvar(data,&amp;quot;border-&amp;quot;..variant),&lt;br /&gt;
			                               getvar(data,&amp;quot;border&amp;quot;,amap[avar].altvar))&lt;br /&gt;
			if autoborder == false then border = &amp;quot;&amp;quot; else border = &amp;quot;|border&amp;quot; end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local am = &amp;quot;&amp;quot;&lt;br /&gt;
	if args[&amp;quot;alt&amp;quot;] or string.find(me,&amp;quot;a&amp;quot;) then&lt;br /&gt;
		am = args[&amp;quot;alt&amp;quot;] or args[&amp;quot;name&amp;quot;] or country&lt;br /&gt;
		am = am..&amp;quot;|&amp;quot;..am&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Build display name&lt;br /&gt;
	local text = args[&amp;quot;text&amp;quot;]&lt;br /&gt;
	if not text then&lt;br /&gt;
		if mn==&amp;quot;x&amp;quot; then --no text&lt;br /&gt;
			text = &amp;quot;&amp;quot;&lt;br /&gt;
		elseif mn==&amp;quot;p&amp;quot; or mn==&amp;quot;f&amp;quot; then --prefix/suffix link&lt;br /&gt;
			text = flink==&amp;quot;&amp;quot; and name or &amp;quot;[[&amp;quot;..flink..fsec..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;quot;&lt;br /&gt;
		elseif mn==&amp;quot;b&amp;quot; then --both prefix/suffix and normal country link&lt;br /&gt;
			local preflink = pref and (flink==&amp;quot;&amp;quot; and pref..&amp;quot; &amp;quot; or &amp;quot;[[&amp;quot;..flink..fsec..&amp;quot;|&amp;quot;..pref..&amp;quot;]] &amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
			local sufflink = suff and (flink==&amp;quot;&amp;quot; and &amp;quot; &amp;quot;..suff or &amp;quot; [[&amp;quot;..flink..fsec..&amp;quot;|&amp;quot;..suff..&amp;quot;]]&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
			local namelink = (name==&amp;quot;&amp;quot; and &amp;quot;&amp;quot; or nthe)..(clink==&amp;quot;&amp;quot; and name or &amp;quot;[[&amp;quot;..clink..csec..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;quot;)&lt;br /&gt;
			text = preflink..namelink..sufflink&lt;br /&gt;
		elseif mn==&amp;quot;d&amp;quot; then --data template&lt;br /&gt;
			local title = mw.title.new(&amp;quot;Template:Country data &amp;quot;..country)&lt;br /&gt;
			--check if redirect&lt;br /&gt;
			if title.isRedirect then&lt;br /&gt;
				text = &amp;quot;&amp;lt;span class=\&amp;quot;plainlinks\&amp;quot;&amp;gt;[&amp;quot;..title:fullUrl(&amp;quot;redirect=no&amp;quot;)..&amp;quot; &amp;quot;..name..&amp;quot;]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				text = &amp;quot;[[&amp;quot;..title.fullText..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		elseif mn==&amp;quot;u&amp;quot; then --unlinked&lt;br /&gt;
			text = name&lt;br /&gt;
		else --country link (default)&lt;br /&gt;
			text = clink==&amp;quot;&amp;quot; and name or &amp;quot;[[&amp;quot;..clink..csec..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Build image&lt;br /&gt;
	local ilink = args[&amp;quot;ilink&amp;quot;]&lt;br /&gt;
	if not ilink then&lt;br /&gt;
		if mi==&amp;quot;x&amp;quot; or (iname==placeholder and pimage~=placeholder) then --no image/invisible image&lt;br /&gt;
			iname = placeholder&lt;br /&gt;
			border = &amp;quot;&amp;quot;&lt;br /&gt;
			ilink = &amp;quot;|link=&amp;quot;&lt;br /&gt;
			am = &amp;quot;&amp;quot;&lt;br /&gt;
		elseif mi==&amp;quot;i&amp;quot; then --image page link&lt;br /&gt;
			ilink = &amp;quot;&amp;quot;&lt;br /&gt;
		elseif mi==&amp;quot;c&amp;quot; then --country link&lt;br /&gt;
			ilink = &amp;quot;|link=&amp;quot;..clink..(clink==&amp;quot;&amp;quot; and &amp;quot;&amp;quot; or csec)&lt;br /&gt;
		elseif mi==&amp;quot;p&amp;quot; or mi==&amp;quot;f&amp;quot; then --prefix/suffix link&lt;br /&gt;
			ilink = &amp;quot;|link=&amp;quot;..flink..(flink==&amp;quot;&amp;quot; and &amp;quot;&amp;quot; or fsec)&lt;br /&gt;
		elseif mi==&amp;quot;d&amp;quot; then --data template&lt;br /&gt;
			local title = mw.title.new(&amp;quot;Template:Country data &amp;quot;..country)&lt;br /&gt;
			--check if redirect&lt;br /&gt;
			if title.isRedirect then&lt;br /&gt;
				ilink = &amp;quot;|link=&amp;quot;..title:fullUrl(&amp;quot;redirect=no&amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				ilink = &amp;quot;|link=&amp;quot;..title.fullText&lt;br /&gt;
			end&lt;br /&gt;
		else --unlinked (default)&lt;br /&gt;
			ilink = &amp;quot;|link=&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if am == &amp;quot;&amp;quot; and string.find(me,&amp;quot;l&amp;quot;) then&lt;br /&gt;
		am = mw.ustring.sub(ilink,7,-1)&lt;br /&gt;
	end&lt;br /&gt;
	local image = &amp;quot;[[File:&amp;quot;..iname..&amp;quot;|&amp;quot;..size..border..ilink..&amp;quot;|alt=&amp;quot;..am..&amp;quot;]]&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	if iname==placeholder then&lt;br /&gt;
		if require(&amp;#039;Module:yesno&amp;#039;)(args[&amp;quot;noredlink&amp;quot;]) == false then&lt;br /&gt;
			iname = &amp;#039;&amp;#039;&lt;br /&gt;
			image = &amp;quot;[[:Template:Country data &amp;quot;..country..&amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if (args[&amp;quot;missingcategory&amp;quot;] or &amp;#039;&amp;#039;) ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			image = image..args[&amp;quot;missingcategory&amp;quot;]&lt;br /&gt;
		end&lt;br /&gt;
		if string.find(me,&amp;quot;b&amp;quot;) then&lt;br /&gt;
			text = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Combine image and name with separator&lt;br /&gt;
	local align = args[&amp;quot;align&amp;quot;] or args[&amp;quot;al&amp;quot;]&lt;br /&gt;
	local nalign = args[&amp;quot;nalign&amp;quot;] or args[&amp;quot;nal&amp;quot;]&lt;br /&gt;
	local align_map = {left=&amp;quot;left&amp;quot;, l=&amp;quot;left&amp;quot;, center=&amp;quot;center&amp;quot;, centre=&amp;quot;center&amp;quot;, c=&amp;quot;center&amp;quot;, middle=&amp;quot;center&amp;quot;, m=&amp;quot;center&amp;quot;, right=&amp;quot;right&amp;quot;, r=&amp;quot;right&amp;quot;}&lt;br /&gt;
	local out&lt;br /&gt;
	if string.find(me,&amp;quot;r&amp;quot;) then&lt;br /&gt;
		--image right of name&lt;br /&gt;
		if (ms==&amp;quot;x&amp;quot; and mi==&amp;quot;x&amp;quot;) or (string.find(me,&amp;quot;o&amp;quot;) and iname==placeholder and pimage~=placeholder) then --name only&lt;br /&gt;
			out = text&lt;br /&gt;
		elseif ms==&amp;quot;x&amp;quot; then --no separator&lt;br /&gt;
			out = text..&amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		elseif ms==&amp;quot;n&amp;quot; then --non-breaking space&lt;br /&gt;
			out = text..&amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		elseif ms==&amp;quot;l&amp;quot; then --line break&lt;br /&gt;
			out = text..&amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		elseif ms==&amp;quot;t&amp;quot; then --table cell&lt;br /&gt;
			out = &amp;quot;style=\&amp;quot;text-align:&amp;quot;..(align_map[nalign] or &amp;quot;left&amp;quot;)..&amp;quot;\&amp;quot;|&amp;quot;..text..&amp;quot;||style=\&amp;quot;text-align:&amp;quot;..(align_map[align] or &amp;quot;center&amp;quot;)..&amp;quot;;\&amp;quot;|&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		else --fixed-width span box (default)&lt;br /&gt;
			local width = args[&amp;quot;width&amp;quot;] or args[&amp;quot;w&amp;quot;] or require(&amp;quot;Module:Flaglist&amp;quot;).luawidth(size)&lt;br /&gt;
			out = text..&amp;quot;&amp;amp;nbsp;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot; style=\&amp;quot;display:inline-block;width:&amp;quot;..width..&amp;quot;px;text-align:&amp;quot;..(align_map[align] or &amp;quot;right&amp;quot;)..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else --image left of name&lt;br /&gt;
		if (ms==&amp;quot;x&amp;quot; and mi==&amp;quot;x&amp;quot;) or (string.find(me,&amp;quot;o&amp;quot;) and iname==placeholder and pimage~=placeholder) then --name only&lt;br /&gt;
			out = text&lt;br /&gt;
		elseif ms==&amp;quot;x&amp;quot; then --no separator&lt;br /&gt;
			out = &amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..text&lt;br /&gt;
		elseif ms==&amp;quot;n&amp;quot; then --non-breaking space&lt;br /&gt;
			out = &amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;quot;..text&lt;br /&gt;
		elseif ms==&amp;quot;l&amp;quot; then --line break&lt;br /&gt;
			out = &amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;..text&lt;br /&gt;
		elseif ms==&amp;quot;t&amp;quot; then --table cell&lt;br /&gt;
			out = &amp;quot;style=\&amp;quot;text-align:&amp;quot;..(align_map[align] or &amp;quot;center&amp;quot;)..&amp;quot;;\&amp;quot;|&amp;lt;span class=\&amp;quot;flagicon\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;||style=\&amp;quot;text-align:&amp;quot;..(align_map[nalign] or &amp;quot;left&amp;quot;)..&amp;quot;\&amp;quot;|&amp;quot;..text&lt;br /&gt;
		else --fixed-width span box (default)&lt;br /&gt;
			local width = nopx(args[&amp;quot;width&amp;quot;] or args[&amp;quot;w&amp;quot;]) or require(&amp;quot;Module:Flaglist&amp;quot;).luawidth(size)&lt;br /&gt;
			out = &amp;quot;&amp;lt;span class=\&amp;quot;flagicon\&amp;quot; style=\&amp;quot;display:inline-block;width:&amp;quot;..width..&amp;quot;px;text-align:&amp;quot;..(align_map[align] or &amp;quot;left&amp;quot;)..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..image..&amp;quot;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;quot;..text&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if string.find(me,&amp;quot;w&amp;quot;) then --avoid wrapping&lt;br /&gt;
		out = &amp;quot;&amp;lt;span class=\&amp;quot;nowrap\&amp;quot;&amp;gt;&amp;quot;..out..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Tracking categories&lt;br /&gt;
	local cat = &amp;quot;&amp;quot;&lt;br /&gt;
	if pimage and not image_map[pimage] and country~=&amp;quot;&amp;quot; and data[&amp;quot;flag alias&amp;quot;] and not args.demo then&lt;br /&gt;
		cat = &amp;quot;[[Category:Pages using Flagg with specified image instead of data template image]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return out..cat&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Uzume</name></author>
	</entry>
</feed>