<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikinabia.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACountry_data</id>
	<title>Module:Country data - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wikinabia.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACountry_data"/>
	<link rel="alternate" type="text/html" href="https://wikinabia.com/index.php?title=Module:Country_data&amp;action=history"/>
	<updated>2026-06-15T10:15:18Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>https://wikinabia.com/index.php?title=Module:Country_data&amp;diff=5378&amp;oldid=prev</id>
		<title>Docteurmarty : 1 révision importée</title>
		<link rel="alternate" type="text/html" href="https://wikinabia.com/index.php?title=Module:Country_data&amp;diff=5378&amp;oldid=prev"/>
		<updated>2019-10-08T05:41:33Z</updated>

		<summary type="html">&lt;p&gt;1 révision importée&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version du 8 octobre 2019 à 05:41&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Docteurmarty</name></author>
		
	</entry>
	<entry>
		<id>https://wikinabia.com/index.php?title=Module:Country_data&amp;diff=5377&amp;oldid=prev</id>
		<title>fr&gt;Hercule : annul</title>
		<link rel="alternate" type="text/html" href="https://wikinabia.com/index.php?title=Module:Country_data&amp;diff=5377&amp;oldid=prev"/>
		<updated>2019-07-04T11:11:31Z</updated>

		<summary type="html">&lt;p&gt;annul&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
This module is intended to replace the functionality of {{drapeau2}} and related&lt;br /&gt;
templates.  It provides several methods, including&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local p = {};&lt;br /&gt;
&lt;br /&gt;
local gdata = mw.loadData (&amp;quot;Module:Country data/liste&amp;quot; )&lt;br /&gt;
local dates = require &amp;quot;Module:date complexe&amp;quot;&lt;br /&gt;
local linguistic = require &amp;quot;Module:Linguistique&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function _getCompetition(c,aaaa)&lt;br /&gt;
	local gdomain = mw.loadData ( &amp;quot;Module:Drapeau/Domaine&amp;quot; ) -- chargé seulement sur les articles où ça sert, ça prend un peu de place&lt;br /&gt;
	&lt;br /&gt;
	local symbs = {&lt;br /&gt;
		['cm'] = &amp;quot;à la Coupe du monde&amp;quot;,&lt;br /&gt;
		['coupedumonde'] = &amp;quot;à la Coupe du monde&amp;quot;,&lt;br /&gt;
		['ce'] = &amp;quot;au championnat d'Europe&amp;quot;,&lt;br /&gt;
		['euro'] = &amp;quot;au championnat d'Europe&amp;quot;,&lt;br /&gt;
		['chm'] = &amp;quot;au championnat du monde&amp;quot;,&lt;br /&gt;
		['can'] = &amp;quot;à la Coupe des Confédérations&amp;quot;,&lt;br /&gt;
		['coupedesconfederations'] = &amp;quot;à la Coupe des Confédérations&amp;quot;,&lt;br /&gt;
		['en'] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		['jo'] = &amp;quot;aux Jeux olympiques&amp;quot;,&lt;br /&gt;
		['jp'] = &amp;quot;aux Jeux paralympiques&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local str = symbs[string.lower(c or '')] or &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	--edition&lt;br /&gt;
	if(aaaa ~= nil and aaaa ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		if(c==&amp;quot;jo&amp;quot;  or c==&amp;quot;jp&amp;quot; ) then&lt;br /&gt;
			local o=gdomain.jo[&amp;quot;_&amp;quot;..aaaa];&lt;br /&gt;
			if(o ~= nil) then&lt;br /&gt;
				str = str ..&amp;quot; &amp;quot;..o&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
		   str = str ..&amp;quot; &amp;quot;..aaaa&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function printFlag(flagfile, alt, displayformat)&lt;br /&gt;
	&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local size = displayformat.size or '20x15'&lt;br /&gt;
	local border = 'border|' &lt;br /&gt;
	&lt;br /&gt;
	if displayformat.border == '-' then&lt;br /&gt;
		border = ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not alt then&lt;br /&gt;
		alt = ''&lt;br /&gt;
	end&lt;br /&gt;
	return '&amp;lt;span class=&amp;quot;flagicon&amp;quot;&amp;gt;' ..&lt;br /&gt;
			'[[Fichier:' .. flagfile .. '|' .. size ..'px|' .. border  .. alt ..'|class=noviewer]]' ..&lt;br /&gt;
			'&amp;lt;/span&amp;gt;';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bestfordate(data, period) -- data contient une table dont les clés sont des dates au format ['2010'] = ou ['2010-05-04'] = &lt;br /&gt;
	if type(data) == 'string' then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- très artisanal, à améliorer&lt;br /&gt;
	if (not period) or (period == 'default') then&lt;br /&gt;
		return data.default&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local val = data.default&lt;br /&gt;
	local bestdate = '-1000-01-01'&lt;br /&gt;
	for i, j in pairs(data) do&lt;br /&gt;
		if j ~= 'default' and dates.before(period, i) and dates.before(i, bestdate) then -- si la valeur est plus récente que period moins récente que la best trouvée&lt;br /&gt;
			val = j&lt;br /&gt;
			bestdate = i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function valueAtDate(data, period, topic) -- topic: type de drapeau, genre de l'adjectif, etc.&lt;br /&gt;
	if type(data) == 'string' or type(data) == 'nil' then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	if type(data) ~= 'table' then&lt;br /&gt;
		return error('mauvais datatabpe ' .. type(data))&lt;br /&gt;
	end&lt;br /&gt;
	topic = topic or &amp;quot;default&amp;quot;&lt;br /&gt;
	if data[topic] then&lt;br /&gt;
		return bestfordate(data[topic], period)&lt;br /&gt;
	else&lt;br /&gt;
		return bestfordate(data, period)&lt;br /&gt;
	end&lt;br /&gt;
	return error()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getData(datatable, typedata, topic, period) -- récupère la chaîne de caractère la plus appropriée dans la datatable&lt;br /&gt;
	-- datatable: la table de sous module par exemple [[Module:Country data/grenade]]&lt;br /&gt;
	-- typedata: &amp;quot;flag&amp;quot; / &amp;quot;name&amp;quot; / &amp;quot;adjective&amp;quot;&lt;br /&gt;
	-- period: data in ISO format&lt;br /&gt;
	-- topic: for instance &amp;quot;navy&amp;quot; for naval ensign&lt;br /&gt;
	local val = datatable[typedata]&lt;br /&gt;
&lt;br /&gt;
	if not val then -- error handling ?&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local val = valueAtDate(val, period, topic)&lt;br /&gt;
&lt;br /&gt;
	if type(val) ~= 'string' then -- error handling ?&lt;br /&gt;
		return error(val)&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAdjective(data, gender, number)&lt;br /&gt;
	if not gender then&lt;br /&gt;
		gender = 'm'&lt;br /&gt;
	end&lt;br /&gt;
	if not number then&lt;br /&gt;
		number = 's'&lt;br /&gt;
	end&lt;br /&gt;
	if (gender ~= 'm' and gender ~= 'f') then&lt;br /&gt;
		return error('gender devrait être m ou f mais est ' .. gender)&lt;br /&gt;
	end&lt;br /&gt;
	if (number ~= 's' and number ~= 'p') then&lt;br /&gt;
		return error('number devrait être s ou p mais est ' .. number)&lt;br /&gt;
	end&lt;br /&gt;
	return getData(data, 'adjective', (gender .. number))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDemonym (data, gender, number)&lt;br /&gt;
	if data.demonym == nil then&lt;br /&gt;
		return linguistic.ucfirst( getAdjective(data, gender, number) )&lt;br /&gt;
	end&lt;br /&gt;
	gender = gender or 'm'&lt;br /&gt;
	number = number or 's'&lt;br /&gt;
	if (gender ~= 'm' and gender ~= 'f') then&lt;br /&gt;
		return error('gender devrait être m ou f mais est ' .. gender)&lt;br /&gt;
	end&lt;br /&gt;
	if (number ~= 's' and number ~= 'p') then&lt;br /&gt;
		return error('number devrait être s ou p mais est ' .. number)&lt;br /&gt;
	end&lt;br /&gt;
	return getData(data, 'demonym', (gender .. number))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLabel(data, topic, period, form)&lt;br /&gt;
	local label&lt;br /&gt;
	if (not form) or form == 'short' then&lt;br /&gt;
		label = getData(data, 'shortname', topic, period)&lt;br /&gt;
	end&lt;br /&gt;
	if not label then&lt;br /&gt;
		label = getData(data, 'name')&lt;br /&gt;
	end&lt;br /&gt;
	if (not label) and data.item then&lt;br /&gt;
		label = mw.wikibase.label(getData(data, 'item'))&lt;br /&gt;
	end&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLink(data, topic, period)&lt;br /&gt;
	local link = getData(data, 'link', topic, period)&lt;br /&gt;
	if (not link) and data.item then&lt;br /&gt;
		link =  mw.wikibase.label(getData(data, 'item'))&lt;br /&gt;
	end&lt;br /&gt;
	return link&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function applyregex(str, areadata)&lt;br /&gt;
	local cio = 'code CIO (en attente)' --require('Module:Wikidata')._formatStatements({entity= areadata.item, property= 'P984'}) or '??'&lt;br /&gt;
&lt;br /&gt;
	local label = getData(areadata, 'name')&lt;br /&gt;
	local of = linguistic.of(label, areadata.genre)&lt;br /&gt;
	&lt;br /&gt;
	str = mw.ustring.gsub(str, '$de$label', of)&lt;br /&gt;
	str = mw.ustring.gsub(str, '$label', label)&lt;br /&gt;
	str = mw.ustring.gsub(str, '$cio', 'cio') &lt;br /&gt;
&lt;br /&gt;
	if string.find(str, '$gentile') then&lt;br /&gt;
		local function get(genre) return getData(areadata, 'adjective', genre) end&lt;br /&gt;
		local gentileMS, gentileFS, gentileMP, gentileFP = get('ms'), get('fs'), get('mp'), get('fp')&lt;br /&gt;
		str = mw.ustring.gsub(str, '$gentileMS', gentileMS)&lt;br /&gt;
		str = mw.ustring.gsub(str, '$gentileFS', gentileFS)&lt;br /&gt;
		str = mw.ustring.gsub(str, '$gentileMP', gentileMP)&lt;br /&gt;
		str = mw.ustring.gsub(str, '$gentileFP', gentileFP)&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDatatable(zone)&lt;br /&gt;
	zone = mw.ustring.lower(zone)&lt;br /&gt;
	if gdata[zone] then&lt;br /&gt;
		return require('Module:Country data/' .. gdata[zone])&lt;br /&gt;
	else -- si le module existe mais n'est pas dans la liste&lt;br /&gt;
		return require('Module:Country data/' .. zone)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function flagIcon(data, flagtype, period, displayformat)&lt;br /&gt;
	local flagimage = getData(data, 'flag', flagtype, period)&lt;br /&gt;
	if flagimage then&lt;br /&gt;
		return printFlag(flagimage, '', displayformat)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standarddisplay(zone, args)&lt;br /&gt;
	if not zone then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- nettoyage des paramètres&lt;br /&gt;
	if not args then&lt;br /&gt;
		args = {}&lt;br /&gt;
	end&lt;br /&gt;
	for i, j in pairs(args) do&lt;br /&gt;
		args[i] = mw.text.trim(j) -- remove whitespaces&lt;br /&gt;
		if args[i] == '' then args[i] = nil end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
   -- ajout des valeurs par défaut&lt;br /&gt;
	local size = args.flagsize or '20x15'&lt;br /&gt;
	local flagtype = args.type&lt;br /&gt;
&lt;br /&gt;
	local align = args.align or 'left'&lt;br /&gt;
	local link = args.link&lt;br /&gt;
	local period = args.date&lt;br /&gt;
	local competition = args.competition&lt;br /&gt;
	local edition = args.edition&lt;br /&gt;
	local extra = ''&lt;br /&gt;
	&lt;br /&gt;
	local success, data = pcall(getDatatable, zone)&lt;br /&gt;
	if not success then&lt;br /&gt;
		if args.strict then&lt;br /&gt;
			return error('lieu non reconnu')&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- image&lt;br /&gt;
	local flag = flagIcon(data, flagtype, period)&lt;br /&gt;
	if (args.label == '-') then&lt;br /&gt;
		return flag, true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- text&lt;br /&gt;
	local text&lt;br /&gt;
	local label = getLabel(data, flagtype)&lt;br /&gt;
	local link = getLink(data, flagtype)&lt;br /&gt;
&lt;br /&gt;
	if competition then &lt;br /&gt;
		competition = _getCompetition(linguistic.toascii(competition),args[&amp;quot;édition&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
	if link and competition then&lt;br /&gt;
		link = link .. ' ' .. competition&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if link then&lt;br /&gt;
		text = '[[' .. link .. '|' .. label .. ']]'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si les données sont extraites d'un formulaire standard comme module:Drapeau/domain, appliquer des regex&lt;br /&gt;
	if string.match(text, '%$') then&lt;br /&gt;
		text = applyregex(text, data)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local val&lt;br /&gt;
	if align == 'right' then&lt;br /&gt;
		val = text .. '&amp;amp;nbsp;' .. flag&lt;br /&gt;
	else&lt;br /&gt;
		val = flag .. '&amp;amp;nbsp;' .. text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return val, true -- true indique le succès&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.nationality(zone, gender, number, topic, period)&lt;br /&gt;
	local success, data = pcall(getDatatable, zone)&lt;br /&gt;
	if not success then return&lt;br /&gt;
		zone&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local str = getDemonym(data, gender, number)&lt;br /&gt;
	if not str then&lt;br /&gt;
		return zone&lt;br /&gt;
	end&lt;br /&gt;
	local link = getLink(data, topic, period) &lt;br /&gt;
	if link then&lt;br /&gt;
		str = '[[' .. link .. '|' .. str .. ']]'&lt;br /&gt;
	end&lt;br /&gt;
	return str, true-- true indique le succès&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.getNationality(args) -- pour obtenir la nationalité d'une personne sur Wikidata sous forme d'adjectifs&lt;br /&gt;
	if not args then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local wikidata = require &amp;quot;Module:Wikidata&amp;quot;&lt;br /&gt;
	local complexdate = require &amp;quot;Module:Date complexe&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	if type(args) == 'string' then -- si un seul argument, c'est l'entité à utiliser&lt;br /&gt;
		args = {item = args}&lt;br /&gt;
	end&lt;br /&gt;
	if args.args then -- si vient de frame&lt;br /&gt;
		args = args.args&lt;br /&gt;
	end&lt;br /&gt;
	local item = args.item or args[1]&lt;br /&gt;
	&lt;br /&gt;
	-- établit la variable gender pour l'élément&lt;br /&gt;
	local vals = {&lt;br /&gt;
		['Q6581072'] = 'f',&lt;br /&gt;
		['Q6581097'] = 'm',&lt;br /&gt;
		default	  = '?'&lt;br /&gt;
	}&lt;br /&gt;
	local gender = args.gender&lt;br /&gt;
	if not gender then&lt;br /&gt;
		gender = wikidata.formatStatements{entity = item, property = 'P21', displayformat = 'raw'}&lt;br /&gt;
		gender = vals[gender] or vals.default&lt;br /&gt;
	end&lt;br /&gt;
	-- désactivation si date de naissance avant l'Ère contemporaine : trop d'imprécisions et d'anachronismes&lt;br /&gt;
	local mindate = args.mindate or '1789'&lt;br /&gt;
	if mindate ~= &amp;quot;-&amp;quot; then&lt;br /&gt;
		local birthdate = wikidata.formatStatements{entity = item, property = 'P569', displayformat = 'raw', numval = 1}&lt;br /&gt;
                local deathdate = wikidata.formatStatements{entity = item, property = 'P570', displayformat = 'raw', numval = 1}&lt;br /&gt;
		if ((not birthdate) or complexdate.before(mindate, birthdate)) and ((not deathdate) or complexdate.before(mindate, deathdate)) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return wikidata.formatStatements{&lt;br /&gt;
			property = 'P27',&lt;br /&gt;
			showdate = true,&lt;br /&gt;
			entity = item,&lt;br /&gt;
			conjtype = args.conjtype or 'and',&lt;br /&gt;
			removedupes = true,&lt;br /&gt;
			linktopic = '-',&lt;br /&gt;
			displayformat = &lt;br /&gt;
				function(snak)&lt;br /&gt;
					local g = gender -- genre de la personne, pour affichage du gentilé&lt;br /&gt;
					if g == '?' then -- si inconnu, au masculin&lt;br /&gt;
						g = 'm'&lt;br /&gt;
					end&lt;br /&gt;
					local val, success = p.nationality(wikidata.getId(snak), g)&lt;br /&gt;
					if not success then&lt;br /&gt;
						val = wikidata.formatSnak(snak)&lt;br /&gt;
					end&lt;br /&gt;
					return val&lt;br /&gt;
				end&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>fr&gt;Hercule</name></author>
		
	</entry>
</feed>