Módulo:Bandeira

Revisão em 00h39min de 14 de maio de 2024 por Jaewoo (discussão | contribs) (Criou a página com "--[[ This module is intended to replace the functionality of {{bandeira2}} and related templates. It provides several methods, including ]] local bandeira = {}; --math_mod = mw.loadData( "Módulo:Math" ); -- Chargement de la banque de données des langues avec gestion d'erreur. local gdata local success, resultado = pcall (mw.loadData, "Módulo:Bandeira/Dados" ) if success then gdata = resultado else -- Banco de dados mínima em caso de bug em Módulo:Língua/...")
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)

A documentação para este módulo pode ser criada na página Módulo:Bandeira/doc

--[[
This module is intended to replace the functionality of {{bandeira2}} and related
templates.  It provides several methods, including
]]
local bandeira = {};
--math_mod = mw.loadData( "Módulo:Math" );
-- Chargement de la banque de données des langues avec gestion d'erreur.
local gdata
local success, resultado = pcall (mw.loadData, "Módulo:Bandeira/Dados" )
if success then
				gdata = resultado
else
				-- Banco de dados mínima em caso de bug em Módulo:Língua/Dados
				gdata={}
				gdata.data={};
				gdata.idByName={};
				gdata.idByCIO={};
				gdata.idByISO={};
				gdata.data[45]={qid="Q45", flag="Flag_of_France.svg", label="France", sitelink="$label", cio="POR", genre="ms"}
				gdata.idByName['portugal']=45;
				gdata.idByCIO['POR']=45;
				gdata.idByISO['POR']=45;
end
local gflag
local success, resultado = pcall (mw.loadData, "Módulo:Bandeira/Imagem" )
if success then
				gflag = resultado
else
				-- Banco de dados mínima em caso de bug em Módulo:Língua/Dados
				gflag={}
				gflag.flag={};
end
local gdominio
local success, resultado = pcall (mw.loadData, "Módulo:Bandeira/Domínio" )
if success then
				gdominio = resultado
else
				-- Banco de dados mínima em caso de bug em Módulo:Língua/Dados
				gdominio={}
				gdominio.dominiolista={
					defaut = {regexp="[[$sitelink|$label]]" , desc="artigo sobre o país"}
					,bandeira = {regexp="bandeira", desc=""}
					}
				gdominio.genre={ms={},msa={},msi={},msia={},fs={},fsa={},fsi={},fsia={},mp={},fp={}}
				gdominio.jo={}
end
local function _getFlag(image,aaaammdd,imageajudante)
				local indexdate = aaaammdd .. string.rep('0', 8 - #aaaammdd)
				
				if (indexdate ~= '00000000' and image~=nil) then       
								for k,v in pairs( image) do
												if v["inicio"] <= indexdate and indexdate <= v["fim"] then
																return v
												end
								end
				end
				if(image~=nil) then
								d= image[1];
				elseif(imageajudante["flag"]~=nil) then
								local f=imageajudante["flag"]
								d= {civilflag=f,stateflag=f,warflag=f,civilensign=f,stateensign=f,warensign=f};
				else
								local f="Flag_of_None.svg"
								d= {civilflag=f,stateflag=f,warflag=f,civilensign=f,stateensign=f,warensign=f};
				end
				
				return d;
end
local function _getCompetition(c,aaaa)
				local rep="";
				if(c=="CM" or c=="copadomundo") then
								rep="na Copa mundial"
				elseif(c=="CE" or c=="euro") then
								rep="no campeonato da Europa"
				elseif(c=="ChM") then
								rep="no campeonato do mundo"
				elseif(c=="CAN" or c=="copadasconfederacoes") then
								rep="na Copa das Confederações"
				elseif(c=="en" ) then
								rep="en"
				elseif(c=="jo" ) then
								rep="nos Jogos Olímpicos"
				elseif(c=="jp" ) then
								rep="nos Jogos paraolímpicos"
				end
				
				--edition
				if(aaaa ~= nil and aaaa ~= "") then
								if(c=="jo"  or c=="jp" ) then
												local o=gdominio.jo["_"..aaaa];
												if(o ~= nil) then
																rep=rep.." "..o
												end            
								else
												rep=rep.." "..aaaa
								end
				end
				return rep
end
--[[
pais
Exibe o país acompanhado pela sua bandeira {{bandeira2}}
Uso:
				{{Invoke:Bandeira|pais|Portugal}}
				
]]
local function printIcon(data,image,dominio,size,day)    
				local border='';  
				local alt='';
				if data["flagborder"] ~= "no" then
								border='border|'
				end
				
				local datagenre=data["genre"] or "ms"
				alt=string.gsub(gdominio.dominiolista["bandeira"]["regexp"], "%$(%w+)",gdominio.genre[datagenre])
				alt=string.gsub(alt, "%$(%w+)", data)
				alt=string.gsub(alt, "%$(%w+)", data) --último passe para $name
				
				local filescr="$civilflag"  ;
				if(gdominio.dominiolista[dominio]~=nil and gdominio.dominiolista[dominio]["flag"]~=nil) then
								--bandeira adequada
								filescr=gdominio.dominiolista[dominio]["flag"]
				end    
				
				local pastimage=_getFlag(image,day,data)    
				
				filescr=string.gsub(filescr, "%$(%w+)", pastimage)
				filescr=string.gsub(filescr, "%$(%w+)", pastimage)
				
				return '<span class="flagicon">' ..
																'[[Ficheiro:' .. filescr .. '|' .. size ..'px|' .. border .. alt ..']]' ..
												'</span>';
end
local function printData(text,dominio,extra)    
				local target='';
				local datagenre=text["genre"] or "ms"
				if text["label"] ~= nil and gdominio.dominiolista[dominio] ~= nil then
								target=string.gsub(gdominio.dominiolista[dominio]["regexp"], "%$(%w+)", gdominio.genre[datagenre])
								target=string.gsub(target, "%$(%w+)", text)
								target=string.gsub(target, "%$(%w+)", text) --último passe para $name
								target=string.gsub(target, "%$(%w+)", extra)
								target=string.gsub(target, "%$(%w+)", "") --um último a remover o não-atribuído
				end
				--Caso especial das ilhas um nome comum com um espaço na frente
				--target=string.gsub(target, " República", " república") NON cf Usage_des_majuscules_en_français_lorsque_le_spécifique_est_un_adjectif
				target=string.gsub(target, " Ilha", " ilha")
				--target=string.gsub(target, "'Île", "'île")
				return target;
end
local function _latinise_letters(tmparg)
												--2>--remove case
												tmparg=mw.ustring.lower(tmparg);
												--2>--remove acccent
												tmparg=mw.ustring.gsub(tmparg, "[áàâäãå]", "a");
												tmparg=mw.ustring.gsub(tmparg, "[æ]", "ae");
												tmparg=mw.ustring.gsub(tmparg, "[ç]", "c");
												tmparg=mw.ustring.gsub(tmparg, "[éèêë]", "e");
												tmparg=mw.ustring.gsub(tmparg, "[íìîï]", "i");
												tmparg=mw.ustring.gsub(tmparg, "[ñ]", "n");
												tmparg=mw.ustring.gsub(tmparg, "[óòôöõ]", "o");
												tmparg=mw.ustring.gsub(tmparg, "[œ]", "oe");
												tmparg=mw.ustring.gsub(tmparg, "[úùûü]", "u");
												tmparg=mw.ustring.gsub(tmparg, "[ýÿ]", "y");
												return tmparg;
end
local function _latinise(tmparg)
												--2>--remove case and accents
												tmparg=_latinise_letters(tmparg);
												--3>--remove pontuação
												tmparg=mw.ustring.gsub(tmparg, "[' -_]", "");
												
												return tmparg;
end
local function _cletri(tmparg)
				local pais=tmparg;
												--2>--remove case and accents
												tmparg=_latinise_letters(tmparg);
												--3>--remove pontuação
												tmparg=mw.ustring.gsub(tmparg, "['-_]", " ");
												--4>--remove forma lingua
												local result, count = tmparg
																:gsub("^república ", "")
																:gsub("^federação ", "")
																:gsub("^união ", "")
																:gsub("^ilhas ", "")
																:gsub("^de ", "")
																:gsub("^das ", "")
																:gsub("^do ", "")
												
												return '<span class="datasortkey" data-sort-value="'..result..'" style="display:none;">'..pais..'</span>';
end
function bandeira.lista(frame)
				local args = frame.args
				local res="";
				
				if args[1] == nil then
								local pFrame = frame:getParent();
								args = pFrame.args;
								for k,v in pairs( frame.args ) do
												args[k] = v;
								end
				end
				if args[2] == nil then
								args[2]=45 --Portugal por padrão
				end
				

				local extra={}
				if(args[1]=='rótulo') then    
								res="{|class='wikitable sortable' \n!cód!!descrição!!exemplo "..mw.wikibase.sitelink(gdata.data[45]["qid"] ).."!!exemplo "..mw.wikibase.sitelink(gdata.data[31]["qid"] ).."!!exemplo "..mw.wikibase.sitelink(gdata.data[30]["qid"] ).."\n|-\n"
								for k,v in pairs( gdominio.dominiolista ) do
												res= res .. "|<code>" .. k .. "</code> ||".. v["desc"] .. "||" ..printData(gdata.data[45],k,extra) .. "||" ..printData(gdata.data[31],k,extra) .. "||" ..printData(gdata.data[30],k,extra) .. "\n|-\n"
								end
								res=res .. "|}"
				end
				if(args[1]=="país") then      
								res="{|class='wikitable sortable' \n!Nome!!Cód CIO!!uso clássico!!Bandeira!!Equipa desportiva (de futebol)!!Categoria desporto\n|-\n"
								for k,v in pairs( gdata.data ) do
												local cio=v["cio"] or ""
						if(args[3] == nil or v["group"] == args[3]) then
													res= res .. "|"..v["label"].."||<code>" .. cio .. "</code> ||" .._cletri(v["label"])..printIcon(v,nil,"defaut",'20x15',"")..printData(v,"defaut",extra) .. "|| [[" ..printData(v,"bandeira",extra) .. "]] ||" ..printData(v,"futebol",extra) .. "||" ..printData(v,"sportcat",extra) .."\n|-\n"
									end
								end
								res=res .. "|}"
				end
				return res;
end
bandeira.Lista = bandeira.lista
function bandeira.pais(frame)
				local args = frame.args
				local tmparg;
				if args[1] == nil then
								local pFrame = frame:getParent();
								args = pFrame.args;
								for k,v in pairs( frame.args ) do
												args[k] = v;
								end
				end
				
				if args[1] then
								args[1] = mw.text.trim(args[1])
				else
								args[1] = ''
				end
				local key=_latinise(args[1]);
				--por padrão
				local tamanho = args["tamanho"] or '20x15'
				if (args["domínio"] == nil) then args["domínio"] = 'padrao' else args["domínio"] = _latinise(args["domínio"]) end 
				local align = args["align"] or 'left'
				local link = args["link"] or 'sim'
				local ano = ''
				if args[2] then
								ano = mw.text.trim(args[2])
				elseif args["ano"] then
								ano = args["ano"]
				end
				local extra={}
				if (args["competição"] ~= nil) then
								extra["competição"] = " ".._getCompetition(_latinise(args["competição"]),args["edição"])
				end
				
				local q=0;
				local data;
				if(#key==3) then
								q=gdata.idByCIO[mw.ustring.upper(key)]
				elseif(args["ISO"]~= nil and args["ISO"]~='') then
								q=gdata.idByISO[args["ISO"]]
				elseif(args["CIO"]~= nil and args["CIO"]~='') then
								q=gdata.idByCIO[args["CIO"]]
				else
								q=gdata.idByName[key]        
				end
				local data=gdata.data[q];   
				local image=gflag.flag[q];   
				
				local res='';
				local reserror='';
				--o país é desconhecido !!
				if(data == nil) then
								data={qid="", flag="Flag_of_None.svg", label=args[1], sitelink="$label", cio=""
												, genre="ms" , namelong="$label", gentileMS="$label",gentileFS="$label",gentileMP="$label",gentileFP="$label"}
								reserror = reserror .. '<strong class="error">Sem parâmetro país</strong>'
				end   
					--nós adicionamos a caixa baixa agradável
	--data["gentileminiMS"]=mw.ustring.lower(data["gentileMS"]);
	--data["gentileminiFS"]=mw.ustring.lower(data["gentileFS"]);
	--data["gentileminiMP"]=mw.ustring.lower(data["gentileMP"]);
	--data["gentileminiFP"]=mw.ustring.lower(data["gentileFP"]);
				--chave automatica if(args["t"] == '1') then
				if(args["t"] == nil or args["t"] == '1') then
								res=res .. _cletri(data["label"]);
				end    
				if(align == 'left') then
								res=res .. printIcon(data,image,args["domínio"],tamanho,ano)..'&nbsp;';
				end    
				if(args["alvo"] ~= nil) then
								res=res .. args["alvo"]
								if(args["domínio"] ~= nil and args["domínio"] ~= '') then
									res=res.. '&nbsp;<span style="font-size:90%;" class="nowrap">(';
								end
				end
				if(link == 'sim' and data["label"] ~= '') then
								res=res ..printData(data,args["domínio"],extra);
				end
				if(args["alvo"] ~= nil and args["domínio"] ~= nil and args["domínio"] ~= '') then
								res=res  .. ')</span>';
				end    
				if(align == 'right') then
								res=res .. '&nbsp;' .. printIcon(data,image,args["domínio"],tamanho,ano);
				end
				return res .. reserror;
end
bandeira.Pais = bandeira.pais
return bandeira