Aller au contenu

Module:Drapeau

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 19 janvier 2015 à 20:07 et modifiée en dernier par Zolo (discuter | contributions) (premeir essai d'une version utilisant plus de données par pays (anciens drapeaux) et permettant les formatage personnalisés). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]


Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

code rendu modèle
{{#Invoke:Drapeau | pays }} Drapeau ?????
{{#Invoke:Drapeau | pays | France }} France Drapeau de la France France
{{#Invoke:Drapeau | pays | Égypte}} Égypte Drapeau de l'Égypte Égypte
{{#Invoke:Drapeau | pays | Belgique}} Belgique Drapeau de la Belgique Belgique
{{#Invoke:Drapeau | pays | Népal}} Népal Drapeau du Népal Népal
{{#Invoke:Drapeau | pays | Équateur}} Équateur Drapeau de l'Équateur Équateur
{{#Invoke:Drapeau | pays | Émirats arabes unis}} Émirats arabes unis Drapeau des Émirats arabes unis Émirats arabes unis
{{#Invoke:Drapeau | pays | États-Unis}} États-Unis Drapeau des États-Unis États-Unis
{{#Invoke:Drapeau | pays | Bordurie}} Bordurie Drapeau ?????
{{#Invoke:Drapeau | pays | FRA}}
{{#Invoke:Drapeau | pays | CIO=FRA}}
FRA Drapeau de la France France
{{#Invoke:Drapeau | pays | CIO=UAE}} Drapeau des Émirats arabes unis Émirats arabes unis
{{#Invoke:Drapeau | pays | ISO=ARE}} -
{{#Invoke:Drapeau | pays | France |align=right}} France France Drapeau de la France
{{#Invoke:Drapeau | pays | France |lien=non}} France Drapeau de la France
{{#Invoke:Drapeau | pays | France |domaine=football}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=Marine de guerre}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | Égypte |domaine=Marine de guerre}} Égypte Drapeau de l'Égypte Égypte
{{#Invoke:Drapeau | pays | Royaume-Uni |domaine=Marine de guerre}} Royaume-Uni Drapeau de la Grande-Bretagne Royaume-Uni
{{#Invoke:Drapeau | pays | France |domaine=JO}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=JO CIO}} France Drapeau de la France FRA
{{#Invoke:Drapeau | pays|France|cible=[[Laurent Jalabert]]}} France Drapeau de la France Laurent Jalabert (France)
{{#Invoke:Drapeau | pays|France|cible=[[Laurent Jalabert]]|domaine=}} France Drapeau de la France Laurent Jalabert (France)
{{#Invoke:Drapeau | pays|France|2000|domaine=JO CIO|cible=[[Tony Estanguet]]}} France Drapeau de la France Tony Estanguet (FRA)
{{#Invoke:Drapeau | pays | France | année=1820}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=football|compétition=en|édition=2000}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=compétition|compétition=jo|édition=2000}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=compétition|compétition=jo|édition=1992}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=compétition|compétition=jo|édition=ete1992}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=handball|compétition=jo|édition=2012}} France Drapeau de la France France
{{#Invoke:Drapeau | pays | France |domaine=pelote basque}} France Drapeau de la France France
Syntaxe Aperçu Aperçu
{{drapeau2|Belgique|t=1}} Belgique Belgique
{{drapeau2|Égypte|t=1}} Égypte Égypte
{{drapeau2|France|t=1}} France France
{{drapeau2|CIO=ISV|t=1}}
{{drapeau2|Népal|t=1}} Népal Népal

Domaines paramétrés

Erreur de script : la fonction « list » n’existe pas.

Pays paramétrés

Les pays

Erreur de script : la fonction « list » n’existe pas.

Les pays non-autonome

Erreur de script : la fonction « list » n’existe pas.

Les dépendances à statut spécial

Erreur de script : la fonction « list » n’existe pas.

Les pays disparus

Erreur de script : la fonction « list » n’existe pas.

--[[
This module is intended to replace the functionality of {{drapeau2}} and related
templates.  It provides several methods, including
]]

drapeau = {};

-- Chargement de la banque de données des langues avec gestion d'erreur.
local gdata
local linguistic = require "Module:Linguistique"
local success, resultat = pcall (mw.loadData, "Module:Country data/liste" )


-- chargement des données
if success then
    gdata = resultat
else
    -- Banque de données à minima en cas de bogue dans le Module:Langue/Data
    gdata={
		['france']={item="Q142", flag= "Flag_of_France.svg", name ="France"}
	}
end

local gdomaine
local success, resultat = pcall (mw.loadData, "Module:Drapeau/Domaine" )
if success then
	gdomaine = resultat
end

local function _getCompetition(c,aaaa)
	local rep="";
	if(c=="CM" or c=="coupedumonde") then
		rep="à la Coupe du monde"
	elseif(c=="CE" or c=="euro") then
		rep="au championnat d'Europe"
	elseif(c=="ChM") then
		rep="au championnat du monde"
	elseif(c=="CAN" or c=="coupedesconfederations") then
        rep="à la Coupe des Confédérations"
    elseif(c=="en" ) then
        rep="en"
    elseif(c=="jo" ) then
        rep="aux Jeux olympiques"
    elseif(c=="jp" ) then
        rep="aux Jeux paralympiques"
    end
    
    --edition
    if(aaaa ~= nil and aaaa ~= "") then
        if(c=="jo"  or c=="jp" ) then
            local o=gdomaine.jo["_"..aaaa];
            if(o ~= nil) then
                rep=rep.." "..o
            end            
        else
            rep=rep.." "..aaaa
        end
    end

    return rep
end
--[[
pays

Affiche le pays accompagné de son drapeau {{drapeau2}}

Usage:
    {{ Invoke:Drapeau | pays | France }}
    
]]

function printIcon(filescr, alt, size, border)
	if (border ~= "no") or (border == false) then
		border='border|'
	end
	if not alt then
		alt = ''
	end
    return '<span class="flagicon">' ..
                '[[Fichier:' .. filescr .. '|' .. size ..'px|' .. border  .. alt ..']]' ..
            '</span>';
end

local function getData(datatable, typedata, topic, year)
	-- récupères les données stockées sur datatable
	-- typedata = flag ou nom
	-- datedata = year
	-- domaine = arméée etc.) 
	local val, alt
	
	if not datatable[typedata] then 
		return error('demande invalide')
	end
	if type(datatable[typedata]) == 'string' then
		val = datatable[typedata]
		return val
	end
	alt = datatable[typedata].alt
	
	local numericdate
	if year then
		numericdate = tonumber(year)
	end
	if numericdate then
		local bestdate = -10000
		for i, j in pairs (datatable[typedata]) do
			local k = tonumber(i)
			if k and (k < numericdate) and (k > bestdate) then
				val = j
				bestdate = k
			end
		end
	end
	if not val then
		val = datatable[typedata][topic] or datatable[typedata]['default']
	end
	return val, alt
end

local function printLabel(data, topic)
	local label
	if not name then
		return getData(data, 'name')
	end
end

local function printLink(areadata, topic)
	if areadata.link then
		return areadata.link[topic] or areadata.link['default']
	end
	return mw.wikibase.sitelink(data.item)
end

local function applyregex(str, areadata)
	local cio = 'code CIO (en attente)' --require('Module:Wikidata')._formatStatements({entity= areadata.item, property= 'P984'}) or '??'

	local label = getData(areadata, 'name')
	local of = linguistic.of(label, areadata.genre)
	
	str = mw.ustring.gsub(str, '$de$label', of)
	str = mw.ustring.gsub(str, '$label', label)
	str = mw.ustring.gsub(str, '$cio', 'cio') 

	if string.find(str, '$gentile') then
		--
	end
	return str
end

local function standardText(areadata, topicdata)
	-- format standards stockées dans Module:Drapeau/Domaine
	local link = topicdata.link
	local label = topicdata.label
	link = applyregex(link, areadata)
	label = applyregex(label, areadata)
	return link, label
end

local function getDatatable(zone)
	zone = mw.ustring.lower(zone)
	if gdata[zone] then
		return require('Module:Country data/' .. gdata[zone])
	else -- si le module existe mais n'est pas dans la liste
		return require('Module:Country data/' .. zone)
	end
end

function drapeau.List(frame)
    return drapeau.list(frame)
end

function drapeau._drapeau(args)
	-- nettoyage des paramètres
	for i, j in pairs(args) do
		args[i] = mw.text.trim(j) -- remove whitespaces
		if args[i] == '' then args[i] = nil end
	end

   -- ajout des valeurs par défaut
	local zone = args[1] 
	local taille = args["taille"] or '20x15'
	local domaine = args["domaine"]
	local typedrapeau = args["type"]
	
	if domaine and not gdomaine.domainelist["domaine"] then
		domaine = mw.ustring.lower(string.gsub(domaine, " ", ""))
		domaine = linguistic.toascii(domaine)
	end
	domaine =  gdomaine.domainelist[domaine] 
	if args["domaine"] and not domaine then
		return error("domaine non reconnu:" .. args["domaine"])
	end
	local align = args["align"] or 'left'
	local lien = args["lien"]
	local label = args["label"]
	local annee = args[2] or args["année"] or ''
	local align = args["align"] or "left"
	local cible = args["cible"]
	local competition = args["compétition"]
	local extra = ''


	-- chargement des données 
	if not zone then
		return error('paramètre 1 (pays) manquant')
	end
	local success, data = pcall(getDatatable, zone)
	if not success then
    	return error('pays invalide')
    end

	-- image
	local fichierdrapeau, alt = getData(data, 'flag', domaine, annee)
	local icon -- le fichier mis en forme
	if fichierdrapeau then
		icon = printIcon(fichierdrapeau, alt, taille, border)
	end
	
	-- lien
	if domaine then
		lien, label = standardText(data, domaine)
	end

	if (not lien) then
		lien = printLink(data, typedrapeau)
	end
	if (not label) then
		label = printLabel(data, typedrapeau)
	end
	
	if competition then 
		competition = _getCompetition(linguistic.toascii(args["compétition"]),args["édition"])
	end

	if lien and competition then
		lien = lien .. ' ' .. competition
	end
	
	if lien then
		text = '[[' .. lien .. '|' .. label .. ']]'
	end
	if cible then 
		text = cible .. ' (' .. text .. ')'
	end
	if align == 'right' then
		return text .. '&nbsp;' ..icon
	else
		return icon .. '&nbsp;' .. text
	end
end

function drapeau.pays(frame)
	local success, val = pcall(drapeau._drapeau, frame.args)
    if success then 
    	return val
    end
--debug:    return drapeau._drapeau(frame.args)
	return frame.args[1]
end

return drapeau