<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.noethoumy.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jaggerwock</id>
	<title>kookipedia - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.noethoumy.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jaggerwock"/>
	<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php/Sp%C3%A9cial:Contributions/Jaggerwock"/>
	<updated>2026-04-27T15:44:00Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Yves_H%C3%A9lory_de_Kermartin&amp;diff=364</id>
		<title>Yves Hélory de Kermartin</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Yves_H%C3%A9lory_de_Kermartin&amp;diff=364"/>
		<updated>2024-09-20T14:56:25Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Voir homonymes|Saint Yves}}&lt;br /&gt;
{{confusion|Yves Saint-Martin}}&lt;br /&gt;
{{Infobox Saint&lt;br /&gt;
 | nom                             = Yves de Kermartin&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt; &#039;&#039;Saint catholique&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
 | image                           = Weyden Ivo.jpg&lt;br /&gt;
 | taille image                    = 240&lt;br /&gt;
 | légende                         = Saint Yves par [[Rogier van der Weyden]] ({{s|XV}}), [[National Gallery]], [[Londres]]. &lt;br /&gt;
 | titre                           = [[Official (ecclésiastique)|official ecclésiastique]], avocat des pauvres&lt;br /&gt;
 | date de naissance               = Vers {{date|||1253}}{{Note|groupe=Note|nom=Naissance|Si 1253 est souvent avancée quant à l&#039;année de naissance de Yves Hélory de Kermartin, d&#039;autres hypothèses ont été émises (1247, 1248 ou 1250)&amp;lt;ref name=SourceNaissance&amp;gt;{{Harvsp|Cassard|passage=12}}&amp;lt;/ref&amp;gt;.}}&lt;br /&gt;
 | lieu de naissance               = Manoir de Kermartin à [[Minihy-Tréguier|Minihy]] &amp;lt;small&amp;gt;([[Duché de Bretagne]])&amp;lt;/small&amp;gt;&lt;br /&gt;
 | date de décès                   = {{date de décès|19|mai|1303}}&lt;br /&gt;
 | lieu de décès                   = [[Trégor]] &amp;lt;small&amp;gt;([[Duché de Bretagne]])&amp;lt;/small&amp;gt;&lt;br /&gt;
 | âge au décès                    = 50&lt;br /&gt;
 | nom de naissance                = Yves Hélory de Kermartin&lt;br /&gt;
 | autres noms                     = &lt;br /&gt;
 | lieu de vénération              = [[Tréguier]] où a lieu un célèbre [[Pardon (cérémonie)|pardon]] tous les [[19 mai]].&lt;br /&gt;
 | date de béatification           = &lt;br /&gt;
 | lieu de l&#039;annonce béatification = &lt;br /&gt;
 | béatifié par                    = &lt;br /&gt;
 | date de canonisation            = [[1347]]&lt;br /&gt;
 | lieu de l&#039;annonce canonisation  = &lt;br /&gt;
 | canonisé par                    = [[Clément VI]]&lt;br /&gt;
 | date docteur église             = &lt;br /&gt;
 | lieu de l&#039;annonce docteur       = &lt;br /&gt;
 | docteur église par              = &lt;br /&gt;
 | docteur mention                 = &lt;br /&gt;
 | vénéré par                      = l&#039;[[Église catholique|Église catholique romaine]]&lt;br /&gt;
 | fête                            = [[19 mai]]&lt;br /&gt;
 | attributs                       = généralement représenté avec une [[Porte-monnaie|bourse]] dans une main, pour signifier tout l&#039;argent qu&#039;il a donné aux pauvres dans sa vie, et un [[parchemin]] dans l&#039;autre, qui rappelle sa charge de [[Official (ecclésiastique)|juge ecclésiastique]]. Il est également souvent figuré entre un homme riche et un homme pauvre.&lt;br /&gt;
 | titre saint patron              = &lt;br /&gt;
 | saint patron                    = professions de la [[justice]] et du [[droit]] ([[Avocat (métier)|avocat]]s).&amp;lt;br /&amp;gt;[[Bretagne]] (avec [[Anne (mère de Marie)|sainte Anne]]).&lt;br /&gt;
 | problème                        = &lt;br /&gt;
 | date de suppression             = &lt;br /&gt;
 | blason                          = Blason fam fr Hélory.svg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yves Hélory de Kermartin&#039;&#039;&#039;, ou &#039;&#039;&#039;Yves de Tréguier&#039;&#039;&#039;, ou &#039;&#039;&#039;Erwan Helouri&#039;&#039;&#039; en [[breton]], ou &#039;&#039;&#039;saint Yves&#039;&#039;&#039; dans la tradition [[Catholicisme|catholique]], est un prêtre et [[official (ecclésiastique)|official]] du [[diocèse de Tréguier]], né probablement vers {{date de naissance|1253}}{{Note|groupe=Note|nom=Naissance}} au manoir de Kermartin à [[Minihy-Tréguier|Minihy]], dans le [[Duché de Bretagne]], et mort le {{date de décès|19 mai 1303}} au même endroit.&lt;br /&gt;
&lt;br /&gt;
Considéré par l&#039;[[Église catholique]] comme ayant consacré sa vie à la justice et aux pauvres, il est [[Canonisation|canonisé]] le {{date-|19 mai 1347}} par le pape [[Clément VI]]. Saint Yves est le [[saint patron]] de toutes les professions de justice et de droit, notamment celle d’[[avocat (métier)|avocat]]. Il est également saint patron de la [[Bretagne]] et fait l&#039;objet d&#039;un grand [[Pardon (cérémonie)|pardon]] à l&#039;occasion de la [[fête de la Saint-Yves]] tous les ans à [[Tréguier]]. On le fête le [[19 mai]].&lt;br /&gt;
&lt;br /&gt;
== Nom ==&lt;br /&gt;
{{article détaillé|Erwan|Yves}}&lt;br /&gt;
En [[breton]], saint Yves est appelé &#039;&#039;sant Erwan&#039;&#039;. Si Erwan est une des variantes les plus communes pour le désigner, elle est originaire du [[Trégor]]. On retrouve aussi &#039;&#039;Iwan&#039;&#039;, &#039;&#039;Youenn&#039;&#039; ou &#039;&#039;Eozen&#039;&#039; dans d&#039;autres régions de Bretagne. Ces variantes proviennent de ses deux prototypes : {{page h&#039;|Yves}}, emprunt au français, et Eudon, prénom vieux breton&amp;lt;ref&amp;gt;{{Harvsp|id=StYves&amp;amp;Bretons|texte=Bernard Tanguy, « Les lieux de culte de saint Yves en Bretagne »|passage=99}}.&amp;lt;/ref&amp;gt;, qui étaient vraisemblablement considérés comme synonymes du temps de saint Yves&amp;lt;ref&amp;gt;{{Harvsp|Falc&#039;hun|p=183}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Biographie ==&lt;br /&gt;
=== Sources ===&lt;br /&gt;
La source principale de référence utilisée pour connaître la vie de Yves Hélory de Kermartin est la procédure entamée en [[1330]] pour aboutir à sa [[canonisation]]. L&#039;enquête de canonisation s&#039;ouvre le {{date-|26 février 1330}} et aboutit positivement le {{date-|19 mai 1347}}&amp;lt;ref name=&amp;quot;P&amp;amp;M P513&amp;quot;&amp;gt;{{Ouvrage|auteur1=Michel Priziac|auteur2=Michel Mohrt|titre=Bretagne des saints et des croyances|éditeur=Kidour|année=2002|passage=513|isbn=}}&amp;lt;/ref&amp;gt;. Elle fournit dans la première partie un certain nombre de témoignages sur ce que fut sa vie, la manière dont les gens le percevaient et, dans la seconde partie, les miracles qui lui sont attribués. Le rouleau de cette enquête est présenté au pape [[Jean XXII]] le {{date-|4 juin 1331}}. Une copie, conservée dans un manuscrit déposé à la Bibliothèque municipale de [[Saint-Brieuc]], a permis la première publication du texte en latin en 1887, puis en français au {{s|XX}}&amp;lt;ref&amp;gt;{{Lien web|url=https://www.ouest-france.fr/bretagne/treguier-22220/lenquete-de-canonisation-de-saint-yves-traduite-en-francais-3771615|titre=L&#039;enquête de canonisation de saint Yves traduite en français|date=15 octobre 2015|site=ouest-france.fr}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Après sa canonisation, on trouve peu d&#039;écrits au [[bas Moyen Âge]] sur sa vie&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;&amp;gt;{{Harvsp|id=StYves&amp;amp;Bretons|texte=Yves Coativy, « Saint Yves dans les chroniques bretonnes de la fin du Moyen Âge »}}&amp;lt;/ref&amp;gt;. Utilisant sans doute comme source principale l&#039;enquête de canonisation, la première [[Vita|vie]] serait composée au {{s|XIV}} par Maurice Godefroy, un [[Ordre des Prêcheurs|dominicain]] de [[Morlaix]], qui y ajoute des éléments issus de la tradition orale&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Albert Le Grand|titre=Les vies des Saints de la Bretagne-Armorique|éditeur=|année=1837|passage=280}}&amp;lt;/ref&amp;gt;{{,}}&amp;lt;ref name=Roparz&amp;gt;{{Ouvrage|auteur1=M. S. Roparz|titre=Histoire de Saint Yves|sous-titre=patron des gens de justice|éditeur=|année=1856|passage=V-VII}}&amp;lt;/ref&amp;gt;. Ce manuscrit est repris ensuite par [[Daniel van Papenbroeck|Papebroch]] dans les &#039;&#039;[[Acta Sanctorum]]&#039;&#039; des [[bollandistes]]&amp;lt;ref name=Roparz/&amp;gt;. Entre-temps, il est aussi fait mention de la vie de saint Yves au quatrième livre des &#039;&#039;Grandes croniques de Bretaigne&#039;&#039; d&#039;[[Alain Bouchart]]&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;/&amp;gt;{{,}}&amp;lt;ref name=Roparz/&amp;gt;. Bouchart reprend des éléments du procès en canonisation, mais ajoute également des éléments inédits, de sources inconnues&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;/&amp;gt;. À partir de la [[Renaissance]] plusieurs récits de sa vie sont écrits en [[français]], en [[latin]], en [[breton]] et en [[italien]].&lt;br /&gt;
&lt;br /&gt;
Enfin, il existe également un document en latin écrit de la main d&#039;Yves Hélory de Kermartin : son testament, qui est le seul de ses écrits transmis jusqu&#039;à nos jours&amp;lt;ref name=Casp45&amp;gt;{{Harvsp|Cassard|passage=45}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Enfance et jeunesse ===&lt;br /&gt;
[[File:Kermartin.jpg|thumb|Lieu supposé de la naissance de Saint Yves, avant sa destruction au {{s-|XIX}}.]]&lt;br /&gt;
La date de naissance de Yves Hélory de Kermartin est inconnue. Selon toute vraisemblance elle se situerait au milieu du {{s|XIII}}, la tradition retenant généralement {{date|1253}}, mais d&#039;autres années sont parfois proposées. Dans son livre &#039;&#039;Saint Yves de Tréguier : un saint du {{s-|XIII}}&#039;&#039;, [[Jean-Christophe Cassard]] défend une naissance en {{date|1248}}, ce qui permettrait selon lui une chronologie cohérente jusqu&#039;en 1280&amp;lt;ref name=Casp16&amp;gt;{{Harvsp|Cassard|passage=16}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Yves Hélory de Kermartin naît dans une famille noble au manoir de Kermartin{{Note|groupe=Note|Le manoir, qui a l&#039;aspect d&#039;une grande ferme, est démoli en 1834, certainement après avoir été ravagé par un incendie provoqué par une pipe mal éteinte&amp;lt;ref name=PatrimoineManoir&amp;gt;{{lien web|url=http://patrimoine.bzh/gertrude-diffusion/dossier/ferme-de-kermartin-minihy-treguier/9ec19d73-e023-4696-aa72-237f9302f742|titre=Ferme de Kermartin (Minihy-Tréguier)|site=patrimoine.bzh, site du patrimoine culturel de la [[Région Bretagne]]|consulté le=19-07-2020}}&amp;lt;/ref&amp;gt;. Il est reconstruit par son propriétaire, l&#039;archevêque [[Hyacinthe-Louis de Quélen|de Quélen]], qui y fait apposer une plaque en marbre au-dessus de la porte d&#039;entrée. Cette plaque porte l&#039;inscription : &#039;&#039;Ici est né, le 17 octobre 1253, et mort le 19 mai 1303, saint Yves, official de Tréguier, curé de Trédrez et de Louannec. Sa maison, qui a subsisté jusqu&#039;en 1834, a été alors démolie pour cause de vétusté&#039;&#039;&amp;lt;ref name=PatrimoineManoir/&amp;gt;{{,}}&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Benjamin-Philibert Jollivet|titre=Les Côtes-du-Nord : histoire et géographie de toutes les villes et communes du département|éditeur=imprimerie de B. Jollivet|année=1993|passage=255|isbn=}}&amp;lt;/ref&amp;gt;. Le colombier qui subsiste est considéré par la tradition comme contemporain à Saint Yves, bien qu&#039;il ait probablement été bâti plus tard&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Jean Auffret|titre=Colombiers et pigeonniers en Bretagne profonde|éditeur=Editions régionales de l&#039;Ouest|année=|passage=107|isbn=}}&amp;lt;/ref&amp;gt;{{,}}&amp;lt;ref name=PatrimoineColombier&amp;gt;{{lien web|url=http://patrimoine.bzh/gertrude-diffusion/dossier/colombier-de-kermartin-minihy-treguier/a85812fb-a25f-461a-8a36-c0f434fcf6e1#localisation|titre=Colombier de Kermartin (Minihy-Tréguier)|site=patrimoine.bzh, site du patrimoine culturel de la [[Région Bretagne]]|consulté le=19-07-2020}}&amp;lt;/ref&amp;gt;.}} sur la paroisse de [[Minihy-Tréguier|Minihy]]. Son grand-père, Ganaret de Kermartin, est [[Chevalier (chevalerie)|chevalier]]&amp;lt;ref name=SourceNaissance/&amp;gt;. Son père, Hélory, est [[damoiseau]], et sa mère, Azo, est aussi certainement noble&amp;lt;ref name=SourceNaissance/&amp;gt;. Sa mère prétend qu&#039;un songe lui aurait révélé que son fils serait un saint&amp;lt;ref name=&amp;quot;P&amp;amp;M P512&amp;quot; /&amp;gt;. Il a un frère et deux sœurs dont on ne sait pas grand chose&amp;lt;ref&amp;gt;{{Harvsp|Cassard|passage=13}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il grandit dans le Trégor et part dans les années 1260 accompagné de son précepteur, Jean de Kerhos, clerc de la paroisse de Pleubian, à Paris pour suivre des études à la [[Sorbonne]]. Il étudie six ans à la [[faculté des arts]] avant de passer son examen final [[rue du Fouarre]] à 20 ans&amp;lt;ref name=Casp15&amp;gt;{{Harvsp|Cassard|passage=15}}&amp;lt;/ref&amp;gt;. Il poursuit ensuite ses études [[rue du Clos-Bruneau]] à la [[Ancienne université de Paris#Faculté de décret|faculté de décret]] où il apprend le [[droit canon]]&amp;lt;ref name=Casp15/&amp;gt;. Il partirait ensuite en {{date-|1272}} poursuivre ses études de droit romain à l&#039;[[université d&#039;Orléans]]. Il retourne probablement trois années à Paris, entre 1274 et 1277, pour y étudier la théologie&amp;lt;ref name=Casp16/&amp;gt;. Déjà, il se fait remarquer par sa vie de privation en faveur des pauvres&amp;lt;ref name=&amp;quot;P&amp;amp;M P512&amp;quot;&amp;gt;{{Ouvrage|auteur1=Michel Priziac|auteur2=Michel Mohrt|titre=Bretagne des saints et des croyances|éditeur=Kidour|année=2002|passage=512|isbn=}}.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Retour et vie en Bretagne ===&lt;br /&gt;
[[File:Claude Vignon 1635 Saint Yves.jpg|thumb|[[Claude Vignon]] : &#039;&#039;Saint Yves&#039;&#039; (huile sur toile, 1635, évêché de saint-Brieuc).]]&lt;br /&gt;
Ses études achevées trois ans plus tard, il revient en 1280 en [[Bretagne]] à [[Rennes]]&amp;lt;ref name=Casp20&amp;gt;{{Harvsp|Cassard|passage=20}}&amp;lt;/ref&amp;gt;, où il est nommé [[Official (ecclésiastique)|official]] de l&#039;[[archidiacre]]. C&#039;est à Rennes qu&#039;il assiste, en [[1281]]&amp;lt;ref name=Casp20/&amp;gt;, à une lecture des [[Sentences]] chez les [[Ordre des Frères mineurs|Frères mineurs]] qui le marque et qui l&#039;amène plus tard à prendre la décision de prêcher et de ne s&#039;habiller plus que très modestement&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 29|id=Enquête|p=77}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
L&#039;[[liste des évêques de Tréguier|évêque de Tréguier]], [[Alain de Bruc]], remarque ses talents et le presse de revenir à Tréguier. Avec le décès de ses parents, il hérite de la part du patrimoine familial qui lui est due&amp;lt;ref name=Casp45/&amp;gt;. En plus d&#039;inviter volontiers les miséreux à sa table, il recueille également deux orphelins, Derrien Guiomar, [[dominicain]], et Olivier Floc&#039;h&amp;lt;ref name=&amp;quot;P&amp;amp;M P512&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En 1284, Alain de Bruc le nomme [[Official (ecclésiastique)|official]] et l&#039;ordonne prêtre. Il le nomme ensuite recteur de la paroisse de [[Trédrez-Locquémeau|Trédrez]]. Puis en 1292, le nouvel évêque l&#039;envoie dans la paroisse de [[Louannec]]&amp;lt;ref&amp;gt;{{Harvsp|Cassard|passage=22}}&amp;lt;/ref&amp;gt;, proches des terres de son enfance. {{Source insuffisante|En 1293, il fait construire un refuge pour les indigents, Crech-Martin&amp;lt;ref&amp;gt;{{lien web|url=http://www.bretagne-gite.fr/l-histoire-de-crech-martin/|titre=L&#039;Histoire de Crech-Martin ({{s-|XIII}})|site=bretagne-gite.fr|consulté le=13-02-2017}}&amp;lt;/ref&amp;gt;}}.&lt;br /&gt;
&lt;br /&gt;
À cette époque, Yves prêche énormément et est reconnu pour ses talents d&#039;orateur ainsi que pour sa capacité à captiver son auditoire&amp;lt;ref name=Casp38&amp;gt;{{Harvsp|Cassard|passage=38}}&amp;lt;/ref&amp;gt;. Il se déplace beaucoup à pied dans la région de Tréguier, où il est vu plusieurs fois dans la même journée à des lieux différents et de bonne distance, notamment le dimanche où il prêche dans plusieurs églises du diocèse de Tréguier et de [[Saint-Brieuc]]&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 1|id=Enquête|p=30}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Vie d&#039;ascèse ===&lt;br /&gt;
Dans l&#039;enquête de canonisation, plusieurs témoins décrivent la vie de Yves comme une vie d&#039;[[ascèse]]. Au moins lors des dix dernières années de sa vie, il ne porte que des vêtements modestes, composés essentiellement d&#039;une [[Bure (étoffe)|bure]] blanche&amp;lt;ref name=Casp2223&amp;gt;{{Harvsp|Cassard|passage=22-23}}&amp;lt;/ref&amp;gt;. Il porte aussi un [[cilice]] de crin sous ses vêtements et est couvert de [[Pou de corps|poux de corps]], dont il n&#039;essaie pas de se débarrasser&amp;lt;ref name=Casp2223/&amp;gt;. Devenu [[végétarien]] dans sa jeunesse&amp;lt;ref name=Casp2223/&amp;gt;, au cours des dernières années de sa vie il ne mange plus que très peu, se nourrissant exclusivement de pain, de légumes et de [[Fabaceae|légumineuses]], et ne buvant que de l&#039;eau. Selon quelques témoins, il jeûne trois jours par semaine au pain et à l&#039;eau, mais s&#039;autorise à manger deux œufs le jour de [[Pâques]]. Il partage ses biens avec les plus démunis et accueille tous les jours des pauvres à manger chez lui. Il refuse toujours de dormir dans un lit, préférant dormir à même le sol&amp;lt;ref name=Casp2223/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Témoignages et légendes ===&lt;br /&gt;
[[Image: SantIvo.jpg|thumb|200px|left|Saint Yves entre le riche et le pauvre (bois [[polychromie|polychrome]] du {{s|XVI|e}}, [[cathédrale Saint-Corentin de Quimper]])]]&lt;br /&gt;
Dans l&#039;enquête de [[canonisation]], où son attachement aux pauvres et au soulagement de leur misère est considéré de {{citation|notoriété publique}}, un certain nombre de faits sont rapportés sur la manière dont Yves Hélori pouvait se comporter et rendre justice.&lt;br /&gt;
&lt;br /&gt;
Il y est fait mention à plusieurs reprises de moments où Yves cède ses vêtements à des pauvres qu&#039;il rencontre. Un de ces événement pourrait se situer en 1291 et correspondre alors à sa conversion dix ans après avoir entendu la lecture des Sentences de [[Pierre Lombard]] chez les franciscains&amp;lt;ref name=Casp2223/&amp;gt;. À l&#039;Hôtel-Dieu de [[Tréguier]] il se serait défait de plusieurs de ses habits précieux, qu&#039;il aurait ensuite partagés entre plusieurs pauvres, avant de repartir en courant vers Minihy où se trouve son manoir&amp;lt;ref name=Casp2223/&amp;gt;{{,}}&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 45|id=Enquête|p=105}}&amp;lt;/ref&amp;gt;. Un autre témoin fait état d&#039;un fait similaire où Yves cède un de ses habits à un pauvre rencontré dans la rue, dans une maison proche, avant de se hâter vers sa demeure&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 32|id=Enquête|p=83}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Des légendes, qui sont confondues avec des éléments historiques de la vie de Yves, existent aussi. [[Alain Bouchart]] en propose deux se déroulant à [[Tours]] et qui semblent procéder de son imagination ou d&#039;une source inconnue&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;/&amp;gt;. Une des légendes qui est fréquemment attribuée à Yves, bien qu&#039;absente du procès en canonisation, a acquis une certaine postérité. Elle est similaire à l&#039;épisode de Seigny Joan et du rôtisseur dans [[Le Tiers Livre]] écrit par [[Rabelais]]&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Henri Weitzmann|titre=Itinéraire des légendes bretonnes|éditeur=[[Hachette Livre|Hachette]]|année=1954|passage=27}}&amp;lt;/ref&amp;gt;. Appelé à traiter une affaire opposant un aubergiste à un mendiant qui se nourrirait des odeurs de la cuisine du premier, Yves prend quelques pièces dans sa bourse et les jette sur la table devant lui. L&#039;aubergiste tend la main pour les prendre mais saint Yves retient sa main et lui dit que {{citation|le son paye l&#039;odeur, à cet homme l&#039;odeur de ta cuisine, à toi le son de ces pièces}}. Cette légende sert alors à illustrer la façon dont saint Yves pouvait être reconnu par les démunis comme l&#039;avocat qui fait justice sans tenir compte de la condition sociale.&lt;br /&gt;
&lt;br /&gt;
=== Mort ===&lt;br /&gt;
Yves Hélory abandonne sa charge au diocèse en 1298 pour se consacrer entièrement à la contemplation&amp;lt;ref name=&amp;quot;P&amp;amp;M P513&amp;quot;/&amp;gt;. Il meurt le {{date-|19 mai 1303}}, le jour de l&#039;[[Ascension (fête)|ascension]], dans son manoir de Kermartin. Son corps est transporté sur un brancard à la [[cathédrale Saint-Tugdual de Tréguier]], où de nombreuses personnes se déplacent pour s&#039;approcher de sa dépouille et pouvoir la toucher&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 9|id=Enquête|p=48}}&amp;lt;/ref&amp;gt;{{,}}&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 10|id=Enquête|p=49}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Canonisation ==&lt;br /&gt;
Les premières démarches afin d’obtenir la reconnaissance officielle auprès de la papauté sont initiées par le duc de&lt;br /&gt;
Bretagne [[Jean III de Bretagne|Jean III]]. Ce dernier envoie en décembre 1329 son frère Guy de Bretagne, comte de Penthièvre, accompagner l&#039;évêque de Tréguier Yves de Boisboissel afin de supplier le pape Jean XXII de procéder à sa canonisation. Le pape [[Jean XXII]] donne une bulle en date du {{date-|26 février 1330}}, décrétant l&#039;ouverture d&#039;une enquête sur la vie et les miracles d&#039;Yves Hélory, et nomme à cet effet trois commissaires apostoliques chargés de se rendre sur place pour entendre les témoins. Leur audition de 300 témoins débute le {{date-|23 juin 1330}} à Tréguier et s’achève le {{date-|4 août}} suivant. Le {{date-|4 juin 1331}}, les procès-verbaux des enquêtes sont présentés en plein consistoire au pape qui nomme, séance tenante, trois cardinaux chargés d’examiner la cause et de préparer la tenue d’un consistoire au terme duquel il donnera sa décision finale. Par acte du {{date-|19 mai 1347}}, le pape [[Clément VI]], canonise officiellement Yves Hélory en l’inscrivant au catalogue des saints et en fixant au {{date-|19 mai}} le jour de&lt;br /&gt;
la célébration de saint Yves.&lt;br /&gt;
&lt;br /&gt;
== Culte et iconographie ==&lt;br /&gt;
=== Culte ===&lt;br /&gt;
[[Fichier:Chef de Saint Yves.jpg|thumb|200px|Le [[chef (tête d&#039;un mort)|chef]] de saint Yves dans sa [[châsse]]]]&lt;br /&gt;
[[Image: Praalgraf St. Yves.JPG|thumb|150px|Mausolée dans la [[cathédrale Saint-Tugdual de Tréguier]]]]&lt;br /&gt;
Le {{date-|29 mai 1347}}, à la levée du corps du saint, sa tête est placée dans un [[reliquaire]] et le reste des reliques mis dans un sépulcre que [[Jean V de Bretagne]] fait surmonter d&#039;un monument, dans la [[cathédrale Saint-Tugdual de Tréguier]]&amp;lt;ref name=&amp;quot;P&amp;amp;M P513&amp;quot; /&amp;gt;, où le corps d&#039;Yves avait été apporté juste après sa mort.&lt;br /&gt;
&lt;br /&gt;
Son culte est resté particulièrement vivace en Bretagne où les chapelles qui lui sont dédiées ainsi que les statues le représentant sont très fréquentes. Les récits hagiographiques également comme, à titre d&#039;exemple, celui-ci :&lt;br /&gt;
&lt;br /&gt;
{{vers&lt;br /&gt;
|texte =&lt;br /&gt;
Quand les Bretons voyaient passer dans la campagne&lt;br /&gt;
Saint Yves revêtu de son grand manteau blanc&lt;br /&gt;
Ils se disaient que Dieu l&#039;avait mis en Bretagne&lt;br /&gt;
Pour défendre des grands les faibles, les petits.&lt;br /&gt;
À son nom s&#039;éveillaient, sur leurs couches funèbres&lt;br /&gt;
Des enfants dont les mères avaient fermé les yeux&lt;br /&gt;
Les marins l&#039;invoquaient au milieu des ténèbres,&lt;br /&gt;
Et leurs barques passaient les brisants périlleux&lt;br /&gt;
|langue = fr&lt;br /&gt;
|auteur = Joseph Rousse | précision = pour l&#039;inauguration du nouveau tombeau de saint Yves dans la cathédrale de Tréguier.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dans un vieux [[cantique]] populaire, on le fêtait en chantant &#039;&#039;{{langue|la|Sanctus Yvo erat brito; advocatus sed non latro, res mirabilis&amp;lt;ref&amp;gt;[[Dictionnaire illustré latin-français|Dictionnaire Félix Gaffiot]] : &#039;&#039;admirable, merveilleux, étonnant, singulier&#039;&#039;&amp;lt;/ref&amp;gt; (miranda) populo}}&#039;&#039; {{en français|Saint Yves était breton, avocat mais pas voleur, chose admirable pour le peuple !}}.&lt;br /&gt;
&lt;br /&gt;
[[Ernest Renan]] a décrit la dévotion dont saint Yves était l&#039;objet dans sa jeunesse :&lt;br /&gt;
{{Citation bloc|Le mois de mai, où tombait la fête de ce saint excellent, n&#039;était qu&#039;une suite de processions au &#039;&#039;[[minihi]]&#039;&#039; ; les paroisses, précédées de leurs croix processionnelles, se rencontraient sur les chemins ; on faisait alors s&#039;embrasser les croix en signe d&#039;alliance. La veille de la fête, le peuple se réunissait le soir dans l&#039;église, et à minuit, le saint étendit le bras pour bénir l&#039;assistance prosternée. Mais, s&#039;il y avait dans la foule un seul incrédule qui levât les yeux pour voir si le miracle était bien réel, le saint, justement blessé de ce soupçon, ne bougeait pas, et, par la faute du mécréant, personne n&#039;était béni&amp;lt;ref&amp;gt;[[Ernest Renan]], &amp;quot;Souvenirs d&#039;enfance et de jeunesse&amp;quot;, 1883.&amp;lt;/ref&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
Saint Yves est le [[saint]] patron de toutes les professions de justice et de droit, notamment celle des [[avocat (métier)|avocats]]. Chaque {{date-|19 mai}}, à [[Tréguier]], lors de la [[fête de la Saint-Yves]], une délégation de ces professions accompagne le [[Pardon (cérémonie)|pardon]] à saint Yves qui est une des grandes fêtes religieuses bretonnes, au même titre que le pardon de [[Sainte-Anne-d&#039;Auray]].&lt;br /&gt;
&lt;br /&gt;
La veille du Pardon, depuis 1993, le Barreau de Saint-Brieuc organise à Tréguier un Colloque, occasion de rencontre et de réflexion entre juristes sur un sujet d&#039;actualité.&lt;br /&gt;
&lt;br /&gt;
De même, de nombreuses associations de juristes et des facultés de droit ont pour saint patron Yves. Par exemple &#039;&#039;Saint Yves Society&#039;&#039;, ONG basée à Jérusalem, la [[conférence Saint-Yves]], ou encore l&#039;association Saint Yves Lyonnais.&lt;br /&gt;
&lt;br /&gt;
Par la [[communion des saints]], la tradition religieuse permet aux catholiques de solliciter l&#039;intercession de saint Yves afin d&#039;obtenir bonne fin des procédures pour lesquelles ils sont en demande ou en défense sous forme de neuvaine ou de prière quotidienne&amp;lt;ref&amp;gt;{{Lien web |titre=Prière a saint Yves pour ceux qui ont des proces |url=http://www.1000questions.net/fr/Qui-sont/saint_yves_priere.html |site=www.1000questions.net |consulté le=2021-10-21}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Églises dédiées à saint Yves ===&lt;br /&gt;
[[Fichier:Façade de Saint-Yves-des-Bretons.jpg|thumb|150px|[[Église Saint-Yves-des-Bretons|Saint-Yves-des-Bretons]], église nationale des Bretons à [[Rome]]]]&lt;br /&gt;
{{article détaillé|Église Saint-Yves-des-Bretons|Église Sant&#039;Ivo alla Sapienza}}&lt;br /&gt;
Dès la première moitié du {{s-|XV|e}}, Alain de Coetivy obtient du pape [[Nicolas V]] la concession d&#039;une église à Rome, bâtie probablement au {{s-|XII|e}} et placée alors sous le patronage de [[André (apôtre)|saint André]]. Par bulle du {{date-|16 septembre 1455}}, [[Calixte III]], successeur de [[Nicolas V]], ratifie cette décision. Cette vieille église est détruite en 1875 pour cause de vétusté et reconstruite dans le même temps plus petite dans un style néo-renaissance florentine.&lt;br /&gt;
&lt;br /&gt;
Un tympan en terre cuite vernissée surmonte la porte d&#039;entrée principale et représente au centre une [[Vierge à l&#039;Enfant]], à sa droite saint Yves et à sa gauche [[Bernard de Clairvaux|saint Bernard]]. L&#039;ancienne église conservait de nombreuses pierres tombales de bretons décédés à Rome et enterrés dans l&#039;église. Elles ornent aujourd&#039;hui le cloître de [[Église Saint-Louis-des-Français de Rome|Saint-Louis-des-Français]] à Rome&amp;lt;ref&amp;gt;François de LEPINAY, &#039;&#039;Architecture religieuse à Rome à la fin du {{s-|XIX|e}} : la reconstruction de Saint-Yves-des-Bretons&#039;&#039;.&amp;lt;/ref&amp;gt;. La façade a été restaurée pour l&#039;année 2003, année du septième centenaire de la mort du saint. Cette petite [[Église Saint-Yves-des-Bretons|église dite « Saint-Yves-des-Bretons »]] (&#039;&#039;Sant&#039;Ivo dei Bretoni&#039;&#039;), située au {{n°|8}} Vicolo della Campana se visite sur demande auprès du recteur de Saint-Louis-des-Français. Le {{date-|19 mai}}, chaque année, une messe en français y est célébrée en l&#039;honneur de saint Yves.&lt;br /&gt;
&lt;br /&gt;
La seconde église dédiée au saint à Rome s&#039;appelle &#039;&#039;[[Église Sant&#039;Ivo alla Sapienza|Sant&#039;Ivo alla Sapienza]]&#039;&#039;. Église originale en particulier par la tour qui la surmonte représentant la tour de Babel. Elle fut construite entre 1642 et 1660 par [[Francesco Borromini|Borromini]] dans l&#039;enceinte du Palazzo della Sapienza abritant alors le Studio Romano qui devint ensuite l&#039;université de Rome (jusqu&#039;en 1935). À l&#039;intérieur de l&#039;église se trouve un retable représentant saint Yves commencé par [[Pierre de Cortone]] (1596-1669) et achevé par un ou plusieurs de ses élèves.&lt;br /&gt;
&lt;br /&gt;
En France, la [[Ancienne chapelle Saint-Yves (Paris)|Confrérie Saint-Yves]] est fondée à Paris et décide d&#039;élever une [[Chapelle Saint-Yves de Paris|chapelle]] en l&#039;honneur du saint. Un projet approuvé par Foulques de Chanac, évêque de Paris de 1342 à 1349, par lettres du lundi après l&#039;Assomption de 1348&amp;lt;ref&amp;gt;{{lien web|url=http://infobretagne.com/confrerie-saint-yves.htm|titre=Confrérie Saint-Yves à Paris et sa chapelle|site=infobretagne.com|consulté le=31-05-2020}}&amp;lt;/ref&amp;gt;. L&#039;[[Ancienne chapelle Saint-Yves (Paris)|ancienne chapelle Saint-Yves de Paris]] a été détruite en [[1796 en France|1796]].&lt;br /&gt;
&lt;br /&gt;
D&#039;autres églises et chapelles sont dédiées à saint Yves :&lt;br /&gt;
{{article détaillé|Église Saint-Yves}}&lt;br /&gt;
&lt;br /&gt;
=== Iconographie ===&lt;br /&gt;
On le représente généralement avec une bourse dans une main, pour signifier tout l&#039;argent qu&#039;il a donné aux pauvres dans sa vie, et un parchemin dans l&#039;autre, qui rappelle sa charge de [[official (ecclésiastique)|juge ecclésiastique]]. Il est également souvent figuré entre un homme riche et un homme pauvre.&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;160&amp;quot; widths=&amp;quot;160&amp;quot;&amp;gt; &lt;br /&gt;
Fichier:Ploubezre (22) Chapelle de Kerfons Autel et retable de Saint-Yves 02.JPG|[[Ploubezre]] : Chapelle Notre-Dame-de-Kerfons : &#039;&#039;Saint Yves entre le riche et le pauvre&#039;&#039;.&lt;br /&gt;
Fichier:Jacob Jordaens - Saint Yves, patron des avocats.jpg|[[Jacob Jordaens]] : &#039;&#039;Saint Yves, patron des avocats&#039;&#039; (1645, [[musées royaux des Beaux-Arts de Belgique]])&lt;br /&gt;
Fichier:Tríptico de San Ivo, San Clemente y San Antonio de Padua (Salamanca).jpg|Triptyque de saint Yves (église Saint-Clément et Saint-Antoine de [[Padoue]], {{s mini-|XIV}} ou {{s-|XV}})&lt;br /&gt;
Fichier:15 Tréguier Cathédrale groupe statuaire saint Yves entre le riche et le pauvre.JPG|[[Cathédrale Saint-Tugdual de Tréguier]] :&#039;&#039;Saint Yves entre le riche et le pauvre (bois, {{s-|XVII}})&#039;&#039;.&lt;br /&gt;
File:106 Saint Yves entre le riche et le pauvre Chapelle Saint-Mélar de Locmélar Plounéventer.jpg|[[Plounéventer]] : chapelle Saint-Mélar de Locmélar, &#039;&#039;saint Yves entre le riche et le pauvre&#039;&#039; (exposition au [[château de Kerjean]] en 2013).&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Saint-Yves-de-Vérité ===&lt;br /&gt;
{{Article détaillé|Saint-Yves-de-Vérité}}&lt;br /&gt;
[[Saint-Yves-de-Vérité]] était, à l&#039;origine, l&#039;une des appellations officielles données à saint Yves, mais qui, au cours des siècles, a plus particulièrement été attribuée à des statues de ce saint qui étaient invoquées, selon des pratiques superstitieuses, en Bretagne afin de faire mourir d&#039;autres personnes dans l&#039;année.&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;160&amp;quot; widths=&amp;quot;160&amp;quot;&amp;gt;  &lt;br /&gt;
File:491 Saint-Yves-de-Vérité Image de dévotion.jpg|Image de dévotion à [[Saint-Yves-de-Vérité]] (Imagerie bretonne, imprimeur, Dinan, vers 1890).&lt;br /&gt;
File:Trédarzec Saint Yves de Vérité.jpg|L&#039;[[Oratoire (édifice religieux)|oratoire]] de [[Saint-Yves-de-Vérité]] à [[Trédarzec]] en 1879 (dessin de [[Louis-Marie Faudacq]] publié en 1909 dans &amp;quot;Le Fureteur breton&amp;quot;).&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
=== Postérité ===&lt;br /&gt;
À la fin du {{s-|XX|e}}, le mouvement culturel breton lance l&#039;idée d&#039;une fête annuelle des Bretons (à l&#039;instar de la Saint-Patrick pour les Irlandais) et retient le jour de la Saint-Yves comme date fédératrice. Désormais le {{date-|19 mai}} est l&#039;occasion d&#039;un grand pardon à Tréguier, mais aussi dans toute la Bretagne et partout où des Bretons sont installés, sous le nom de &#039;&#039;[[Fête de la Saint-Yves|Gouel Erwan]]&#039;&#039; (&#039;&#039;litt.&#039;&#039;: « fête de Yves »). Le pardon est souvent encadré de festivités profanes qui peuvent durer plus d&#039;une journée. En 2011, la Région Bretagne les reprend officiellement sous le nom de « [[Fête de la Bretagne]] ».&lt;br /&gt;
&lt;br /&gt;
== Notes et références ==&lt;br /&gt;
=== Notes ===&lt;br /&gt;
{{Références|groupe=Note}}&lt;br /&gt;
&lt;br /&gt;
=== Références ===&lt;br /&gt;
{{Références}}&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
{{autres projets|&lt;br /&gt;
commons=Category:Ivo of Kermartin}} &lt;br /&gt;
=== Bibliographie ===&lt;br /&gt;
* [[Michel Carrouges]], &#039;&#039;Saint Yves, avocat des pauvres&#039;&#039;, {{date-|mai 2010}}, 34 pages, [[Éditions du Cerf]], coll. « Albums, fêtes et saisons».&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=[[Jean-Christophe Cassard]] |titre=Saint Yves de Tréguier |sous-titre=un saint du {{s-|XIII}} |lieu=Paris |éditeur=Beauchesne |année=1992 |isbn= |lire en ligne=https://books.google.fr/books?id=oIBsqkM1EbUC |id=Cassard}}.&lt;br /&gt;
* Jean-Christophe Cassard, Jacques Dervilly et Daniel Giraudon, &#039;&#039;Les Chemins de saint Yves&#039;&#039;, Morlaix, {{éd.}} [[Ar Falz|Skol Vreizh]], [[1994]].&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Jean-Christophe Cassard |responsabilité1=dir. |auteur2=Georges Provost |responsabilité2=dir. |titre=Saint Yves et les Bretons |sous-titre=Culte, images, mémoire |lieu=Rennes |éditeur=[[Presses universitaires de Rennes]] |nature ouvrage=actes du colloque organisé à Tréguier du 18 au 20 septembre 2003 |année=2004 |pages totales=368 |isbn= |lire en ligne=http://books.openedition.org/pur/22388?lang=fr |id=StYves&amp;amp;Bretons}}.&lt;br /&gt;
* [[René Couffon]], &#039;&#039;La Confrérie de Saint-Yves à Paris et sa chapelle&#039;&#039;, Saint-Brieuc, Presses bretonnes, 1933.&lt;br /&gt;
* {{Article |auteur1=[[François Falc&#039;hun]] |titre=Les noms bretons de saint Yves|périodique=[[Annales de Bretagne et des pays de l&#039;Ouest]] |tome=50 |numéro=1 |date=1943 |page=177-194 |lire en ligne=https://www.persee.fr/doc/abpo_0003-391x_1943_num_50_1_1820|id=Falc&#039;hun}}&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Pierre France |titre=Saint Yves |sous-titre=Étude sur sa vie et son temps |lieu=Saint-Brieuc |éditeur=impr. René Prud&#039;homme |année=1893 |numéro d&#039;édition=2 |année première édition=1888 |pages totales=556 |lire en ligne=https://fr.wikisource.org/wiki/Saint_Yves/Texte_entier}}.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Muriel Glaunec |responsabilité1=dir. |auteur2=Erwan Le Bozec |responsabilité2=dir. |auteur institutionnel=conseil général des Côtes-d&#039;Armor |titre=D&#039;Yves Hélory à saint Yves |sous-titre=Exposition itinérante |éditeur= |nature ouvrage=catalogue de l&#039;exposition itinérante élaborée à partir de l&#039;exposition présentée au domaine départemental de [[château de la Roche-Jagu|la Roche-Jagu]] du 17 mai au 1 novembre 2003 |année=s. d. |isbn= |lire en ligne=http://docplayer.fr/11618348-D-yves-helory-a-saint-yves.html}}.&lt;br /&gt;
* Pierre de La Haye, &#039;&#039;Saint Yves de Tréguier&#039;&#039;, éditions d’art Jos Le Doaré, 1973.&lt;br /&gt;
* {{Ouvrage|langue=fr|langue originale=la|auteur1=Jean-Paul Le Guillou|titre=Saint Yves de Tréguier|sous-titre=Enquête canonique|lieu=Paris|éditeur=[[Éditions L&#039;Harmattan]]|année=2015|pages totales=263|isbn=978-2-343-06586-1|id=Enquête}}&lt;br /&gt;
* Jean Le Mappian, &#039;&#039;Saint Yves patron des juristes&#039;&#039;, Éditions Ouest-France, 1997.&lt;br /&gt;
* Marie-Thérèse Le Moign-Klipffel, &#039;&#039;Saint Yves&#039;&#039;, Saint-Brieuc, Presses bretonnes, 1939.&lt;br /&gt;
* Benoît Le Roux, &#039;&#039;Saint Yves&#039;&#039;, 158 p., [[Via Romana]], Versailles, 2012 {{ISBN|979-10-90029-20-0}}.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Louis Mahé |préface=François Serrand |illustrateur=Yves Le Meur, Janvier et Joseph Savin |titre=Saint Yves |sous-titre=Son pardon à Tréguier |éditeur=Octave-Louis Aubert |année=1942 |pages totales=68 }}&lt;br /&gt;
* Louis Mahé, &#039;&#039;Monsieur Saint Yves : Sa vie, ses miracles, ses triomphes&#039;&#039;, Saint-Brieuc, René Prud&#039;homme, 1949.&lt;br /&gt;
* [[Alexandre Masseron]], &#039;&#039;Saint Yves&#039;&#039;, Paris, {{éd.}} Henri Laurens.&lt;br /&gt;
* [[Henri Poisson]], &#039;&#039;La Vie de saint Yves&#039;&#039;, Rennes, Éditions Ouest-France, 2003 {{ISBN|2-73733-331-8}}.&lt;br /&gt;
* [[Henri Queffélec]], &#039;&#039;Saint Yves&#039;&#039;, Paris, Ramsay, 1987 (réédition Éditions de la Seine, 1991).&lt;br /&gt;
*Gildas Salaün, &amp;quot;Médailles de Saint-Yves&amp;quot;, &#039;&#039;Annales de la Société Bretonne de Numismatique et d&#039;Histoire&#039;&#039; ([[International Standard Serial Number|ISSN]] [https://catalogue.bnf.fr/ark:/12148/cb34492012z 1250-5781]), 2003, pp.&amp;amp;nbsp;73–75.&lt;br /&gt;
* [[Marie-Paule Salonne]], &#039;&#039;Saint Yves, patron des avocats, avocat des opprimés&#039;&#039;, Éditions franciscaines, Paris, 1945.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=François Semur |titre=Yves de Kermartin, magistrat et avocat du {{s-|XIII|e}} |sous-titre=Nouveaux regards sur la vie et le culte du plus grand saint de Bretagne, patron des hommes de loi et universitaires |lieu=Bannalec |éditeur=éditions Jos Le Doaré |année=1983 |pages totales=86 |isbn=2-904412-01-8}}.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Anonyme |titre=Dans les pas de Saint-Yves |lieu=Lannon |éditeur=Impram |collection=Le Trégor |année=1989 |pages totales=24 |format livre=plaquette agrafée, in-8°, 21 x 15 cm, phot. noir et blanc dans le texte |isbn=}}.&lt;br /&gt;
* [[Octave-Louis Aubert]], &#039;&#039;Le Pardon de Saint Yves de Tréguier&#039;&#039; (photos de [[Raphaël Binet]]) in La Bretagne Touristique {{n°|62}}, {{date-|mai 1927}}.&lt;br /&gt;
&lt;br /&gt;
==== Bande dessinée ====&lt;br /&gt;
* Gilles Chaillet, Vasco n°20, &#039;&#039;Le Dogue de Brocéliande.&#039;&#039; Publié par Le Lombard en 2003. {{ISBN|2-8036-1902-4}}. 48p.&lt;br /&gt;
*Nicolas de Beauregard, Sareph, &#039;&#039;Danevell-Destins trégorrois.&#039;&#039; Publié par Coop Breizh en 2017. {{ISBN|9782843468421}}.&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
&amp;lt;!-- merci de ne pas ajouter de lien commercial --&amp;gt;&lt;br /&gt;
{{Liens}}&lt;br /&gt;
* {{vidéo}} [https://saintbrieuc-treguier.catholique.fr/kto-saint-yves-patron-bretagne/ Saint Yves, patron de la Bretagne], Église catholique en Côtes-d&#039;Armor &lt;br /&gt;
* {{vidéo}} [https://cpsainttugdual.catholique.fr/-Saint-Yves-2022-.html Messe et pardon de la Saint Yves], paroisse Saint-Tugdual de Tréguier &lt;br /&gt;
* [https://eglisesfrancaisesarome.it/saint-yves-des-bretons/ L&#039;église Saint-Yves-des-Bretons de Rome], Églises françaises à Rome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Helori de Kermartin, Yves}}&lt;br /&gt;
[[Catégorie:Saint breton|Yves]]&lt;br /&gt;
[[Catégorie:Saint catholique français|Yves Helory de Kermartin]]&lt;br /&gt;
[[Catégorie:Saint catholique fêté le 19 mai]]&lt;br /&gt;
[[Catégorie:Saint canonisé par Clément VI|Yves Helory de Kermartin]]&lt;br /&gt;
[[Catégorie:Trégor|Yves Helory de Kermartin]]&lt;br /&gt;
[[Catégorie:Personnalité bretonne du XIIIe siècle]]&lt;br /&gt;
[[Catégorie:Personnalité bretonne du XIVe siècle]]&lt;br /&gt;
[[Catégorie:Personnalité liée à Tréguier]]&lt;br /&gt;
[[Catégorie:Tertiaire franciscain]]&lt;br /&gt;
[[Catégorie:Étudiant de l&#039;ancienne université d&#039;Orléans]]&lt;br /&gt;
[[Catégorie:Naissance en 1253]]&lt;br /&gt;
[[Catégorie:Naissance dans le duché de Bretagne]]&lt;br /&gt;
[[Catégorie:Décès en 1303]]&lt;br /&gt;
[[Catégorie:Décès dans le duché de Bretagne]]&lt;br /&gt;
[[Catégorie:Prêtre catholique breton]]&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Yves_H%C3%A9lory_de_Kermartin&amp;diff=363</id>
		<title>Yves Hélory de Kermartin</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Yves_H%C3%A9lory_de_Kermartin&amp;diff=363"/>
		<updated>2024-09-20T14:55:21Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « {{Voir homonymes|Saint Yves}} {{confusion|Yves Saint-Martin}} {{Infobox Saint  | nom                             = Yves de Kermartin&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt; &amp;#039;&amp;#039;Saint catholique&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;  | image                           = Weyden Ivo.jpg  | taille image                    = 240  | légende                         = Saint Yves par Rogier van der Weyden ({{s|XV}}), National Gallery, Londres.   | titre                           = Official (ecclésiastique)|offici... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Voir homonymes|Saint Yves}}&lt;br /&gt;
{{confusion|Yves Saint-Martin}}&lt;br /&gt;
{{Infobox Saint&lt;br /&gt;
 | nom                             = Yves de Kermartin&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt; &#039;&#039;Saint catholique&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
 | image                           = Weyden Ivo.jpg&lt;br /&gt;
 | taille image                    = 240&lt;br /&gt;
 | légende                         = Saint Yves par [[Rogier van der Weyden]] ({{s|XV}}), [[National Gallery]], [[Londres]]. &lt;br /&gt;
 | titre                           = [[Official (ecclésiastique)|official ecclésiastique]], avocat des pauvres&lt;br /&gt;
 | date de naissance               = Vers {{date|||1253}}{{Note|groupe=Note|nom=Naissance|Si 1253 est souvent avancée quant à l&#039;année de naissance de Yves Hélory de Kermartin, d&#039;autres hypothèses ont été émises (1247, 1248 ou 1250)&amp;lt;ref name=SourceNaissance&amp;gt;{{Harvsp|Cassard|passage=12}}&amp;lt;/ref&amp;gt;.}}&lt;br /&gt;
 | lieu de naissance               = Manoir de Kermartin à [[Minihy-Tréguier|Minihy]] &amp;lt;small&amp;gt;([[Duché de Bretagne]])&amp;lt;/small&amp;gt;&lt;br /&gt;
 | date de décès                   = {{date de décès|19|mai|1303}}&lt;br /&gt;
 | lieu de décès                   = [[Trégor]] &amp;lt;small&amp;gt;([[Duché de Bretagne]])&amp;lt;/small&amp;gt;&lt;br /&gt;
 | âge au décès                    = 50&lt;br /&gt;
 | nom de naissance                = Yves Hélory de Kermartin&lt;br /&gt;
 | autres noms                     = &lt;br /&gt;
 | lieu de vénération              = [[Tréguier]] où a lieu un célèbre [[Pardon (cérémonie)|pardon]] tous les [[19 mai]].&lt;br /&gt;
 | date de béatification           = &lt;br /&gt;
 | lieu de l&#039;annonce béatification = &lt;br /&gt;
 | béatifié par                    = &lt;br /&gt;
 | date de canonisation            = [[1347]]&lt;br /&gt;
 | lieu de l&#039;annonce canonisation  = &lt;br /&gt;
 | canonisé par                    = [[Clément VI]]&lt;br /&gt;
 | date docteur église             = &lt;br /&gt;
 | lieu de l&#039;annonce docteur       = &lt;br /&gt;
 | docteur église par              = &lt;br /&gt;
 | docteur mention                 = &lt;br /&gt;
 | vénéré par                      = l&#039;[[Église catholique|Église catholique romaine]]&lt;br /&gt;
 | fête                            = [[19 mai]]&lt;br /&gt;
 | attributs                       = généralement représenté avec une [[Porte-monnaie|bourse]] dans une main, pour signifier tout l&#039;argent qu&#039;il a donné aux pauvres dans sa vie, et un [[parchemin]] dans l&#039;autre, qui rappelle sa charge de [[Official (ecclésiastique)|juge ecclésiastique]]. Il est également souvent figuré entre un homme riche et un homme pauvre.&lt;br /&gt;
 | titre saint patron              = &lt;br /&gt;
 | saint patron                    = professions de la [[justice]] et du [[droit]] ([[Avocat (métier)|avocat]]s).&amp;lt;br /&amp;gt;[[Bretagne]] (avec [[Anne (mère de Marie)|sainte Anne]]).&lt;br /&gt;
 | problème                        = &lt;br /&gt;
 | date de suppression             = &lt;br /&gt;
 | blason                          = Blason fam fr Hélory.svg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Yves Hélory de Kermartin&#039;&#039;&#039;, ou &#039;&#039;&#039;Yves de Tréguier&#039;&#039;&#039;, ou &#039;&#039;&#039;Erwan Helouri&#039;&#039;&#039; en [[breton]], ou &#039;&#039;&#039;saint Yves&#039;&#039;&#039; dans la tradition [[Catholicisme|catholique]], est un prêtre et [[official (ecclésiastique)|official]] du [[diocèse de Tréguier]], né probablement vers {{date de naissance|1253}}{{Note|groupe=Note|nom=Naissance}} au manoir de Kermartin à [[Minihy-Tréguier|Minihy]], dans le [[Duché de Bretagne]], et mort le {{date de décès|19 mai 1303}} au même endroit.&lt;br /&gt;
&lt;br /&gt;
Considéré par l&#039;[[Église catholique]] comme ayant consacré sa vie à la justice et aux pauvres, il est [[Canonisation|canonisé]] le {{date-|19 mai 1347}} par le pape [[Clément VI]]. Saint Yves est le [[saint patron]] de toutes les professions de justice et de droit, notamment celle d’[[avocat (métier)|avocat]]. Il est également saint patron de la [[Bretagne]] et fait l&#039;objet d&#039;un grand [[Pardon (cérémonie)|pardon]] à l&#039;occasion de la [[fête de la Saint-Yves]] tous les ans à [[Tréguier]]. On le fête le [[19 mai]].&lt;br /&gt;
&lt;br /&gt;
== Nom ==&lt;br /&gt;
{{article détaillé|Erwan|Yves}}&lt;br /&gt;
En [[breton]], saint Yves est appelé &#039;&#039;sant Erwan&#039;&#039;. Si Erwan est une des variantes les plus communes pour le désigner, elle est originaire du [[Trégor]]. On retrouve aussi &#039;&#039;Iwan&#039;&#039;, &#039;&#039;Youenn&#039;&#039; ou &#039;&#039;Eozen&#039;&#039; dans d&#039;autres régions de Bretagne. Ces variantes proviennent de ses deux prototypes : {{page h&#039;|Yves}}, emprunt au français, et Eudon, prénom vieux breton&amp;lt;ref&amp;gt;{{Harvsp|id=StYves&amp;amp;Bretons|texte=Bernard Tanguy, « Les lieux de culte de saint Yves en Bretagne »|passage=99}}.&amp;lt;/ref&amp;gt;, qui étaient vraisemblablement considérés comme synonymes du temps de saint Yves&amp;lt;ref&amp;gt;{{Harvsp|Falc&#039;hun|p=183}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Biographie ==&lt;br /&gt;
=== Sources ===&lt;br /&gt;
La source principale de référence utilisée pour connaître la vie de Yves Hélory de Kermartin est la procédure entamée en [[1330]] pour aboutir à sa [[canonisation]]. L&#039;enquête de canonisation s&#039;ouvre le {{date-|26 février 1330}} et aboutit positivement le {{date-|19 mai 1347}}&amp;lt;ref name=&amp;quot;P&amp;amp;M P513&amp;quot;&amp;gt;{{Ouvrage|auteur1=Michel Priziac|auteur2=Michel Mohrt|titre=Bretagne des saints et des croyances|éditeur=Kidour|année=2002|passage=513|isbn=}}&amp;lt;/ref&amp;gt;. Elle fournit dans la première partie un certain nombre de témoignages sur ce que fut sa vie, la manière dont les gens le percevaient et, dans la seconde partie, les miracles qui lui sont attribués. Le rouleau de cette enquête est présenté au pape [[Jean XXII]] le {{date-|4 juin 1331}}. Une copie, conservée dans un manuscrit déposé à la Bibliothèque municipale de [[Saint-Brieuc]], a permis la première publication du texte en latin en 1887, puis en français au {{s|XX}}&amp;lt;ref&amp;gt;{{Lien web|url=https://www.ouest-france.fr/bretagne/treguier-22220/lenquete-de-canonisation-de-saint-yves-traduite-en-francais-3771615|titre=L&#039;enquête de canonisation de saint Yves traduite en français|date=15 octobre 2015|site=ouest-france.fr}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Après sa canonisation, on trouve peu d&#039;écrits au [[bas Moyen Âge]] sur sa vie&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;&amp;gt;{{Harvsp|id=StYves&amp;amp;Bretons|texte=Yves Coativy, « Saint Yves dans les chroniques bretonnes de la fin du Moyen Âge »}}&amp;lt;/ref&amp;gt;. Utilisant sans doute comme source principale l&#039;enquête de canonisation, la première [[Vita|vie]] serait composée au {{s|XIV}} par Maurice Godefroy, un [[Ordre des Prêcheurs|dominicain]] de [[Morlaix]], qui y ajoute des éléments issus de la tradition orale&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Albert Le Grand|titre=Les vies des Saints de la Bretagne-Armorique|éditeur=|année=1837|passage=280}}&amp;lt;/ref&amp;gt;{{,}}&amp;lt;ref name=Roparz&amp;gt;{{Ouvrage|auteur1=M. S. Roparz|titre=Histoire de Saint Yves|sous-titre=patron des gens de justice|éditeur=|année=1856|passage=V-VII}}&amp;lt;/ref&amp;gt;. Ce manuscrit est repris ensuite par [[Daniel van Papenbroeck|Papebroch]] dans les &#039;&#039;[[Acta Sanctorum]]&#039;&#039; des [[bollandistes]]&amp;lt;ref name=Roparz/&amp;gt;. Entre-temps, il est aussi fait mention de la vie de saint Yves au quatrième livre des &#039;&#039;Grandes croniques de Bretaigne&#039;&#039; d&#039;[[Alain Bouchart]]&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;/&amp;gt;{{,}}&amp;lt;ref name=Roparz/&amp;gt;. Bouchart reprend des éléments du procès en canonisation, mais ajoute également des éléments inédits, de sources inconnues&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;/&amp;gt;. À partir de la [[Renaissance]] plusieurs récits de sa vie sont écrits en [[français]], en [[latin]], en [[breton]] et en [[italien]].&lt;br /&gt;
&lt;br /&gt;
Enfin, il existe également un document en latin écrit de la main d&#039;Yves Hélory de Kermartin : son testament, qui est le seul de ses écrits transmis jusqu&#039;à nos jours&amp;lt;ref name=Casp45&amp;gt;{{Harvsp|Cassard|passage=45}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Enfance et jeunesse ===&lt;br /&gt;
[[File:Kermartin.jpg|thumb|Lieu supposé de la naissance de Saint Yves, avant sa destruction au {{s-|XIX}}.]]&lt;br /&gt;
La date de naissance de Yves Hélory de Kermartin est inconnue. Selon toute vraisemblance elle se situerait au milieu du {{s|XIII}}, la tradition retenant généralement {{date|1253}}, mais d&#039;autres années sont parfois proposées. Dans son livre &#039;&#039;Saint Yves de Tréguier : un saint du {{s-|XIII}}&#039;&#039;, [[Jean-Christophe Cassard]] défend une naissance en {{date|1248}}, ce qui permettrait selon lui une chronologie cohérente jusqu&#039;en 1280&amp;lt;ref name=Casp16&amp;gt;{{Harvsp|Cassard|passage=16}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Yves Hélory de Kermartin naît dans une famille noble au manoir de Kermartin{{Note|groupe=Note|Le manoir, qui a l&#039;aspect d&#039;une grande ferme, est démoli en 1834, certainement après avoir été ravagé par un incendie provoqué par une pipe mal éteinte&amp;lt;ref name=PatrimoineManoir&amp;gt;{{lien web|url=http://patrimoine.bzh/gertrude-diffusion/dossier/ferme-de-kermartin-minihy-treguier/9ec19d73-e023-4696-aa72-237f9302f742|titre=Ferme de Kermartin (Minihy-Tréguier)|site=patrimoine.bzh, site du patrimoine culturel de la [[Région Bretagne]]|consulté le=19-07-2020}}&amp;lt;/ref&amp;gt;. Il est reconstruit par son propriétaire, l&#039;archevêque [[Hyacinthe-Louis de Quélen|de Quélen]], qui y fait apposer une plaque en marbre au-dessus de la porte d&#039;entrée. Cette plaque porte l&#039;inscription : &#039;&#039;Ici est né, le 17 octobre 1253, et mort le 19 mai 1303, saint Yves, official de Tréguier, curé de Trédrez et de Louannec. Sa maison, qui a subsisté jusqu&#039;en 1834, a été alors démolie pour cause de vétusté&#039;&#039;&amp;lt;ref name=PatrimoineManoir/&amp;gt;{{,}}&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Benjamin-Philibert Jollivet|titre=Les Côtes-du-Nord : histoire et géographie de toutes les villes et communes du département|éditeur=imprimerie de B. Jollivet|année=1993|passage=255|isbn=}}&amp;lt;/ref&amp;gt;. Le colombier qui subsiste est considéré par la tradition comme contemporain à Saint Yves, bien qu&#039;il ait probablement été bâti plus tard&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Jean Auffret|titre=Colombiers et pigeonniers en Bretagne profonde|éditeur=Editions régionales de l&#039;Ouest|année=|passage=107|isbn=}}&amp;lt;/ref&amp;gt;{{,}}&amp;lt;ref name=PatrimoineColombier&amp;gt;{{lien web|url=http://patrimoine.bzh/gertrude-diffusion/dossier/colombier-de-kermartin-minihy-treguier/a85812fb-a25f-461a-8a36-c0f434fcf6e1#localisation|titre=Colombier de Kermartin (Minihy-Tréguier)|site=patrimoine.bzh, site du patrimoine culturel de la [[Région Bretagne]]|consulté le=19-07-2020}}&amp;lt;/ref&amp;gt;.}} sur la paroisse de [[Minihy-Tréguier|Minihy]]. Son grand-père, Ganaret de Kermartin, est [[Chevalier (chevalerie)|chevalier]]&amp;lt;ref name=SourceNaissance/&amp;gt;. Son père, Hélory, est [[damoiseau]], et sa mère, Azo, est aussi certainement noble&amp;lt;ref name=SourceNaissance/&amp;gt;. Sa mère prétend qu&#039;un songe lui aurait révélé que son fils serait un saint&amp;lt;ref name=&amp;quot;P&amp;amp;M P512&amp;quot; /&amp;gt;. Il a un frère et deux sœurs dont on ne sait pas grand chose&amp;lt;ref&amp;gt;{{Harvsp|Cassard|passage=13}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il grandit dans le Trégor et part dans les années 1260 accompagné de son précepteur, Jean de Kerhos, clerc de la paroisse de Pleubian, à Paris pour suivre des études à la [[Sorbonne]]. Il étudie six ans à la [[faculté des arts]] avant de passer son examen final [[rue du Fouarre]] à 20 ans&amp;lt;ref name=Casp15&amp;gt;{{Harvsp|Cassard|passage=15}}&amp;lt;/ref&amp;gt;. Il poursuit ensuite ses études [[rue du Clos-Bruneau]] à la [[Ancienne université de Paris#Faculté de décret|faculté de décret]] où il apprend le [[droit canon]]&amp;lt;ref name=Casp15/&amp;gt;. Il partirait ensuite en {{date-|1272}} poursuivre ses études de droit romain à l&#039;[[université d&#039;Orléans]]. Il retourne probablement trois années à Paris, entre 1274 et 1277, pour y étudier la théologie&amp;lt;ref name=Casp16/&amp;gt;. Déjà, il se fait remarquer par sa vie de privation en faveur des pauvres&amp;lt;ref name=&amp;quot;P&amp;amp;M P512&amp;quot;&amp;gt;{{Ouvrage|auteur1=Michel Priziac|auteur2=Michel Mohrt|titre=Bretagne des saints et des croyances|éditeur=Kidour|année=2002|passage=512|isbn=}}.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Retour et vie en Bretagne ===&lt;br /&gt;
[[File:Claude Vignon 1635 Saint Yves.jpg|thumb|[[Claude Vignon]] : &#039;&#039;Saint Yves&#039;&#039; (huile sur toile, 1635, évêché de saint-Brieuc).]]&lt;br /&gt;
Ses études achevées trois ans plus tard, il revient en 1280 en [[Bretagne]] à [[Rennes]]&amp;lt;ref name=Casp20&amp;gt;{{Harvsp|Cassard|passage=20}}&amp;lt;/ref&amp;gt;, où il est nommé [[Official (ecclésiastique)|official]] de l&#039;[[archidiacre]]. C&#039;est à Rennes qu&#039;il assiste, en [[1281]]&amp;lt;ref name=Casp20/&amp;gt;, à une lecture des [[Sentences]] chez les [[Ordre des Frères mineurs|Frères mineurs]] qui le marque et qui l&#039;amène plus tard à prendre la décision de prêcher et de ne s&#039;habiller plus que très modestement&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 29|id=Enquête|p=77}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
L&#039;[[liste des évêques de Tréguier|évêque de Tréguier]], [[Alain de Bruc]], remarque ses talents et le presse de revenir à Tréguier. Avec le décès de ses parents, il hérite de la part du patrimoine familial qui lui est due&amp;lt;ref name=Casp45/&amp;gt;. En plus d&#039;inviter volontiers les miséreux à sa table, il recueille également deux orphelins, Derrien Guiomar, [[dominicain]], et Olivier Floc&#039;h&amp;lt;ref name=&amp;quot;P&amp;amp;M P512&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En 1284, Alain de Bruc le nomme [[Official (ecclésiastique)|official]] et l&#039;ordonne prêtre. Il le nomme ensuite recteur de la paroisse de [[Trédrez-Locquémeau|Trédrez]]. Puis en 1292, le nouvel évêque l&#039;envoie dans la paroisse de [[Louannec]]&amp;lt;ref&amp;gt;{{Harvsp|Cassard|passage=22}}&amp;lt;/ref&amp;gt;, proches des terres de son enfance. {{Source insuffisante|En 1293, il fait construire un refuge pour les indigents, Crech-Martin&amp;lt;ref&amp;gt;{{lien web|url=http://www.bretagne-gite.fr/l-histoire-de-crech-martin/|titre=L&#039;Histoire de Crech-Martin ({{s-|XIII}})|site=bretagne-gite.fr|consulté le=13-02-2017}}&amp;lt;/ref&amp;gt;}}.&lt;br /&gt;
&lt;br /&gt;
À cette époque, Yves prêche énormément et est reconnu pour ses talents d&#039;orateur ainsi que pour sa capacité à captiver son auditoire&amp;lt;ref name=Casp38&amp;gt;{{Harvsp|Cassard|passage=38}}&amp;lt;/ref&amp;gt;. Il se déplace beaucoup à pied dans la région de Tréguier, où il est vu plusieurs fois dans la même journée à des lieux différents et de bonne distance, notamment le dimanche où il prêche dans plusieurs églises du diocèse de Tréguier et de [[Saint-Brieuc]]&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 1|id=Enquête|p=30}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Vie d&#039;ascèse ===&lt;br /&gt;
Dans l&#039;enquête de canonisation, plusieurs témoins décrivent la vie de Yves comme une vie d&#039;[[ascèse]]. Au moins lors des dix dernières années de sa vie, il ne porte que des vêtements modestes, composés essentiellement d&#039;une [[Bure (étoffe)|bure]] blanche&amp;lt;ref name=Casp2223&amp;gt;{{Harvsp|Cassard|passage=22-23}}&amp;lt;/ref&amp;gt;. Il porte aussi un [[cilice]] de crin sous ses vêtements et est couvert de [[Pou de corps|poux de corps]], dont il n&#039;essaie pas de se débarrasser&amp;lt;ref name=Casp2223/&amp;gt;. Devenu [[végétarien]] dans sa jeunesse&amp;lt;ref name=Casp2223/&amp;gt;, au cours des dernières années de sa vie il ne mange plus que très peu, se nourrissant exclusivement de pain, de légumes et de [[Fabaceae|légumineuses]], et ne buvant que de l&#039;eau. Selon quelques témoins, il jeûne trois jours par semaine au pain et à l&#039;eau, mais s&#039;autorise à manger deux œufs le jour de [[Pâques]]. Il partage ses biens avec les plus démunis et accueille tous les jours des pauvres à manger chez lui. Il refuse toujours de dormir dans un lit, préférant dormir à même le sol&amp;lt;ref name=Casp2223/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Témoignages et légendes ===&lt;br /&gt;
[[Image: SantIvo.jpg|thumb|200px|left|Saint Yves entre le riche et le pauvre (bois [[polychromie|polychrome]] du {{s|XVI|e}}, [[cathédrale Saint-Corentin de Quimper]])]]&lt;br /&gt;
Dans l&#039;enquête de [[canonisation]], où son attachement aux pauvres et au soulagement de leur misère est considéré de {{citation|notoriété publique}}, un certain nombre de faits sont rapportés sur la manière dont Yves Hélori pouvait se comporter et rendre justice.&lt;br /&gt;
&lt;br /&gt;
Il y est fait mention à plusieurs reprises de moments où Yves cède ses vêtements à des pauvres qu&#039;il rencontre. Un de ces événement pourrait se situer en 1291 et correspondre alors à sa conversion dix ans après avoir entendu la lecture des Sentences de [[Pierre Lombard]] chez les franciscains&amp;lt;ref name=Casp2223/&amp;gt;. À l&#039;Hôtel-Dieu de [[Tréguier]] il se serait défait de plusieurs de ses habits précieux, qu&#039;il aurait ensuite partagés entre plusieurs pauvres, avant de repartir en courant vers Minihy où se trouve son manoir&amp;lt;ref name=Casp2223/&amp;gt;{{,}}&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 45|id=Enquête|p=105}}&amp;lt;/ref&amp;gt;. Un autre témoin fait état d&#039;un fait similaire où Yves cède un de ses habits à un pauvre rencontré dans la rue, dans une maison proche, avant de se hâter vers sa demeure&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 32|id=Enquête|p=83}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Des légendes, qui sont confondues avec des éléments historiques de la vie de Yves, existent aussi. [[Alain Bouchart]] en propose deux se déroulant à [[Tours]] et qui semblent procéder de son imagination ou d&#039;une source inconnue&amp;lt;ref name=&amp;quot;Yves Coativy&amp;quot;/&amp;gt;. Une des légendes qui est fréquemment attribuée à Yves, bien qu&#039;absente du procès en canonisation, a acquis une certaine postérité. Elle est similaire à l&#039;épisode de Seigny Joan et du rôtisseur dans [[Le Tiers Livre]] écrit par [[Rabelais]]&amp;lt;ref&amp;gt;{{Ouvrage|auteur1=Henri Weitzmann|titre=Itinéraire des légendes bretonnes|éditeur=[[Hachette Livre|Hachette]]|année=1954|passage=27}}&amp;lt;/ref&amp;gt;. Appelé à traiter une affaire opposant un aubergiste à un mendiant qui se nourrirait des odeurs de la cuisine du premier, Yves prend quelques pièces dans sa bourse et les jette sur la table devant lui. L&#039;aubergiste tend la main pour les prendre mais saint Yves retient sa main et lui dit que {{citation|le son paye l&#039;odeur, à cet homme l&#039;odeur de ta cuisine, à toi le son de ces pièces}}. Cette légende sert alors à illustrer la façon dont saint Yves pouvait être reconnu par les démunis comme l&#039;avocat qui fait justice sans tenir compte de la condition sociale.&lt;br /&gt;
&lt;br /&gt;
=== Mort ===&lt;br /&gt;
Yves Hélory abandonne sa charge au diocèse en 1298 pour se consacrer entièrement à la contemplation&amp;lt;ref name=&amp;quot;P&amp;amp;M P513&amp;quot;/&amp;gt;. Il meurt le {{date-|19 mai 1303}}, le jour de l&#039;[[Ascension (fête)|ascension]], dans son manoir de Kermartin. Son corps est transporté sur un brancard à la [[cathédrale Saint-Tugdual de Tréguier]], où de nombreuses personnes se déplacent pour s&#039;approcher de sa dépouille et pouvoir la toucher&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 9|id=Enquête|p=48}}&amp;lt;/ref&amp;gt;{{,}}&amp;lt;ref&amp;gt;{{Harvsp|texte=Enquête canonique, témoin 10|id=Enquête|p=49}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Canonisation ==&lt;br /&gt;
Les premières démarches afin d’obtenir la reconnaissance officielle auprès de la papauté sont initiées par le duc de&lt;br /&gt;
Bretagne [[Jean III de Bretagne|Jean III]]. Ce dernier envoie en décembre 1329 son frère Guy de Bretagne, comte de Penthièvre, accompagner l&#039;évêque de Tréguier Yves de Boisboissel afin de supplier le pape Jean XXII de procéder à sa canonisation. Le pape [[Jean XXII]] donne une bulle en date du {{date-|26 février 1330}}, décrétant l&#039;ouverture d&#039;une enquête sur la vie et les miracles d&#039;Yves Hélory, et nomme à cet effet trois commissaires apostoliques chargés de se rendre sur place pour entendre les témoins. Leur audition de 300 témoins débute le {{date-|23 juin 1330}} à Tréguier et s’achève le {{date-|4 août}} suivant. Le {{date-|4 juin 1331}}, les procès-verbaux des enquêtes sont présentés en plein consistoire au pape qui nomme, séance tenante, trois cardinaux chargés d’examiner la cause et de préparer la tenue d’un consistoire au terme duquel il donnera sa décision finale. Par acte du {{date-|19 mai 1347}}, le pape [[Clément VI]], canonise officiellement Yves Hélory en l’inscrivant au catalogue des saints et en fixant au {{date-|19 mai}} le jour de&lt;br /&gt;
la célébration de saint Yves.&lt;br /&gt;
&lt;br /&gt;
== Culte et iconographie ==&lt;br /&gt;
=== Culte ===&lt;br /&gt;
[[Fichier:Chef de Saint Yves.jpg|thumb|200px|Le [[chef (tête d&#039;un mort)|chef]] de saint Yves dans sa [[châsse]]]]&lt;br /&gt;
[[Image: Praalgraf St. Yves.JPG|thumb|150px|Mausolée dans la [[cathédrale Saint-Tugdual de Tréguier]]]]&lt;br /&gt;
Le {{date-|29 mai 1347}}, à la levée du corps du saint, sa tête est placée dans un [[reliquaire]] et le reste des reliques mis dans un sépulcre que [[Jean V de Bretagne]] fait surmonter d&#039;un monument, dans la [[cathédrale Saint-Tugdual de Tréguier]]&amp;lt;ref name=&amp;quot;P&amp;amp;M P513&amp;quot; /&amp;gt;, où le corps d&#039;Yves avait été apporté juste après sa mort.&lt;br /&gt;
&lt;br /&gt;
Son culte est resté particulièrement vivace en Bretagne où les chapelles qui lui sont dédiées ainsi que les statues le représentant sont très fréquentes. Les récits hagiographiques également comme, à titre d&#039;exemple, celui-ci :&lt;br /&gt;
&lt;br /&gt;
{{vers&lt;br /&gt;
|texte =&lt;br /&gt;
Quand les Bretons voyaient passer dans la campagne&lt;br /&gt;
Saint Yves revêtu de son grand manteau blanc&lt;br /&gt;
Ils se disaient que Dieu l&#039;avait mis en Bretagne&lt;br /&gt;
Pour défendre des grands les faibles, les petits.&lt;br /&gt;
À son nom s&#039;éveillaient, sur leurs couches funèbres&lt;br /&gt;
Des enfants dont les mères avaient fermé les yeux&lt;br /&gt;
Les marins l&#039;invoquaient au milieu des ténèbres,&lt;br /&gt;
Et leurs barques passaient les brisants périlleux&lt;br /&gt;
|langue = fr&lt;br /&gt;
|auteur = Joseph Rousse | précision = pour l&#039;inauguration du nouveau tombeau de saint Yves dans la cathédrale de Tréguier.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dans un vieux [[cantique]] populaire, on le fêtait en chantant &#039;&#039;{{langue|la|Sanctus Yvo erat brito; advocatus sed non latro, res mirabilis&amp;lt;ref&amp;gt;[[Dictionnaire illustré latin-français|Dictionnaire Félix Gaffiot]] : &#039;&#039;admirable, merveilleux, étonnant, singulier&#039;&#039;&amp;lt;/ref&amp;gt; (miranda) populo}}&#039;&#039; {{en français|Saint Yves était breton, avocat mais pas voleur, chose admirable pour le peuple !}}.&lt;br /&gt;
&lt;br /&gt;
[[Ernest Renan]] a décrit la dévotion dont saint Yves était l&#039;objet dans sa jeunesse :&lt;br /&gt;
{{Citation bloc|Le mois de mai, où tombait la fête de ce saint excellent, n&#039;était qu&#039;une suite de processions au &#039;&#039;[[minihi]]&#039;&#039; ; les paroisses, précédées de leurs croix processionnelles, se rencontraient sur les chemins ; on faisait alors s&#039;embrasser les croix en signe d&#039;alliance. La veille de la fête, le peuple se réunissait le soir dans l&#039;église, et à minuit, le saint étendit le bras pour bénir l&#039;assistance prosternée. Mais, s&#039;il y avait dans la foule un seul incrédule qui levât les yeux pour voir si le miracle était bien réel, le saint, justement blessé de ce soupçon, ne bougeait pas, et, par la faute du mécréant, personne n&#039;était béni&amp;lt;ref&amp;gt;[[Ernest Renan]], &amp;quot;Souvenirs d&#039;enfance et de jeunesse&amp;quot;, 1883.&amp;lt;/ref&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
Saint Yves est le [[saint]] patron de toutes les professions de justice et de droit, notamment celle des [[avocat (métier)|avocats]]. Chaque {{date-|19 mai}}, à [[Tréguier]], lors de la [[fête de la Saint-Yves]], une délégation de ces professions accompagne le [[Pardon (cérémonie)|pardon]] à saint Yves qui est une des grandes fêtes religieuses bretonnes, au même titre que le pardon de [[Sainte-Anne-d&#039;Auray]].&lt;br /&gt;
&lt;br /&gt;
La veille du Pardon, depuis 1993, le Barreau de Saint-Brieuc organise à Tréguier un Colloque, occasion de rencontre et de réflexion entre juristes sur un sujet d&#039;actualité.&lt;br /&gt;
&lt;br /&gt;
De même, de nombreuses associations de juristes et des facultés de droit ont pour saint patron Yves. Par exemple &#039;&#039;Saint Yves Society&#039;&#039;, ONG basée à Jérusalem, la [[conférence Saint-Yves]], ou encore l&#039;association Saint Yves Lyonnais.&lt;br /&gt;
&lt;br /&gt;
Par la [[communion des saints]], la tradition religieuse permet aux catholiques de solliciter l&#039;intercession de saint Yves afin d&#039;obtenir bonne fin des procédures pour lesquelles ils sont en demande ou en défense sous forme de neuvaine ou de prière quotidienne&amp;lt;ref&amp;gt;{{Lien web |titre=Prière a saint Yves pour ceux qui ont des proces |url=http://www.1000questions.net/fr/Qui-sont/saint_yves_priere.html |site=www.1000questions.net |consulté le=2021-10-21}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Églises dédiées à saint Yves ===&lt;br /&gt;
[[Fichier:Façade de Saint-Yves-des-Bretons.jpg|thumb|150px|[[Église Saint-Yves-des-Bretons|Saint-Yves-des-Bretons]], église nationale des Bretons à [[Rome]]]]&lt;br /&gt;
{{article détaillé|Église Saint-Yves-des-Bretons|Église Sant&#039;Ivo alla Sapienza}}&lt;br /&gt;
Dès la première moitié du {{s-|XV|e}}, Alain de Coetivy obtient du pape [[Nicolas V]] la concession d&#039;une église à Rome, bâtie probablement au {{s-|XII|e}} et placée alors sous le patronage de [[André (apôtre)|saint André]]. Par bulle du {{date-|16 septembre 1455}}, [[Calixte III]], successeur de [[Nicolas V]], ratifie cette décision. Cette vieille église est détruite en 1875 pour cause de vétusté et reconstruite dans le même temps plus petite dans un style néo-renaissance florentine.&lt;br /&gt;
&lt;br /&gt;
Un tympan en terre cuite vernissée surmonte la porte d&#039;entrée principale et représente au centre une [[Vierge à l&#039;Enfant]], à sa droite saint Yves et à sa gauche [[Bernard de Clairvaux|saint Bernard]]. L&#039;ancienne église conservait de nombreuses pierres tombales de bretons décédés à Rome et enterrés dans l&#039;église. Elles ornent aujourd&#039;hui le cloître de [[Église Saint-Louis-des-Français de Rome|Saint-Louis-des-Français]] à Rome&amp;lt;ref&amp;gt;François de LEPINAY, &#039;&#039;Architecture religieuse à Rome à la fin du {{s-|XIX|e}} : la reconstruction de Saint-Yves-des-Bretons&#039;&#039;.&amp;lt;/ref&amp;gt;. La façade a été restaurée pour l&#039;année 2003, année du septième centenaire de la mort du saint. Cette petite [[Église Saint-Yves-des-Bretons|église dite « Saint-Yves-des-Bretons »]] (&#039;&#039;Sant&#039;Ivo dei Bretoni&#039;&#039;), située au {{n°|8}} Vicolo della Campana se visite sur demande auprès du recteur de Saint-Louis-des-Français. Le {{date-|19 mai}}, chaque année, une messe en français y est célébrée en l&#039;honneur de saint Yves.&lt;br /&gt;
&lt;br /&gt;
La seconde église dédiée au saint à Rome s&#039;appelle &#039;&#039;[[Église Sant&#039;Ivo alla Sapienza|Sant&#039;Ivo alla Sapienza]]&#039;&#039;. Église originale en particulier par la tour qui la surmonte représentant la tour de Babel. Elle fut construite entre 1642 et 1660 par [[Francesco Borromini|Borromini]] dans l&#039;enceinte du Palazzo della Sapienza abritant alors le Studio Romano qui devint ensuite l&#039;université de Rome (jusqu&#039;en 1935). À l&#039;intérieur de l&#039;église se trouve un retable représentant saint Yves commencé par [[Pierre de Cortone]] (1596-1669) et achevé par un ou plusieurs de ses élèves.&lt;br /&gt;
&lt;br /&gt;
En France, la [[Ancienne chapelle Saint-Yves (Paris)|Confrérie Saint-Yves]] est fondée à Paris et décide d&#039;élever une [[Chapelle Saint-Yves de Paris|chapelle]] en l&#039;honneur du saint. Un projet approuvé par Foulques de Chanac, évêque de Paris de 1342 à 1349, par lettres du lundi après l&#039;Assomption de 1348&amp;lt;ref&amp;gt;{{lien web|url=http://infobretagne.com/confrerie-saint-yves.htm|titre=Confrérie Saint-Yves à Paris et sa chapelle|site=infobretagne.com|consulté le=31-05-2020}}&amp;lt;/ref&amp;gt;. L&#039;[[Ancienne chapelle Saint-Yves (Paris)|ancienne chapelle Saint-Yves de Paris]] a été détruite en [[1796 en France|1796]].&lt;br /&gt;
&lt;br /&gt;
D&#039;autres églises et chapelles sont dédiées à saint Yves :&lt;br /&gt;
{{article détaillé|Église Saint-Yves}}&lt;br /&gt;
&lt;br /&gt;
=== Iconographie ===&lt;br /&gt;
On le représente généralement avec une bourse dans une main, pour signifier tout l&#039;argent qu&#039;il a donné aux pauvres dans sa vie, et un parchemin dans l&#039;autre, qui rappelle sa charge de [[official (ecclésiastique)|juge ecclésiastique]]. Il est également souvent figuré entre un homme riche et un homme pauvre.&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;160&amp;quot; widths=&amp;quot;160&amp;quot;&amp;gt; &lt;br /&gt;
Fichier:Ploubezre (22) Chapelle de Kerfons Autel et retable de Saint-Yves 02.JPG|[[Ploubezre]] : Chapelle Notre-Dame-de-Kerfons : &#039;&#039;Saint Yves entre le riche et le pauvre&#039;&#039;.&lt;br /&gt;
Fichier:Jacob Jordaens - Saint Yves, patron des avocats.jpg|[[Jacob Jordaens]] : &#039;&#039;Saint Yves, patron des avocats&#039;&#039; (1645, [[musées royaux des Beaux-Arts de Belgique]])&lt;br /&gt;
Fichier:Tríptico de San Ivo, San Clemente y San Antonio de Padua (Salamanca).jpg|Triptyque de saint Yves (église Saint-Clément et Saint-Antoine de [[Padoue]], {{s mini-|XIV}} ou {{s-|XV}})&lt;br /&gt;
Fichier:15 Tréguier Cathédrale groupe statuaire saint Yves entre le riche et le pauvre.JPG|[[Cathédrale Saint-Tugdual de Tréguier]] :&#039;&#039;Saint Yves entre le riche et le pauvre (bois, {{s-|XVII}})&#039;&#039;.&lt;br /&gt;
File:106 Saint Yves entre le riche et le pauvre Chapelle Saint-Mélar de Locmélar Plounéventer.jpg|[[Plounéventer]] : chapelle Saint-Mélar de Locmélar, &#039;&#039;saint Yves entre le riche et le pauvre&#039;&#039; (exposition au [[château de Kerjean]] en 2013).&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Saint-Yves-de-Vérité ===&lt;br /&gt;
{{Article détaillé|Saint-Yves-de-Vérité}}&lt;br /&gt;
[[Saint-Yves-de-Vérité]] était, à l&#039;origine, l&#039;une des appellations officielles données à saint Yves, mais qui, au cours des siècles, a plus particulièrement été attribuée à des statues de ce saint qui étaient invoquées, selon des pratiques superstitieuses, en Bretagne afin de faire mourir d&#039;autres personnes dans l&#039;année.&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;160&amp;quot; widths=&amp;quot;160&amp;quot;&amp;gt;  &lt;br /&gt;
File:491 Saint-Yves-de-Vérité Image de dévotion.jpg|Image de dévotion à [[Saint-Yves-de-Vérité]] (Imagerie bretonne, imprimeur, Dinan, vers 1890).&lt;br /&gt;
File:Trédarzec Saint Yves de Vérité.jpg|L&#039;[[Oratoire (édifice religieux)|oratoire]] de [[Saint-Yves-de-Vérité]] à [[Trédarzec]] en 1879 (dessin de [[Louis-Marie Faudacq]] publié en 1909 dans &amp;quot;Le Fureteur breton&amp;quot;).&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
=== Postérité ===&lt;br /&gt;
À la fin du {{s-|XX|e}}, le mouvement culturel breton lance l&#039;idée d&#039;une fête annuelle des Bretons (à l&#039;instar de la Saint-Patrick pour les Irlandais) et retient le jour de la Saint-Yves comme date fédératrice. Désormais le {{date-|19 mai}} est l&#039;occasion d&#039;un grand pardon à Tréguier, mais aussi dans toute la Bretagne et partout où des Bretons sont installés, sous le nom de &#039;&#039;[[Fête de la Saint-Yves|Gouel Erwan]]&#039;&#039; (&#039;&#039;litt.&#039;&#039;: « fête de Yves »). Le pardon est souvent encadré de festivités profanes qui peuvent durer plus d&#039;une journée. En 2011, la Région Bretagne les reprend officiellement sous le nom de « [[Fête de la Bretagne]] ».&lt;br /&gt;
&lt;br /&gt;
== Notes et références ==&lt;br /&gt;
=== Notes ===&lt;br /&gt;
{{Références|groupe=Note}}&lt;br /&gt;
&lt;br /&gt;
=== Références ===&lt;br /&gt;
{{Références}}&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
{{autres projets|&lt;br /&gt;
commons=Category:Ivo of Kermartin}} &lt;br /&gt;
=== Bibliographie ===&lt;br /&gt;
* [[Michel Carrouges]], &#039;&#039;Saint Yves, avocat des pauvres&#039;&#039;, {{date-|mai 2010}}, 34 pages, [[Éditions du Cerf]], coll. « Albums, fêtes et saisons».&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=[[Jean-Christophe Cassard]] |titre=Saint Yves de Tréguier |sous-titre=un saint du {{s-|XIII}} |lieu=Paris |éditeur=Beauchesne |année=1992 |isbn= |lire en ligne=https://books.google.fr/books?id=oIBsqkM1EbUC |id=Cassard}}.&lt;br /&gt;
* Jean-Christophe Cassard, Jacques Dervilly et Daniel Giraudon, &#039;&#039;Les Chemins de saint Yves&#039;&#039;, Morlaix, {{éd.}} [[Ar Falz|Skol Vreizh]], [[1994]].&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Jean-Christophe Cassard |responsabilité1=dir. |auteur2=Georges Provost |responsabilité2=dir. |titre=Saint Yves et les Bretons |sous-titre=Culte, images, mémoire |lieu=Rennes |éditeur=[[Presses universitaires de Rennes]] |nature ouvrage=actes du colloque organisé à Tréguier du 18 au 20 septembre 2003 |année=2004 |pages totales=368 |isbn= |lire en ligne=http://books.openedition.org/pur/22388?lang=fr |id=StYves&amp;amp;Bretons}}.&lt;br /&gt;
* [[René Couffon]], &#039;&#039;La Confrérie de Saint-Yves à Paris et sa chapelle&#039;&#039;, Saint-Brieuc, Presses bretonnes, 1933.&lt;br /&gt;
* {{Article |auteur1=[[François Falc&#039;hun]] |titre=Les noms bretons de saint Yves|périodique=[[Annales de Bretagne et des pays de l&#039;Ouest]] |tome=50 |numéro=1 |date=1943 |page=177-194 |lire en ligne=https://www.persee.fr/doc/abpo_0003-391x_1943_num_50_1_1820|id=Falc&#039;hun}}&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Pierre France |titre=Saint Yves |sous-titre=Étude sur sa vie et son temps |lieu=Saint-Brieuc |éditeur=impr. René Prud&#039;homme |année=1893 |numéro d&#039;édition=2 |année première édition=1888 |pages totales=556 |lire en ligne=https://fr.wikisource.org/wiki/Saint_Yves/Texte_entier}}.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Muriel Glaunec |responsabilité1=dir. |auteur2=Erwan Le Bozec |responsabilité2=dir. |auteur institutionnel=conseil général des Côtes-d&#039;Armor |titre=D&#039;Yves Hélory à saint Yves |sous-titre=Exposition itinérante |éditeur= |nature ouvrage=catalogue de l&#039;exposition itinérante élaborée à partir de l&#039;exposition présentée au domaine départemental de [[château de la Roche-Jagu|la Roche-Jagu]] du 17 mai au 1 novembre 2003 |année=s. d. |isbn= |lire en ligne=http://docplayer.fr/11618348-D-yves-helory-a-saint-yves.html}}.&lt;br /&gt;
* Pierre de La Haye, &#039;&#039;Saint Yves de Tréguier&#039;&#039;, éditions d’art Jos Le Doaré, 1973.&lt;br /&gt;
* {{Ouvrage|langue=fr|langue originale=la|auteur1=Jean-Paul Le Guillou|titre=Saint Yves de Tréguier|sous-titre=Enquête canonique|lieu=Paris|éditeur=[[Éditions L&#039;Harmattan]]|année=2015|pages totales=263|isbn=978-2-343-06586-1|id=Enquête}}&lt;br /&gt;
* Jean Le Mappian, &#039;&#039;Saint Yves patron des juristes&#039;&#039;, Éditions Ouest-France, 1997.&lt;br /&gt;
* Marie-Thérèse Le Moign-Klipffel, &#039;&#039;Saint Yves&#039;&#039;, Saint-Brieuc, Presses bretonnes, 1939.&lt;br /&gt;
* Benoît Le Roux, &#039;&#039;Saint Yves&#039;&#039;, 158 p., [[Via Romana]], Versailles, 2012 {{ISBN|979-10-90029-20-0}}.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Louis Mahé |préface=François Serrand |illustrateur=Yves Le Meur, Janvier et Joseph Savin |titre=Saint Yves |sous-titre=Son pardon à Tréguier |éditeur=Octave-Louis Aubert |année=1942 |pages totales=68 }}&lt;br /&gt;
* Louis Mahé, &#039;&#039;Monsieur Saint Yves : Sa vie, ses miracles, ses triomphes&#039;&#039;, Saint-Brieuc, René Prud&#039;homme, 1949.&lt;br /&gt;
* [[Alexandre Masseron]], &#039;&#039;Saint Yves&#039;&#039;, Paris, {{éd.}} Henri Laurens.&lt;br /&gt;
* [[Henri Poisson]], &#039;&#039;La Vie de saint Yves&#039;&#039;, Rennes, Éditions Ouest-France, 2003 {{ISBN|2-73733-331-8}}.&lt;br /&gt;
* [[Henri Queffélec]], &#039;&#039;Saint Yves&#039;&#039;, Paris, Ramsay, 1987 (réédition Éditions de la Seine, 1991).&lt;br /&gt;
*Gildas Salaün, &amp;quot;Médailles de Saint-Yves&amp;quot;, &#039;&#039;Annales de la Société Bretonne de Numismatique et d&#039;Histoire&#039;&#039; ([[International Standard Serial Number|ISSN]] [https://catalogue.bnf.fr/ark:/12148/cb34492012z 1250-5781]), 2003, pp.&amp;amp;nbsp;73–75.&lt;br /&gt;
* [[Marie-Paule Salonne]], &#039;&#039;Saint Yves, patron des avocats, avocat des opprimés&#039;&#039;, Éditions franciscaines, Paris, 1945.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=François Semur |titre=Yves de Kermartin, magistrat et avocat du {{s-|XIII|e}} |sous-titre=Nouveaux regards sur la vie et le culte du plus grand saint de Bretagne, patron des hommes de loi et universitaires |lieu=Bannalec |éditeur=éditions Jos Le Doaré |année=1983 |pages totales=86 |isbn=2-904412-01-8}}.&lt;br /&gt;
* {{Ouvrage |langue=fr |auteur1=Anonyme |titre=Dans les pas de Saint-Yves |lieu=Lannon |éditeur=Impram |collection=Le Trégor |année=1989 |pages totales=24 |format livre=plaquette agrafée, in-8°, 21 x 15 cm, phot. noir et blanc dans le texte |isbn=}}.&lt;br /&gt;
* [[Octave-Louis Aubert]], &#039;&#039;Le Pardon de Saint Yves de Tréguier&#039;&#039; (photos de [[Raphaël Binet]]) in La Bretagne Touristique {{n°|62}}, {{date-|mai 1927}}.&lt;br /&gt;
&lt;br /&gt;
==== Bande dessinée ====&lt;br /&gt;
* Gilles Chaillet, Vasco n°20, &#039;&#039;Le Dogue de Brocéliande.&#039;&#039; Publié par Le Lombard en 2003. {{ISBN|2-8036-1902-4}}. 48p.&lt;br /&gt;
*Nicolas de Beauregard, Sareph, &#039;&#039;Danevell-Destins trégorrois.&#039;&#039; Publié par Coop Breizh en 2017. {{ISBN|9782843468421}}.&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
&amp;lt;!-- merci de ne pas ajouter de lien commercial --&amp;gt;&lt;br /&gt;
{{Liens}}&lt;br /&gt;
* {{vidéo}} [https://saintbrieuc-treguier.catholique.fr/kto-saint-yves-patron-bretagne/ Saint Yves, patron de la Bretagne], Église catholique en Côtes-d&#039;Armor &lt;br /&gt;
* {{vidéo}} [https://cpsainttugdual.catholique.fr/-Saint-Yves-2022-.html Messe et pardon de la Saint Yves], paroisse Saint-Tugdual de Tréguier &lt;br /&gt;
* [https://eglisesfrancaisesarome.it/saint-yves-des-bretons/ L&#039;église Saint-Yves-des-Bretons de Rome], Églises françaises à Rome&lt;br /&gt;
&lt;br /&gt;
{{Portail|christianisme|catholicisme|duché de Bretagne|Côtes-d&#039;Armor}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Helori de Kermartin, Yves}}&lt;br /&gt;
[[Catégorie:Saint breton|Yves]]&lt;br /&gt;
[[Catégorie:Saint catholique français|Yves Helory de Kermartin]]&lt;br /&gt;
[[Catégorie:Saint catholique fêté le 19 mai]]&lt;br /&gt;
[[Catégorie:Saint canonisé par Clément VI|Yves Helory de Kermartin]]&lt;br /&gt;
[[Catégorie:Trégor|Yves Helory de Kermartin]]&lt;br /&gt;
[[Catégorie:Personnalité bretonne du XIIIe siècle]]&lt;br /&gt;
[[Catégorie:Personnalité bretonne du XIVe siècle]]&lt;br /&gt;
[[Catégorie:Personnalité liée à Tréguier]]&lt;br /&gt;
[[Catégorie:Tertiaire franciscain]]&lt;br /&gt;
[[Catégorie:Étudiant de l&#039;ancienne université d&#039;Orléans]]&lt;br /&gt;
[[Catégorie:Naissance en 1253]]&lt;br /&gt;
[[Catégorie:Naissance dans le duché de Bretagne]]&lt;br /&gt;
[[Catégorie:Décès en 1303]]&lt;br /&gt;
[[Catégorie:Décès dans le duché de Bretagne]]&lt;br /&gt;
[[Catégorie:Prêtre catholique breton]]&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mus%C3%A9e_Maritime_de_Brest&amp;diff=362</id>
		<title>Musée Maritime de Brest</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mus%C3%A9e_Maritime_de_Brest&amp;diff=362"/>
		<updated>2024-09-20T14:44:38Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Musée&lt;br /&gt;
| label      = Musée de France&lt;br /&gt;
| protection = Classé MH|1923&lt;br /&gt;
| logo       = MNM LOGO MUSEE NATIONAL DE LA MARINE ANIME.GIF&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;musée national de la Marine de Brest&#039;&#039;&#039; est un musée maritime situé dans le château de Brest.&lt;br /&gt;
&lt;br /&gt;
Il abrite un patrimoine témoignant de l&#039;histoire de l&#039;arsenal de Brest et de la Marine française.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Ce musée est l&#039;une des cinq antennes du musée national de la Marine&amp;lt;ref&amp;gt;{{Lien brisé |url= http://www.musee-marine.fr/site/fr/actualites_brest |titre=musee-marine.fr/site/fr/actual… |brisé le=20-05-2023}}.&amp;lt;/ref&amp;gt; avec Paris, Port-Louis, Rochefort (Ancienne école de médecine navale et Hôtel de Cheusses) et Toulon. &lt;br /&gt;
&lt;br /&gt;
La visite de ce musée maritime associe intérieur et extérieur et permet de découvrir ses collections maritimes : modèles de navires, instruments de navigation, peintures, sculptures {{incise|figures de proue et de poupe, bustes de figures légendaires liées au monde maritime}} et objets d&#039;art.&lt;br /&gt;
&lt;br /&gt;
Il organise des visites thématiques sur l&#039;architecture du château, la construction navale, la décoration navale, la vie à bord, l&#039;arsenal, et l&#039;expédition de Lapérouse.&lt;br /&gt;
&lt;br /&gt;
== Fréquentation ==&lt;br /&gt;
&lt;br /&gt;
{{Graph production| propriété = P1174}}&lt;br /&gt;
&lt;br /&gt;
== Collections ==&lt;br /&gt;
&lt;br /&gt;
=== Sculpture ===&lt;br /&gt;
&amp;lt;!-- Liste alphabétique non exhaustive --&amp;gt;&lt;br /&gt;
* Yves Collet ;&lt;br /&gt;
** &#039;&#039;Amphitrite&#039;&#039;, statue en bois ;&lt;br /&gt;
** &#039;&#039;Minerve&#039;&#039;, statue en bois ;&lt;br /&gt;
** &#039;&#039;Neptune&#039;&#039;, groupe en bois ;&lt;br /&gt;
** &#039;&#039;Buste du Louis Victor de Rochechouart de Mortemart, duc de Vivonne&#039;&#039;, bois ;&lt;br /&gt;
** &#039;&#039;Buste de Blaise-Joseph Ollivier&#039;&#039;, bois ;&lt;br /&gt;
** &#039;&#039;Buste du Louis-Alexandre de Bourbon, comte de Toulouse&#039;&#039;, bois ;&lt;br /&gt;
** &#039;&#039;Buste du Alain Emmanuel de Coëtlogon, marquis de Coëtlogon&#039;&#039;, bois ;&lt;br /&gt;
* Georges Guiraud, &#039;&#039;Buste de Hervé de Portzmoguer, Portzmoguer&#039;&#039;, marbre&amp;lt;ref&amp;gt;[http://www.musee-marine.fr/sites/default/files/Portzmoguer.pdf musee-marine.fr].&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* François Rude, &#039;&#039;Buste de Jean-François de La Pérouse, La Pérouse&#039;&#039;, plâtre&amp;lt;ref&amp;gt;[https://mnm.webmuseo.com/ws/musee-national-marine/app/collection/record/35000 « Buste de Lapérouse »], notice sur &#039;&#039;webmuseo.com&#039;&#039;.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Peinture ===&lt;br /&gt;
&amp;lt;!-- Liste alphabétique non exhaustive --&amp;gt;&lt;br /&gt;
* Marie Détrée-Hourrière{{refnec}}&lt;br /&gt;
{{saut|20px}}  &lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:French Navy pistol mg 8055.jpg|Pistolet de marine (1837).&lt;br /&gt;
Fichier:Корабельная пушка в Musée national de la Marine de Brest.jpg|Canon de navire.&lt;br /&gt;
Fichier:80-gun ship hull-First Empire mg 8020.jpg|Maquette d&#039;un vaisseau du Premier Empire, de la &#039;&#039;classe du Tonnant&#039;&#039;.&lt;br /&gt;
Fichier:Vauquelin command panel mg 8156.jpg|Le tableau de commande de la machine du &#039;&#039;Vauquelin&#039;&#039;.&lt;br /&gt;
Fichier:Submarine S622.jpg|Sous-marin de poche de la classe Seehund, le S622.&lt;br /&gt;
Fichier:Лаперуз в Musée national de la Marine de Brest.jpg|François Rude, &#039;&#039;Buste de Jean-François de La Pérouse, La Pérouse&#039;&#039;.&lt;br /&gt;
Fichier:Duke of Vivonne mg 8134.jpg|Yves Collet, &#039;&#039;Buste du Louis Victor de Rochechouart de Mortemart, duc de Vivonne&#039;&#039;.&lt;br /&gt;
Fichier:Amphitrite Collet2.jpg|Yves Collet, &#039;&#039;Amphitrite&#039;&#039;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes et références ==&lt;br /&gt;
{{Références}}&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
{{Autres projets&lt;br /&gt;
|commons=category:Musée de la Marine de Brest&lt;br /&gt;
}}&lt;br /&gt;
=== Bibliographie ===&lt;br /&gt;
* {{Article |langue= |auteur1=Gilles Besson |titre=Le musée nationale de la Marine à Brest |périodique=Neptunia |numéro=234 |date=2004 |issn= |lire en ligne= |pages= }}.&lt;br /&gt;
* {{Article |langue= |auteur1=Jean Boudriot |auteur2=Alain Niderlinder |titre=Modèles disparus du musée de Brest |périodique=Neptunia |numéro=226 |date=2002 |issn= |lire en ligne= |pages= }}.&lt;br /&gt;
* {{Ouvrage|langue=|auteur1=Alain Boulaire|titre=Le Château de Brest et le Musée National de la Marine|passage=|lieu=|éditeur=Ouest-France, Association des Amis des Musées de la Marine|date=1999|pages totales=32|isbn=|lire en ligne=}}.&lt;br /&gt;
* {{Ouvrage|langue=|auteur1=Bruno Ponsonnet|directeur1=Bruno Ponsonnet|titre=Le château de Brest|passage=|lieu=Paris|éditeur=Musée national de la Marine|date=2007|pages totales=49|isbn=|lire en ligne=}}.&lt;br /&gt;
* Jean-Yves Besselièvre. &#039;&#039;Château de Brest&#039;&#039;. Paris, Musée national de la Marine, 2023, 72 p. &lt;br /&gt;
&lt;br /&gt;
=== Article connexe ===&lt;br /&gt;
* Musée national de la Marine&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* {{autorité}}&lt;br /&gt;
* {{dictionnaires}}&lt;br /&gt;
* {{site officiel}}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mus%C3%A9e_Maritime_de_Brest&amp;diff=361</id>
		<title>Musée Maritime de Brest</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mus%C3%A9e_Maritime_de_Brest&amp;diff=361"/>
		<updated>2024-09-20T14:38:27Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Musée&lt;br /&gt;
| label      = {{Musée de France}}&lt;br /&gt;
| protection = {{Classé MH|1923}}&lt;br /&gt;
| logo       = MNM LOGO MUSEE NATIONAL DE LA MARINE ANIME.GIF&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;musée national de la Marine de Brest&#039;&#039;&#039; est un [[musée maritime]] situé dans le [[château de Brest]].&lt;br /&gt;
&lt;br /&gt;
Il abrite un patrimoine témoignant de l&#039;histoire de l&#039;[[arsenal de Brest]] et de la [[Marine française]].&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Ce musée est l&#039;une des cinq antennes du [[musée national de la Marine]]&amp;lt;ref&amp;gt;{{Lien brisé |url= http://www.musee-marine.fr/site/fr/actualites_brest |titre=musee-marine.fr/site/fr/actual… |brisé le=20-05-2023}}.&amp;lt;/ref&amp;gt; avec [[Musée national de la Marine|Paris]], [[Musée national de la Marine (Port-Louis)|Port-Louis]], [[Musée national de la Marine de Rochefort|Rochefort]] (Ancienne école de médecine navale et Hôtel de Cheusses) et [[Musée national de la Marine de Toulon|Toulon]]. &lt;br /&gt;
&lt;br /&gt;
La visite de ce [[musée maritime]] associe intérieur et extérieur et permet de découvrir ses collections maritimes : modèles de navires, instruments de navigation, peintures, sculptures {{incise|figures de proue et de poupe, bustes de figures légendaires liées au monde maritime}} et objets d&#039;art.&lt;br /&gt;
&lt;br /&gt;
Il organise des visites thématiques sur l&#039;architecture du château, la construction navale, la décoration navale, la vie à bord, l&#039;arsenal, et l&#039;[[expédition de Lapérouse]].&lt;br /&gt;
&lt;br /&gt;
== Fréquentation ==&lt;br /&gt;
&lt;br /&gt;
{{Graph production| propriété = P1174}}&lt;br /&gt;
&lt;br /&gt;
== Collections ==&lt;br /&gt;
&lt;br /&gt;
=== Sculpture ===&lt;br /&gt;
&amp;lt;!-- Liste alphabétique non exhaustive --&amp;gt;&lt;br /&gt;
* [[Yves Collet]] ;&lt;br /&gt;
** &#039;&#039;[[Amphitrite]]&#039;&#039;, statue en bois ;&lt;br /&gt;
** &#039;&#039;Minerve&#039;&#039;, statue en bois ;&lt;br /&gt;
** &#039;&#039;Neptune&#039;&#039;, groupe en bois ;&lt;br /&gt;
** &#039;&#039;Buste du [[Louis Victor de Rochechouart de Mortemart|duc de Vivonne]]&#039;&#039;, bois ;&lt;br /&gt;
** &#039;&#039;Buste de [[Blaise-Joseph Ollivier]]&#039;&#039;, bois ;&lt;br /&gt;
** &#039;&#039;Buste du [[Louis-Alexandre de Bourbon|comte de Toulouse]]&#039;&#039;, bois ;&lt;br /&gt;
** &#039;&#039;Buste du [[Alain Emmanuel de Coëtlogon|marquis de Coëtlogon]]&#039;&#039;, bois ;&lt;br /&gt;
* [[Georges Guiraud (graveur)|Georges Guiraud]], &#039;&#039;Buste de [[Hervé de Portzmoguer|Portzmoguer]]&#039;&#039;, marbre&amp;lt;ref&amp;gt;[http://www.musee-marine.fr/sites/default/files/Portzmoguer.pdf musee-marine.fr].&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [[François Rude]], &#039;&#039;Buste de [[Jean-François de La Pérouse|La Pérouse]]&#039;&#039;, plâtre&amp;lt;ref&amp;gt;[https://mnm.webmuseo.com/ws/musee-national-marine/app/collection/record/35000 « Buste de Lapérouse »], notice sur &#039;&#039;webmuseo.com&#039;&#039;.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Peinture ===&lt;br /&gt;
&amp;lt;!-- Liste alphabétique non exhaustive --&amp;gt;&lt;br /&gt;
* [[Marie Détrée-Hourrière]]{{refnec}}&lt;br /&gt;
{{saut|20px}}  &lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:French Navy pistol mg 8055.jpg|Pistolet de marine (1837).&lt;br /&gt;
Fichier:Корабельная пушка в Musée national de la Marine de Brest.jpg|Canon de navire.&lt;br /&gt;
Fichier:80-gun ship hull-First Empire mg 8020.jpg|Maquette d&#039;un vaisseau du Premier Empire, de la &#039;&#039;[[Classe Tonnant|classe du Tonnant]]&#039;&#039;.&lt;br /&gt;
Fichier:Vauquelin command panel mg 8156.jpg|Le tableau de commande de la machine du &#039;&#039;[[Vauquelin (contre-torpilleur)|Vauquelin]]&#039;&#039;.&lt;br /&gt;
Fichier:Submarine S622.jpg|[[Sous-marin de poche]] de la classe Seehund, le S622.&lt;br /&gt;
Fichier:Лаперуз в Musée national de la Marine de Brest.jpg|[[François Rude]], &#039;&#039;Buste de [[Jean-François de La Pérouse|La Pérouse]]&#039;&#039;.&lt;br /&gt;
Fichier:Duke of Vivonne mg 8134.jpg|[[Yves Collet]], &#039;&#039;Buste du [[Louis Victor de Rochechouart de Mortemart|duc de Vivonne]]&#039;&#039;.&lt;br /&gt;
Fichier:Amphitrite Collet2.jpg|[[Yves Collet]], &#039;&#039;[[Amphitrite]]&#039;&#039;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes et références ==&lt;br /&gt;
{{Références}}&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
{{Autres projets&lt;br /&gt;
|commons=category:Musée de la Marine de Brest&lt;br /&gt;
}}&lt;br /&gt;
=== Bibliographie ===&lt;br /&gt;
* {{Article |langue= |auteur1=Gilles Besson |titre=Le musée nationale de la Marine à Brest |périodique=Neptunia |numéro=234 |date=2004 |issn= |lire en ligne= |pages= }}.&lt;br /&gt;
* {{Article |langue= |auteur1=Jean Boudriot |auteur2=Alain Niderlinder |titre=Modèles disparus du musée de Brest |périodique=Neptunia |numéro=226 |date=2002 |issn= |lire en ligne= |pages= }}.&lt;br /&gt;
* {{Ouvrage|langue=|auteur1=Alain Boulaire|titre=Le Château de Brest et le Musée National de la Marine|passage=|lieu=|éditeur=Ouest-France, Association des Amis des Musées de la Marine|date=1999|pages totales=32|isbn=|lire en ligne=}}.&lt;br /&gt;
* {{Ouvrage|langue=|auteur1=Bruno Ponsonnet|directeur1=Bruno Ponsonnet|titre=Le château de Brest|passage=|lieu=Paris|éditeur=Musée national de la Marine|date=2007|pages totales=49|isbn=|lire en ligne=}}.&lt;br /&gt;
* Jean-Yves Besselièvre. &#039;&#039;Château de Brest&#039;&#039;. Paris, Musée national de la Marine, 2023, 72 p. &lt;br /&gt;
&lt;br /&gt;
=== Article connexe ===&lt;br /&gt;
* [[Musée national de la Marine]]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* {{autorité}}&lt;br /&gt;
* {{dictionnaires}}&lt;br /&gt;
* {{site officiel}}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Bases/audiovisuel&amp;diff=360</id>
		<title>Module:Bases/audiovisuel</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Bases/audiovisuel&amp;diff=360"/>
		<updated>2024-09-20T14:35:07Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « return { -- { {nom, langue du nom}, propriété Wikidata, format URL} {&amp;quot;Africultures&amp;quot;, &amp;quot;P4513&amp;quot;, &amp;quot;http://africultures.com/films/?no=$1&amp;quot;}, {&amp;quot;Africultures&amp;quot;, &amp;quot;P4514&amp;quot;, &amp;quot;http://africultures.com/personnes/?no=$1&amp;quot;}, {{&amp;quot;AllMovie&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1562&amp;quot;, &amp;quot;https://www.allmovie.com/movie/$1&amp;quot;}, {{&amp;quot;AllMovie&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2019&amp;quot;, &amp;quot;https://www.allmovie.com/artist/$1&amp;quot;}, {&amp;quot;Allociné&amp;quot;, &amp;quot;P1265&amp;quot;, &amp;quot;https://www.allocine.fr/film/fichefilm_gen_cfilm=$1.html&amp;quot;}, {&amp;quot;Allociné&amp;quot;, &amp;quot;P1266&amp;quot;, &amp;quot;https://www.al... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
-- { {nom, langue du nom}, propriété Wikidata, format URL}&lt;br /&gt;
{&amp;quot;Africultures&amp;quot;, &amp;quot;P4513&amp;quot;, &amp;quot;http://africultures.com/films/?no=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Africultures&amp;quot;, &amp;quot;P4514&amp;quot;, &amp;quot;http://africultures.com/personnes/?no=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;AllMovie&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1562&amp;quot;, &amp;quot;https://www.allmovie.com/movie/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;AllMovie&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2019&amp;quot;, &amp;quot;https://www.allmovie.com/artist/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Allociné&amp;quot;, &amp;quot;P1265&amp;quot;, &amp;quot;https://www.allocine.fr/film/fichefilm_gen_cfilm=$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;Allociné&amp;quot;, &amp;quot;P1266&amp;quot;, &amp;quot;https://www.allocine.fr/personne/fichepersonne_gen_cpersonne=$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;Allociné&amp;quot;, &amp;quot;P1267&amp;quot;, &amp;quot;https://www.allocine.fr/series/ficheserie_gen_cserie=$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;Allociné&amp;quot;, &amp;quot;P4910&amp;quot;, &amp;quot;https://www.allocine.fr/societe/fichesociete-$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;American Film Institute&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3593&amp;quot;, &amp;quot;https://catalog.afi.com/Catalog/moviedetails/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;American Film Institute&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5340&amp;quot;, &amp;quot;http://catalog.afi.com/Catalog/PersonDetails/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Anime News Network&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1982&amp;quot;, &amp;quot;https://www.animenewsnetwork.com/encyclopedia/people.php?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Anime News Network&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1983&amp;quot;, &amp;quot;https://www.animenewsnetwork.com/encyclopedia/company.php?id=$1&amp;quot;},&lt;br /&gt;
-- {{&amp;quot;Anime News Network&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1985&amp;quot;, &amp;quot;https://www.animenewsnetwork.com/encyclopedia/anime.php?id=$1&amp;quot;} -- pose problème, voir https://w.wiki/5SuE&lt;br /&gt;
{{&amp;quot;BFI National Archive&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2703&amp;quot;, &amp;quot;http://collections-search.bfi.org.uk/web/Details/ChoiceFilmWorks/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;British Film Institute&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4438&amp;quot;, &amp;quot;https://web.archive.org/web/0/https://www.bfi.org.uk/films-tv-people/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Centre national du cinéma et de l&#039;image animée&amp;quot;, &amp;quot;P2755&amp;quot;, &amp;quot;https://www.cnc.fr/professionnels/visas-et-classification/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;César du cinéma&amp;quot;, &amp;quot;P5318&amp;quot;, &amp;quot;https://www.academie-cinema.org/films/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;César du cinéma&amp;quot;, &amp;quot;P5319&amp;quot;, &amp;quot;https://www.academie-cinema.org/personnes/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Cinematografo.it&amp;quot;, &amp;quot;it&amp;quot;}, &amp;quot;P4786&amp;quot;, &amp;quot;https://www.cinematografo.it/pls/cinematografo/consultazione.redirect?sch=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Ciné-Ressources&amp;quot;, &amp;quot;P3203&amp;quot;, &amp;quot;http://cinema.encyclopedie.films.bifi.fr/index.php?pk=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Ciné-Ressources&amp;quot;, &amp;quot;P3204&amp;quot;, &amp;quot;http://www.cineressources.net/recherche_t_r.php?type=PNP&amp;amp;pk=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Cinémathèque québécoise&amp;quot;, &amp;quot;P4276&amp;quot;, &amp;quot;http://collections.cinematheque.qc.ca/recherche/oeuvres/fiche/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Disney A to Z&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6181&amp;quot;, &amp;quot;https://d23.com/a-to-z/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Filmportal&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P2639&amp;quot;, &amp;quot;https://www.filmportal.de/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Film-documentaire.fr&amp;quot;, &amp;quot;P3673&amp;quot;, &amp;quot;http://www.film-documentaire.fr/4DACTION/w_fiche_film/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Film-documentaire.fr&amp;quot;, &amp;quot;P6603&amp;quot;, &amp;quot;http://www.film-documentaire.fr/4DACTION/w_auteur_liste/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Filmweb.pl&amp;quot;, &amp;quot;pl&amp;quot;}, &amp;quot;P5032&amp;quot;, &amp;quot;https://www.filmweb.pl/film?Id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Filmweb.pl&amp;quot;, &amp;quot;pl&amp;quot;}, &amp;quot;P5033&amp;quot;, &amp;quot;https://www.filmweb.pl/person?Id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;IMDb&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P345&amp;quot;, &amp;quot;https://wikidata-externalid-url.toolforge.org/?p=345&amp;amp;url_prefix=https://www.imdb.com/&amp;amp;id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Korean Movie Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1649&amp;quot;, &amp;quot;https://www.kmdb.or.kr/eng/db/per/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Japanese Movie Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2400&amp;quot;, &amp;quot;http://www.jmdb.ne.jp/$1.htm&amp;quot;},&lt;br /&gt;
{&amp;quot;LUMIERE&amp;quot;, &amp;quot;P4282&amp;quot;, &amp;quot;https://lumiere.obs.coe.int/movie/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;LUMIERE&amp;quot;, &amp;quot;P4283&amp;quot;, &amp;quot;http://lumiere.obs.coe.int/web/director_info/?lum_id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Movie Review Query Engine&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8033&amp;quot;, &amp;quot;https://www.mrqe.com/movie_reviews/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;NZ On Screen&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6548&amp;quot;, &amp;quot;https://www.nzonscreen.com/person/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;NZ On Screen&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6549&amp;quot;, &amp;quot;https://www.nzonscreen.com/title/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;OFDb&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P3138&amp;quot;, &amp;quot;https://ssl.ofdb.de/film/$1,&amp;quot;},&lt;br /&gt;
{&amp;quot;Office national du film du Canada&amp;quot;, &amp;quot;P4606&amp;quot;, &amp;quot;https://www.onf.ca/film/$1&amp;quot;}, -- Il faudrait que quelqu&#039;un arrive à faire en sorte que les entrées avec les qualificatifs P407 (langue de l’œuvre) Q150 (français) soient priorisées&lt;br /&gt;
{&amp;quot;Office national du film du Canada&amp;quot;, &amp;quot;P6891&amp;quot;, &amp;quot;https://www.onf.ca/cineastes/$1/?language=fr&amp;quot;},&lt;br /&gt;
{&amp;quot;Oscars du cinéma&amp;quot;, &amp;quot;P7118&amp;quot;, &amp;quot;https://collections.new.oscars.org/Details/Film/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Oscars du cinéma&amp;quot;, &amp;quot;P7119&amp;quot;, &amp;quot;https://collections.new.oscars.org/Details/People/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Rotten Tomatoes&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1258&amp;quot;, &amp;quot;https://www.rottentomatoes.com/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;SourehCinema&amp;quot;, &amp;quot;fa&amp;quot;}, &amp;quot;P3139&amp;quot;, &amp;quot;http://www.sourehcinema.com/Title/Title.aspx?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Swiss Films&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6474&amp;quot;, &amp;quot;https://www.swissfilms.ch/fr/film_search/filmdetails/-/id_film/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;The Movie Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4947&amp;quot;, &amp;quot;https://www.themoviedb.org/movie/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Unifrance&amp;quot;, &amp;quot;P3961&amp;quot;, &amp;quot;https://www.unifrance.org/film/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Unifrance&amp;quot;, &amp;quot;P3979&amp;quot;, &amp;quot;https://www.unifrance.org/annuaires/societe/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Unifrance&amp;quot;, &amp;quot;P3980&amp;quot;, &amp;quot;https://www.unifrance.org/annuaires/personne/$1&amp;quot;}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Bases/astronomie&amp;diff=359</id>
		<title>Module:Bases/astronomie</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Bases/astronomie&amp;diff=359"/>
		<updated>2024-09-20T14:33:04Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « return { -- { {nom, langue du nom}, propriété Wikidata, format URL} {{&amp;quot;Biographical Encyclopedia of Astronomers&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P9626&amp;quot;, &amp;quot;https://doi.org/10.1007/978-0-387-30400-7_$1&amp;quot;}, {{&amp;quot;Catalogue of Principal Galaxies&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4095&amp;quot;, &amp;quot;https://ned.ipac.caltech.edu/cgi-bin/objsearch?objname=PGC+$1&amp;quot;}, {&amp;quot;Centre des planètes mineures&amp;quot;, &amp;quot;P717&amp;quot;, &amp;quot;https://newton.spacedys.com/neodys/index.php?pc=2.1.0&amp;amp;o=$1&amp;quot;}, {&amp;quot;Centre des planètes mineures&amp;quot;, &amp;quot;P5736&amp;quot;, &amp;quot;https://www.minorp... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
-- { {nom, langue du nom}, propriété Wikidata, format URL}&lt;br /&gt;
{{&amp;quot;Biographical Encyclopedia of Astronomers&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P9626&amp;quot;, &amp;quot;https://doi.org/10.1007/978-0-387-30400-7_$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Catalogue of Principal Galaxies&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4095&amp;quot;, &amp;quot;https://ned.ipac.caltech.edu/cgi-bin/objsearch?objname=PGC+$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Centre des planètes mineures&amp;quot;, &amp;quot;P717&amp;quot;, &amp;quot;https://newton.spacedys.com/neodys/index.php?pc=2.1.0&amp;amp;o=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Centre des planètes mineures&amp;quot;, &amp;quot;P5736&amp;quot;, &amp;quot;https://www.minorplanetcenter.net/db_search/show_object?object_id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Database of Asteroid Models from Inversion Techniques&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4384&amp;quot;, &amp;quot;http://astro.troja.mff.cuni.cz/projects/asteroids3D/web.php?page=db_asteroid_detail&amp;amp;asteroid_id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Encyclopédie des planètes extrasolaires&amp;quot;, &amp;quot;P5653&amp;quot;, &amp;quot;http://exoplanet.eu/catalog/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Exoplanet Data Explorer&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5650&amp;quot;, &amp;quot;http://exoplanets.org/detail/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Gazetteer of Planetary Nomenclature&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2824&amp;quot;, &amp;quot;http://planetarynames.wr.usgs.gov/Feature/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;JPL Small-Body Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P716&amp;quot;, &amp;quot;https://ssd.jpl.nasa.gov/sbdb.cgi?sstr=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Meteoritical Bulletin Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P824&amp;quot;, &amp;quot;https://www.lpi.usra.edu/meteor/metbull.php?code=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;NASA Exoplanet Archive&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5667&amp;quot;, &amp;quot;https://exoplanetarchive.ipac.caltech.edu/cgi-bin/DisplayOverview/nph-DisplayOverview?objname=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Space Science Data Center&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P247&amp;quot;, &amp;quot;https://nssdc.gsfc.nasa.gov/nmc/spacecraft/display.action?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;New General Catalogue&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3208&amp;quot;, &amp;quot;http://spider.seds.org/ngc/ngc.cgi?$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Open Exoplanet Catalogue&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5738&amp;quot;, &amp;quot;http://www.openexoplanetcatalogue.com/planet/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Satellite Catalog Number&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P377&amp;quot;, &amp;quot;https://www.n2yo.com/satellite/?s=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Simbad&amp;quot;, &amp;quot;P3083&amp;quot;, &amp;quot;https://simbad.u-strasbg.fr/simbad/sim-id?Ident=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Uppsala General Catalogue&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6340&amp;quot;, &amp;quot;https://ned.ipac.caltech.edu/cgi-bin/nph-objsearch?extend=yes&amp;amp;objname=UGC+$1&amp;quot;},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Bases/art&amp;diff=358</id>
		<title>Module:Bases/art</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Bases/art&amp;diff=358"/>
		<updated>2024-09-20T14:32:19Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « return { -- { {nom, langue du nom}, propriété Wikidata, format URL} {&amp;quot;Musée des Beaux-Arts de Bordeaux&amp;quot;, &amp;quot;P12065&amp;quot;, &amp;quot;https://musba-bordeaux.opacweb.fr/r/$1&amp;quot;}, {&amp;quot;À nos grands hommes&amp;quot;, &amp;quot;P6141&amp;quot;, &amp;quot;https://anosgrandshommes.musee-orsay.fr/index.php/Detail/objects/$1&amp;quot;}, {&amp;quot;Académie des arts de Berlin&amp;quot;, &amp;quot;P4114&amp;quot;, &amp;quot;https://www.adk.de/de/akademie/mitglieder/?we_objectID=$1&amp;quot;}, {&amp;quot;Académie des beaux-arts&amp;quot;, &amp;quot;P5363&amp;quot;, &amp;quot;https://www.academiedesbeauxarts.fr/$1&amp;quot;}, {&amp;quot;L&amp;#039;Agence Phot... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
-- { {nom, langue du nom}, propriété Wikidata, format URL}&lt;br /&gt;
{&amp;quot;Musée des Beaux-Arts de Bordeaux&amp;quot;, &amp;quot;P12065&amp;quot;, &amp;quot;https://musba-bordeaux.opacweb.fr/r/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;À nos grands hommes&amp;quot;, &amp;quot;P6141&amp;quot;, &amp;quot;https://anosgrandshommes.musee-orsay.fr/index.php/Detail/objects/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Académie des arts de Berlin&amp;quot;, &amp;quot;P4114&amp;quot;, &amp;quot;https://www.adk.de/de/akademie/mitglieder/?we_objectID=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Académie des beaux-arts&amp;quot;, &amp;quot;P5363&amp;quot;, &amp;quot;https://www.academiedesbeauxarts.fr/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;L&#039;Agence Photo RMN Grand Palais&amp;quot;, &amp;quot;P6334&amp;quot;, &amp;quot;https://www.photo.rmn.fr/Package/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;AGORHA&amp;quot;, &amp;quot;P2342&amp;quot;, &amp;quot;https://agorha.inha.fr/inhaprod/ark:/54721/002$1&amp;quot;},&lt;br /&gt;
{&amp;quot;AGORHA&amp;quot;, &amp;quot;P2344&amp;quot;, &amp;quot;https://agorha.inha.fr/ark:/54721/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;AGORHA&amp;quot;, &amp;quot;P2345&amp;quot;, &amp;quot;http://www.purl.org/inha/agorha/004/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;American Art Collaborative&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4692&amp;quot;, &amp;quot;http://browse.americanartcollaborative.org/object/$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;Arcade&amp;quot;, &amp;quot;P4764&amp;quot;, &amp;quot;http://www.culture.gouv.fr/public/mistral/arcade_fr?ACTION=CHERCHER&amp;amp;FIELD_1=REF&amp;amp;VALUE_1=$1&amp;quot;},&lt;br /&gt;
-- {{&amp;quot;The Armory Show at 100&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6301&amp;quot;, &amp;quot;http://armory.nyhistory.org/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art Institute of Chicago&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4610&amp;quot;, &amp;quot;https://www.artic.edu/artworks/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art Institute of Chicago&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6294&amp;quot;, &amp;quot;https://www.artic.edu/exhibitions/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art Institute of Chicago&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6295&amp;quot;, &amp;quot;https://www.artic.edu/artists/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art in the Christian Tradition&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P9092&amp;quot;, &amp;quot;https://diglib.library.vanderbilt.edu/act-imagelink.pl?RC=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art UK&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1367&amp;quot;, &amp;quot;https://artuk.org/discover/artworks/search/actor:$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art UK &amp;lt;small&amp;gt;(lieux d&#039;art)&amp;lt;/small&amp;gt;&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1602&amp;quot;, &amp;quot;https://artuk.org/visit/venues/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art UK&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1679&amp;quot;, &amp;quot;https://artuk.org/discover/artworks/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Art UK &amp;lt;small&amp;gt;(collections)&amp;lt;/small&amp;gt;&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1751&amp;quot;, &amp;quot;https://artuk.org/visit/collection/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Artist-info&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5507&amp;quot;, &amp;quot;https://www.artist-info.com/exhibition/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Artists of the World Online&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4432&amp;quot;, &amp;quot;https://www.degruyter.com/view/AKL/_$1&amp;quot;},&lt;br /&gt;
-- {&amp;quot;Atlas&amp;quot;, &amp;quot;P1212&amp;quot;, &amp;quot;http://cartelfr.louvre.fr/cartelfr/visite?srv=car_not_frame&amp;amp;idNotice=$1&amp;quot;}, -- remplacé par P9394&lt;br /&gt;
{{&amp;quot;Auckland Art Gallery&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3372&amp;quot;, &amp;quot;https://www.aucklandartgallery.com/explore-art-and-ideas/artist/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Belgian Art Links &amp;amp; Tools&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1901&amp;quot;, &amp;quot;http://balat.kikirpa.be/people.php?priref=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Belgian Art Links &amp;amp; Tools&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3293&amp;quot;, &amp;quot;http://balat.kikirpa.be/object/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Bénézit&#039;&#039;&amp;quot;, &amp;quot;P2843&amp;quot;, &amp;quot;https://doi.org/10.1093/benz/9780199773787.article.$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Bildindex&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2092&amp;quot;, &amp;quot;https://www.bildindex.de/document/obj$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Biographisches Lexikon der Münzmeister, Wardeine, Stempelschneider und Medailleure&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P6240&amp;quot;, &amp;quot;https://mmlo.de/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;bpk-Bildagentur&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5891&amp;quot;, &amp;quot;https://www.bpk-bildagentur.de/id/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Brasiliana Iconográfica&amp;quot;, &amp;quot;pt&amp;quot;}, &amp;quot;P6004&amp;quot;, &amp;quot;https://www.brasilianaiconografica.art.br/obras/$1/wd&amp;quot;},&lt;br /&gt;
{{&amp;quot;Bridgeman Art Library&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3965&amp;quot;, &amp;quot;https://www.bridgemanimages.fr/fr/search?filter_text=creatorid:$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;British Council&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2399&amp;quot;, &amp;quot;http://visualarts.britishcouncil.org/collection/artists/$1&amp;quot;},&lt;br /&gt;
-- {&amp;quot;British Museum&amp;quot;, &amp;quot;P3632&amp;quot;, &amp;quot;http://collection.britishmuseum.org/id/thesauri/$1&amp;quot;},&lt;br /&gt;
-- {&amp;quot;British Museum&amp;quot;, &amp;quot;P3633&amp;quot;, &amp;quot;http://collection.britishmuseum.org/id/place/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;British Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1711&amp;quot;, &amp;quot;https://www.britishmuseum.org/collection/term/BIOG$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Brooklyn Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4740&amp;quot;, &amp;quot;https://www.brooklynmuseum.org/opencollection/objects/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Brooklyn Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4899&amp;quot;, &amp;quot;https://www.brooklynmuseum.org/opencollection/exhibitions/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Carnegie Museum of Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4686&amp;quot;, &amp;quot;https://collection.carnegieart.org/objects/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Catalogues des Musées de Florence&amp;quot;, &amp;quot;P2242&amp;quot;, &amp;quot;http://www.polomuseale.firenze.it/catalogo/scheda.asp?nctn=$1&amp;amp;value=1&amp;quot;},&lt;br /&gt;
{&amp;quot;Centre d&#039;art britannique de Yale&amp;quot;, &amp;quot;P4738&amp;quot;, &amp;quot;http://collections.britishart.yale.edu/vufind/Record/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Centre national des arts plastiques&amp;quot;, &amp;quot;P5403&amp;quot;, &amp;quot;https://www.cnap.fr/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Centre Pompidou&amp;quot;, &amp;quot;P6323&amp;quot;, &amp;quot;https://www.centrepompidou.fr/fr/id/$1&amp;quot;},&lt;br /&gt;
-- {{&amp;quot;Cincinnati Art Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8639&amp;quot;, &amp;quot;https://www.cincinnatiartmuseum.org/art/explore-the-collection?id=$1&amp;quot;},&lt;br /&gt;
-- {&amp;quot;Clara&amp;quot;, &amp;quot;P1615&amp;quot;, &amp;quot;http://clara.nmwa.org/index.php?g=entity_detail&amp;amp;entity_id=$1&amp;quot;}, -- site hors ligne&lt;br /&gt;
{&amp;quot;Collection de peintures de l&#039;État de Bavière&amp;quot;, &amp;quot;P4025&amp;quot;, &amp;quot;https://www.sammlung.pinakothek.de/en/artist/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Cooper–Hewitt, Smithsonian Design Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2011&amp;quot;, &amp;quot;https://collection.cooperhewitt.org/people/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Cranach Digital Archive&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5783&amp;quot;, &amp;quot;https://lucascranach.org/en/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Delarge&#039;&#039;&amp;quot;, &amp;quot;P1988&amp;quot;, &amp;quot;https://www.ledelarge.fr/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Design &amp;amp; Art Australia Online&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1707&amp;quot;, &amp;quot;https://www.daao.org.au/bio/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire des peintres belges&#039;&#039;&amp;quot;, &amp;quot;P4687&amp;quot;, &amp;quot;http://balat.kikirpa.be/peintres/Detail_notice.php?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;e-Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4257&amp;quot;, &amp;quot;http://www.emuseum.jp/detail/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;ECARTICO&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P2915&amp;quot;, &amp;quot;https://www.vondel.humanities.uva.nl/ecartico/persons/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Fitzwilliam Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8910&amp;quot;, &amp;quot;https://collection.beta.fitz.ms/id/object/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Fondation Barnes&amp;quot;, &amp;quot;P4709&amp;quot;, &amp;quot;https://collection.barnesfoundation.org/objects/$1/details&amp;quot;},&lt;br /&gt;
{&amp;quot;Fondation Federico Zeri&amp;quot;, &amp;quot;P3272&amp;quot;, &amp;quot;http://catalogo.fondazionezeri.unibo.it/scheda/opera/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Fondation Maeght&amp;quot;, &amp;quot;P6525&amp;quot;, &amp;quot;https://www.fondation-maeght.com/fr/collection/morceaux-choisis/$1/wd&amp;quot;},&lt;br /&gt;
{&amp;quot;Fondation Solomon R. Guggenheim&amp;quot;, &amp;quot;P4737&amp;quot;, &amp;quot;https://www.guggenheim.org/artwork/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Fundación Goya en Aragón&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P7229&amp;quot;, &amp;quot;https://fundaciongoyaenaragon.es/obra/wd/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Galerie berlinoise&amp;quot;, &amp;quot;P4580&amp;quot;, &amp;quot;https://sammlung-online.berlinischegalerie.de/eMuseumPlus?service=ExternalInterface&amp;amp;module=artist&amp;amp;objectId=$1&amp;amp;viewType=detailView&amp;quot;},&lt;br /&gt;
{{&amp;quot;Galerie des Offices&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8335&amp;quot;, &amp;quot;https://www.uffizi.it/en/artworks/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Galerie nationale d&#039;Arménie&amp;quot;, &amp;quot;P5210&amp;quot;, &amp;quot;http://www.gallery.am/en/database/item/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Galerie nationale de Finlande&amp;quot;, &amp;quot;P4177&amp;quot;, &amp;quot;http://kokoelmat.fng.fi/app?si=http://kansallisgalleria.fi/E39.Actor_$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Galerie nationale de Prague&amp;quot;, &amp;quot;P9942&amp;quot;, &amp;quot;https://sbirky.ngprague.cz/en/dielo/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Google Arts &amp;amp; Culture&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4701&amp;quot;, &amp;quot;https://www.google.com/culturalinstitute/beta/asset/wd/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Google Arts &amp;amp; Culture&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4702&amp;quot;, &amp;quot;https://www.google.com/culturalinstitute/beta/partner/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Grove Art Online&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8406&amp;quot;, &amp;quot;https://doi.org/10.1093/gao/9781884446054.article.$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Iconothèque historique de l&#039;océan Indien&amp;quot;, &amp;quot;P6356&amp;quot;, &amp;quot;https://www.ihoi.org/app/photopro.sk/ihoi_icono/detail?docid=$1&amp;amp;lang=fra&amp;quot;},&lt;br /&gt;
{{&amp;quot;Index of Historic Collectors and Dealers of Cubism&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5921&amp;quot;, &amp;quot;https://www.metmuseum.org/art/libraries-and-research-centers/leonard-lauder-research-center/programs-and-resources/index-of-cubist-art-collectors/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Information Center for Israeli Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1736&amp;quot;, &amp;quot;https://www.imj.org.il/artcenter/newsite/en/?artist=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Institut national de recherche pour les biens culturels&amp;quot;, &amp;quot;P5567&amp;quot;, &amp;quot;https://www.tobunken.go.jp/materials/bukko/$1.html&amp;quot;},&lt;br /&gt;
{{&amp;quot;Inventario 1890&amp;quot;, &amp;quot;it&amp;quot;}, &amp;quot;P1726&amp;quot;, &amp;quot;http://www.polomuseale.firenze.it/inv1890/scheda.asp?position=1&amp;amp;ninv=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Inventario Palatina&amp;quot;, &amp;quot;it&amp;quot;}, &amp;quot;P3504&amp;quot;, &amp;quot;http://www.polomuseale.firenze.it/invpalatina/scheda.asp?position=1&amp;amp;ninv=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Inventario Sculture&amp;quot;, &amp;quot;it&amp;quot;}, &amp;quot;P3467&amp;quot;, &amp;quot;http://www.polomuseale.firenze.it/invSculture/scheda.asp?position=1&amp;amp;ninv=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Inventories of American Painting and Sculpture&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4814&amp;quot;, &amp;quot;https://siris-artinventories.si.edu/ipac20/ipac.jsp?&amp;amp;menu=search&amp;amp;index=.NW&amp;amp;term=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;J. Paul Getty Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2432&amp;quot;, &amp;quot;http://www.getty.edu/art/collection/artists/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;J. Paul Getty Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2582&amp;quot;, &amp;quot;https://www.getty.edu/art/collection/object/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Joan Miró Online Image Bank&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6489&amp;quot;, &amp;quot;https://www.successiomiro.com/catalogue/object/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Joconde&amp;quot;, &amp;quot;P347&amp;quot;, &amp;quot;https://www.pop.culture.gouv.fr/notice/joconde/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Kulturelles Erbe Köln&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P4582&amp;quot;, &amp;quot;https://www.kulturelles-erbe-koeln.de/documents/obj/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Kunstindeks Danmark&amp;quot;, &amp;quot;da&amp;quot;}, &amp;quot;P1138&amp;quot;, &amp;quot;https://www.kulturarv.dk/kid/VisKunstner.do?kunstnerId=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;LombardiaBeniCulturali&amp;quot;, &amp;quot;it&amp;quot;}, &amp;quot;P3855&amp;quot;, &amp;quot;https://www.lombardiabeniculturali.it/opere-arte/schede/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Lost Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1428&amp;quot;, &amp;quot;http://www.lostart.de/EN/Verlust/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Mapping Sculpture&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2914&amp;quot;, &amp;quot;https://sculpture.gla.ac.uk/view/person.php?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Metropolitan Museum of Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3634&amp;quot;, &amp;quot;https://www.metmuseum.org/art/collection/search/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Minneapolis Institute of Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4712&amp;quot;, &amp;quot;https://collections.artsmia.org/art/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;MNBAQ&amp;quot;, &amp;quot;P8336&amp;quot;, &amp;quot;https://collections.mnbaq.org/fr/artiste/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Monuments aux morts&amp;quot;, &amp;quot;P6238&amp;quot;, &amp;quot;https://monumentsmorts.univ-lille.fr/monument/$1/wd/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Monuments commemoratius de Catalunya&amp;quot;, &amp;quot;ca&amp;quot;}, &amp;quot;P6239&amp;quot;, &amp;quot;https://monuments.iec.cat/fitxa.asp?id=$1&amp;quot;},&lt;br /&gt;
-- {{&amp;quot;MuBE Virtual&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4721&amp;quot;, &amp;quot;http://mubevirtual.com.br/pt_br?Dados&amp;amp;area=ver&amp;amp;id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée Boijmans Van Beuningen&amp;quot;, &amp;quot;P5499&amp;quot;, &amp;quot;https://www.boijmans.nl/en/collection/artworks/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;Art d&#039;Indianapolis&amp;quot;, &amp;quot;P4674&amp;quot;, &amp;quot;http://collection.imamuseum.org/artwork/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;Art du comté de Los Angeles&amp;quot;, &amp;quot;P4611&amp;quot;, &amp;quot;https://collections.lacma.org/node/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;Art moderne de Paris&amp;quot;, &amp;quot;P6374&amp;quot;, &amp;quot;https://www.mam.paris.fr/en/online-collections#/artwork/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;art Nelson-Atkins&amp;quot;, &amp;quot;P5273&amp;quot;, &amp;quot;https://art.nelson-atkins.org/people/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;Histoire de l&#039;art de Vienne&amp;quot;, &amp;quot;P8960&amp;quot;, &amp;quot;https://www.khm.at/de/object/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;Orsay&amp;quot;, &amp;quot;P2268&amp;quot;, &amp;quot;https://www.musee-orsay.fr/fr/ressources/repertoire-artistes-personnalites/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée d&#039;Orsay&amp;quot;, &amp;quot;P4659&amp;quot;, &amp;quot;https://www.musee-orsay.fr/fr/collections/catalogue-des-oeuvres/notice.html?nnumid=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée des Augustins de Toulouse&amp;quot;, &amp;quot;P4739&amp;quot;, &amp;quot;https://www.augustins.org/r/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée des Beaux-Arts de Boston&amp;quot;, &amp;quot;P4625&amp;quot;, &amp;quot;https://collections.mfa.org/objects/$1&amp;quot;},&lt;br /&gt;
-- {&amp;quot;Musée des Beaux-Arts de Gand&amp;quot;, &amp;quot;P2511&amp;quot;, &amp;quot;http://mskgent.be/collection/work/data/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée des Beaux-Arts de Houston&amp;quot;, &amp;quot;P4673&amp;quot;, &amp;quot;https://emuseum.mfah.org/objects/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée des beaux-arts du Canada&amp;quot;, &amp;quot;P5368&amp;quot;, &amp;quot;https://www.beaux-arts.ca/collection/artiste/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée du Louvre &amp;lt;small&amp;gt;(collections)&amp;lt;/small&amp;gt;&amp;quot;, &amp;quot;P9394&amp;quot;, &amp;quot;https://collections.louvre.fr/ark:/53355/cl$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée du Prado&amp;quot;, &amp;quot;P5321&amp;quot;, &amp;quot;https://www.museodelprado.es/coleccion/artista/wd/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Musée du Prado&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8905&amp;quot;, &amp;quot;https://www.museodelprado.es/en/the-collection/art-work/wd/$1&amp;quot;},&lt;br /&gt;
-- {&amp;quot;Musée Groeninge&amp;quot;, &amp;quot;P2282&amp;quot;, &amp;quot;http://groeningemuseum.be/collection/work/data/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Musée national centre d&#039;art Reina Sofía&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P4439&amp;quot;, &amp;quot;https://www.museoreinasofia.es/coleccion/autor/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée national d&#039;Art moderne&amp;quot;, &amp;quot;P6355&amp;quot;, &amp;quot;https://collection.centrepompidou.fr/#/artwork/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Musée national du Victoria&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2041&amp;quot;, &amp;quot;https://www.ngv.vic.gov.au/explore/collection/artist/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Musée national du Victoria&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4684&amp;quot;, &amp;quot;https://www.ngv.vic.gov.au/explore/collection/work/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée Picasso&amp;quot;, &amp;quot;P6358&amp;quot;, &amp;quot;https://www.navigart.fr/picassoparis/#/artwork/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée royal des Beaux-Arts d&#039;Anvers&amp;quot;, &amp;quot;P4905&amp;quot;, &amp;quot;https://kmska.be/collection/work/data/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée Städel&amp;quot;, &amp;quot;P4581&amp;quot;, &amp;quot;https://sammlung.staedelmuseum.de/de/person/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Musée Thyssen-Bornemisza&amp;quot;, &amp;quot;P2431&amp;quot;, &amp;quot;https://www.museothyssen.org/en/thyssen/ficha_artista/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Museo Nacional de Artes Visuales&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P5268&amp;quot;, &amp;quot;http://acervo.mnav.gub.uy/obras.php?q=ni:$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Museo Nacional de Artes Visuales&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P6156&amp;quot;, &amp;quot;http://acervo.mnav.gub.uy/obras.php?q=na:$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Museum of Modern Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2014&amp;quot;, &amp;quot;https://www.moma.org/collection/works/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Museum of Modern Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2174&amp;quot;, &amp;quot;https://www.moma.org/artists/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Museumslandschaft Hessen Kassel&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5407&amp;quot;, &amp;quot;https://datenbank.museum-kassel.de/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;MutualArt&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6578&amp;quot;, &amp;quot;https://www.mutualart.com/Artist/wd/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Gallery of Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2252&amp;quot;, &amp;quot;https://www.nga.gov/content/ngaweb/Collection/artist-info.$1.html&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Gallery of Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4683&amp;quot;, &amp;quot;https://www.nga.gov/content/ngaweb/Collection/art-object-page.$1.html&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Portrait Gallery&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1816&amp;quot;, &amp;quot;https://www.npg.org.uk/collections/search/person/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Portrait Gallery&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6152&amp;quot;, &amp;quot;https://npg.si.edu/object/npg_$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Trust Collections&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4373&amp;quot;, &amp;quot;https://www.nationaltrustcollections.org.uk/object/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Nationalmuseum&amp;quot;, &amp;quot;sv&amp;quot;}, &amp;quot;P2538&amp;quot;, &amp;quot;http://collection.nationalmuseum.se/eMuseumPlus?service=ExternalInterface&amp;amp;module=artist&amp;amp;objectId=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Nederlands Fotomuseum&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P7837&amp;quot;, &amp;quot;https://collectie.nederlandsfotomuseum.nl/fotografen/detail/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Norsk kunstnerleksikon&amp;quot;, &amp;quot;no&amp;quot;}, &amp;quot;P5081&amp;quot;, &amp;quot;https://nkl.snl.no/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Österreichische Galerie Belvedere&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P3421&amp;quot;, &amp;quot;https://digital.belvedere.at/people/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Österreichische Galerie Belvedere&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5823&amp;quot;, &amp;quot;https://digital.belvedere.at/objects/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Palais des Beaux-Arts de Lille&amp;quot;, &amp;quot;P8962&amp;quot;, &amp;quot;https://pba-opacweb.lille.fr/r/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Palissy&amp;quot;, &amp;quot;P481&amp;quot;, &amp;quot;https://www.pop.culture.gouv.fr/notice/palissy/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Panorama de l&#039;art&amp;quot;, &amp;quot;P6332&amp;quot;, &amp;quot;https://panoramadelart.com/analyse/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Paris Musées&amp;quot;, &amp;quot;P6246&amp;quot;, &amp;quot;https://www.parismuseescollections.paris.fr/fr/node/$1&amp;quot;},&lt;br /&gt;
-- {{&amp;quot;Photographers&#039; Identities Catalog&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2750&amp;quot;, &amp;quot;http://pic.nypl.org/constituents/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Philadelphia Museum of Art&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4643&amp;quot;, &amp;quot;https://www.philamuseum.org/collections/permanent/$1.html&amp;quot;},&lt;br /&gt;
-- {&amp;quot;Répertoire de sculpture française&amp;quot;, &amp;quot;P2380&amp;quot;, &amp;quot;https://frenchsculpture.org/fr/artist/$1&amp;quot;}, -- site désormais non fonctionnel https://www.wikidata.org/wiki/Talk:Q45327785&lt;br /&gt;
{{&amp;quot;RKDartists&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P650&amp;quot;, &amp;quot;https://rkd.nl/artists/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;RKDimages&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P350&amp;quot;, &amp;quot;https://rkd.nl/images/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Royal Academy of Arts&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4808&amp;quot;, &amp;quot;https://www.royalacademy.org.uk/art-artists/name/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Salons 1673-1914&amp;quot;, &amp;quot;P6007&amp;quot;, &amp;quot;http://salons.musee-orsay.fr/index/notice/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Sandrart.net&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P1422&amp;quot;, &amp;quot;http://ta.sandrart.net/en/person/view/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Sandrart.net&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P4380&amp;quot;, &amp;quot;http://ta.sandrart.net/en/artwork/view/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Signaturer.se&amp;quot;, &amp;quot;sv&amp;quot;}, &amp;quot;P5316&amp;quot;, &amp;quot;https://www.signaturer.se/Sverige/$1.htm&amp;quot;},&lt;br /&gt;
{{&amp;quot;SIKART&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P781&amp;quot;, &amp;quot;https://www.sikart.ch/KuenstlerInnen.aspx?id=$1&amp;amp;lng=fr&amp;quot;},&lt;br /&gt;
{{&amp;quot;Smarthistory&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6405&amp;quot;, &amp;quot;https://smarthistory.org/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Smithsonian American Art Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1795&amp;quot;, &amp;quot;https://americanart.si.edu/collections/search/artist/?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Tate&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2741&amp;quot;, &amp;quot;https://www.tate.org.uk/art/artists/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Te Papa Tongarewa&amp;quot;, &amp;quot;mi&amp;quot;}, &amp;quot;P3544&amp;quot;, &amp;quot;https://collections.tepapa.govt.nz/Person/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Union List of Artist Names&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P245&amp;quot;, &amp;quot;https://www.getty.edu/vow/ULANFullDisplay?find=&amp;amp;role=&amp;amp;nation=&amp;amp;subjectid=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Utpictura18&amp;quot;, &amp;quot;P6663&amp;quot;, &amp;quot;https://utpictura18.univ-amu.fr/node/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Victoria and Albert Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3929&amp;quot;, &amp;quot;https://collections.vam.ac.uk/item/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Walters Art Museum&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4713&amp;quot;, &amp;quot;https://art.thewalters.org/detail/$1&amp;quot;},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Bases/architecture&amp;diff=357</id>
		<title>Module:Bases/architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Bases/architecture&amp;diff=357"/>
		<updated>2024-09-20T14:31:38Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « return { -- { {nom, langue du nom}, propriété Wikidata, format URL} {{&amp;quot;Alberta Register of Historic Places&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P759&amp;quot;, &amp;quot;https://hermis.alberta.ca/ARHP/Details.aspx?DeptID=1&amp;amp;ObjectID=$1&amp;quot;}, {{&amp;quot;Amphi-Theatrum&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5633&amp;quot;, &amp;quot;http://amphi-theatrum.de/$1.html&amp;quot;}, {{&amp;quot;American Society of Civil Engineers&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5904&amp;quot;, &amp;quot;https://www.asce.org/project/$1/&amp;quot;}, {&amp;quot;Atlas de l&amp;#039;architecture et du patrimoine&amp;quot;, &amp;quot;P1794&amp;quot;, &amp;quot;http://www.atlas-patrimoine93.fr/pg-html/bases_doc... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
-- { {nom, langue du nom}, propriété Wikidata, format URL}&lt;br /&gt;
{{&amp;quot;Alberta Register of Historic Places&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P759&amp;quot;, &amp;quot;https://hermis.alberta.ca/ARHP/Details.aspx?DeptID=1&amp;amp;ObjectID=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Amphi-Theatrum&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5633&amp;quot;, &amp;quot;http://amphi-theatrum.de/$1.html&amp;quot;},&lt;br /&gt;
{{&amp;quot;American Society of Civil Engineers&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5904&amp;quot;, &amp;quot;https://www.asce.org/project/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Atlas de l&#039;architecture et du patrimoine&amp;quot;, &amp;quot;P1794&amp;quot;, &amp;quot;http://www.atlas-patrimoine93.fr/pg-html/bases_doc/inventaire/fiche.php?idfic=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Australian Heritage Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3008&amp;quot;, &amp;quot;http://www.environment.gov.au/cgi-bin/ahdb/search.pl?mode=place_detail;place_id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Base AUTOR&amp;quot;, &amp;quot;P3960&amp;quot;, &amp;quot;http://www.culture.gouv.fr/public/mistral/autor_fr?ACTION=CHERCHER&amp;amp;FIELD_98=REF&amp;amp;VALUE_98=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Catálogo de Patrimonio Cultural&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P6539&amp;quot;, &amp;quot;http://cultura.castillalamancha.es/patrimonio/catalogo-patrimonio-cultural/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Coflein&amp;quot;, &amp;quot;cy&amp;quot;}, &amp;quot;P4658&amp;quot;, &amp;quot;http://coflein.gov.uk/en/site/$1/details&amp;quot;},&lt;br /&gt;
{{&amp;quot;Colegio Oficial de Arquitectos de Madrid&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P2917&amp;quot;, &amp;quot;https://guia-arquitectura-madrid.coam.org/#inm.$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Commonwealth War Graves Commission&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1920&amp;quot;, &amp;quot;https://www.cwgc.org/find-a-cemetery/cemetery/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Conselho de Defesa do Patrimônio Histórico&amp;quot;, &amp;quot;pt&amp;quot;}, &amp;quot;P5525&amp;quot;, &amp;quot;http://condephaat.sp.gov.br/benstombados/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Dictionary of Scottish Architects&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5308&amp;quot;, &amp;quot;http://www.scottisharchitects.org.uk/architect_full.php?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Édifices fédéraux patrimoniaux&amp;quot;, &amp;quot;P3197&amp;quot;, &amp;quot;http://www.pc.gc.ca/apps/dfhd/page_fhbro_fra.aspx?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Fund og Fortidsminder&amp;quot;, &amp;quot;da&amp;quot;}, &amp;quot;P3596&amp;quot;, &amp;quot;http://www.kulturarv.dk/fundogfortidsminder/Lokalitet/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Harpers Ferry Center&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4083&amp;quot;, &amp;quot;https://www.nps.gov/carto/app/#!/maps/alphacode/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Heritage Foundation of Newfoundland and Labrador&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P933&amp;quot;, &amp;quot;http://heritagefoundation.ca/heritage-property/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;History Colorado&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8158&amp;quot;, &amp;quot;https://www.historycolorado.org/location/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Instituto de Gestão do Património Arquitectónico e Arqueológico&amp;quot;, &amp;quot;pt&amp;quot;}, &amp;quot;P1702&amp;quot;, &amp;quot;http://www.patrimoniocultural.pt/en/patrimonio/patrimonio-imovel/pesquisa-do-patrimonio/classificado-ou-em-vias-de-classificacao/geral/view/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire du patrimoine architectural de Catalogne&amp;quot;, &amp;quot;P1600&amp;quot;, &amp;quot;http://invarquit.cultura.gencat.cat/Cerca/Fitxa?index=0&amp;amp;consulta=&amp;amp;codi=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Auvergne-Rhône-Alpes&amp;quot;, &amp;quot;P5517&amp;quot;, &amp;quot;https://patrimoine.auvergnerhonealpes.fr/dossier/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Bourgogne-Franche-Comté&amp;quot;, &amp;quot;P9207&amp;quot;, &amp;quot;https://patrimoine.bourgognefranchecomte.fr/recherche?key=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Bretagne&amp;quot;, &amp;quot;P1529&amp;quot;, &amp;quot;https://patrimoine.bzh/gertrude-diffusion/dossier/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Centre-Val de Loire&amp;quot;, &amp;quot;P9175&amp;quot;, &amp;quot;https://patrimoine.centre-valdeloire.fr/gertrude-diffusion/recherche/globale?texte=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Hauts-de-France&amp;quot;, &amp;quot;P9168&amp;quot;, &amp;quot;https://inventaire.hautsdefrance.fr/dossier/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Île-de-France&amp;quot;, &amp;quot;P9208&amp;quot;, &amp;quot;https://inventaire.iledefrance.fr/dossier/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Normandie&amp;quot;, &amp;quot;P9209&amp;quot;, &amp;quot;https://inventaire-patrimoine.normandie.fr/dossier/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Occitanie&amp;quot;, &amp;quot;P9176&amp;quot;, &amp;quot;https://ressourcespatrimoines.laregion.fr/ark:/46855/inventaire_$1.locale=fr&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Pays de la Loire&amp;quot;, &amp;quot;P9210&amp;quot;, &amp;quot;https://gertrude.paysdelaloire.fr/dossier/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Inventaire Provence-Alpes-Côte d&#039;Azur&amp;quot;, &amp;quot;P9263&amp;quot;, &amp;quot;https://dossiersinventaire.maregionsud.fr/dossier/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Kulturerbearchiv der Deutschsprachigen Gemeinschaft&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5942&amp;quot;, &amp;quot;http://www.ostbelgienkulturerbe.be/desktopdefault.aspx/tabid-3557//linkid-$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Kulturminne&amp;quot;, &amp;quot;no&amp;quot;}, &amp;quot;P758&amp;quot;, &amp;quot;http://www.kulturminnesok.no/kulturminnesok/kulturminne/?LOK_ID=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Kultuurimälestiste&amp;quot;, &amp;quot;et&amp;quot;}, &amp;quot;P2948&amp;quot;, &amp;quot;http://register.muinas.ee/public.php?menuID=monument&amp;amp;action=view&amp;amp;id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Landesamt für Denkmalpflege Bremen&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P4246&amp;quot;, &amp;quot;http://denkmalpflege.bremen.de/sixcms/detail.php?template=20_denkmal_wrapper_d&amp;amp;obj=0000$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Landesamt für Denkmalpflege Hessen&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P1769&amp;quot;, &amp;quot;http://denkxweb.denkmalpflege-hessen.de/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Landesdenkmalamt Berlin&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P2424&amp;quot;, &amp;quot;http://www.stadtentwicklung.berlin.de/denkmal/liste_karte_datenbank/de/denkmaldatenbank/daobj.php?obj_dok_nr=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Lieux historiques nationaux&amp;quot;, &amp;quot;P2526&amp;quot;, &amp;quot;http://www.pc.gc.ca/apps/dfhd/page_nhs_fra.aspx?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Lista Roja del Patrimonio&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P4868&amp;quot;, &amp;quot;http://listarojapatrimonio.org/ficha/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Liste du patrimoine mondial&amp;quot;, &amp;quot;P757&amp;quot;, &amp;quot;http://whc.unesco.org/fr/list/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Liste indicative du patrimoine mondial&amp;quot;, &amp;quot;P4171&amp;quot;, &amp;quot;http://whc.unesco.org/fr/listesindicatives/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;LombardiaBeniCulturali&amp;quot;, &amp;quot;it&amp;quot;}, &amp;quot;P3503&amp;quot;, &amp;quot;http://www.lombardiabeniculturali.it/architetture/schede/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;MDAH Historic Resources Inventory Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8249&amp;quot;, &amp;quot;https://www.apps.mdah.ms.gov/Public/prop.aspx?id=$1&amp;amp;view=facts&amp;quot;},&lt;br /&gt;
{&amp;quot;Mérimée&amp;quot;, &amp;quot;P380&amp;quot;, &amp;quot;https://www.pop.culture.gouv.fr/notice/merimee/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Molenecho&#039;s&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P2867&amp;quot;, &amp;quot;http://www.molenechos.org/molen.php?AdvSearch=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;MonumNet&amp;quot;, &amp;quot;cs&amp;quot;}, &amp;quot;P762&amp;quot;, &amp;quot;http://monumnet.npu.cz/pamfond/list.php?hledani=1&amp;amp;CiRejst=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Museovirasto&amp;quot;, &amp;quot;fi&amp;quot;}, &amp;quot;P4106&amp;quot;, &amp;quot;http://www.kyppi.fi/to.aspx?id=112.$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Nationaal Comité 4 en 5 mei&amp;quot;, &amp;quot;nl&amp;quot;}, &#039;P3638&#039;, &amp;quot;https://www.4en5mei.nl/oorlogsmonumenten/monumenten_zoeken/oorlogsmonument/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;National Heritage List for England&amp;quot;, &amp;quot;en&amp;quot;}, &#039;P1216&#039;, &#039;https://historicengland.org.uk/listing/the-list/list-entry/$1&#039;},&lt;br /&gt;
{{&amp;quot;National Park Foundation&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3516&amp;quot;, &amp;quot;https://www.nationalparks.org/explore-parks/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Nederlandse Gemalen Stichting&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P3304&amp;quot;, &amp;quot;http://www.gemalen.nl/gemaal_detail.asp?gem_id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;De Nederlandse Molendatabase&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P2863&amp;quot;, &amp;quot;https://molendatabase.nl/nederland/molen.php?nummer=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;New Zealand Heritage List&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3728&amp;quot;, &amp;quot;http://www.heritage.org.nz/the-list/details/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;NPS Stats&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P4083&amp;quot;, &amp;quot;https://irma.nps.gov/Stats/Reports/Park/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;NSW Heritage Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P3449&amp;quot;, &amp;quot;http://www.environment.nsw.gov.au/heritageapp/ViewHeritageItemDetails.aspx?ID=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Office of Historic Preservation&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6012&amp;quot;, &amp;quot;http://ohp.parks.ca.gov/ListedResources/Detail/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Onroerend Erfgoed&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P1764&amp;quot;, &amp;quot;https://id.erfgoed.net/erfgoedobjecten/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Oregon Historic Sites Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P8177&amp;quot;, &amp;quot;https://heritagedata.prd.state.or.us/historic/index.cfm?do=v.dsp_siteSummary&amp;amp;resultDisplay=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Pacific Coast Architecture Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6486&amp;quot;, &amp;quot;http://pcad.lib.washington.edu/building/$1/&amp;quot;},&lt;br /&gt;
{{&amp;quot;Pacific Coast Architecture Database&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P6550&amp;quot;, &amp;quot;http://pcad.lib.washington.edu/firm/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Patrimoine belge au Brésil&amp;quot;, &amp;quot;P5528&amp;quot;, &amp;quot;http://belgianclub.com.br/fr/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Patrimoine classé de Wallonie&amp;quot;, &amp;quot;P1133&amp;quot;, &amp;quot;http://lampspw.wallonie.be/dgo4/site_thema/index.php/dossier/view/BC_PAT/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Phares patrimoniaux&amp;quot;, &amp;quot;P3211&amp;quot;, &amp;quot;https://www.pc.gc.ca/apps/dfhd/page_hl_fra.aspx?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Prison History&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P5535&amp;quot;, &amp;quot;https://www.prisonhistory.org/prison/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;PSS&amp;quot;, &amp;quot;P1838&amp;quot;, &amp;quot;http://www.pss-archi.eu/immeubles/$1.html&amp;quot;},&lt;br /&gt;
{{&amp;quot;Queensland Heritage Register&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2967&amp;quot;, &amp;quot;https://environment.ehp.qld.gov.au/heritage-register/detail/?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Registre aux fins de la Loi sur le patrimoine de l&#039;Ontario&amp;quot;, &amp;quot;P4120&amp;quot;, &amp;quot;http://www.heritagetrust.on.ca/fr/index.php/oha/details?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Registre national des lieux historiques&amp;quot;, &amp;quot;P649&amp;quot;, &amp;quot;https://npgallery.nps.gov/AssetDetail/NRIS/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Répertoire canadien des lieux patrimoniaux&amp;quot;, &amp;quot;P477&amp;quot;, &amp;quot;http://www.historicplaces.ca/fr/rep-reg/place-lieu.aspx?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Répertoire des lieux patrimoniaux de l&#039;Île-du-Prince-Edouard&amp;quot;, &amp;quot;P763&amp;quot;, &amp;quot;http://www.gov.pe.ca/hpo/app.php?nav=details&amp;amp;p=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Répertoire des architectes diocésains du XIX&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; siècle&amp;quot;, &amp;quot;P2385&amp;quot;, &amp;quot;http://elec.enc.sorbonne.fr/architectes/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Répertoire du patrimoine culturel du Québec&amp;quot;, &amp;quot;P633&amp;quot;, &amp;quot;http://www.patrimoine-culturel.gouv.qc.ca/rpcq/detail.do?methode=consulter&amp;amp;id=$1&amp;amp;type=bien&amp;quot;},&lt;br /&gt;
{{&amp;quot;Rijksmonument&amp;quot;, &amp;quot;nl&amp;quot;}, &amp;quot;P359&amp;quot;, &amp;quot;https://cultureelerfgoed.nl/monumenten/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Sistema de Informação para o Património Arquitectónico&amp;quot;, &amp;quot;pt&amp;quot;}, &amp;quot;P1700&amp;quot;, &amp;quot;http://www.monumentos.gov.pt/Site/APP_PagesUser/SIPA.aspx?id=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;The Skyscraper Center&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P1305&amp;quot;, &amp;quot;http://www.skyscrapercenter.com/building/wd/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;The Skyscraper Center&amp;quot;, &amp;quot;en&amp;quot;}, &amp;quot;P2762&amp;quot;, &amp;quot;http://www.skyscrapercenter.com/complex/$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;SNCZI-IPE&amp;quot;, &amp;quot;es&amp;quot;}, &amp;quot;P4558&amp;quot;, &amp;quot;https://sig.mapama.gob.es/93/ClienteWS/snczi/default.aspx?nombre=PRESA&amp;amp;claves=CODPRESA&amp;amp;valores=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Structurae&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P454&amp;quot;, &amp;quot;http://fr.structurae.de/structures/data/index.cfm?ID=$1&amp;quot;},&lt;br /&gt;
{{&amp;quot;Theatrum&amp;quot;, &amp;quot;de&amp;quot;}, &amp;quot;P5634&amp;quot;, &amp;quot;http://theatrum.de/$1.html&amp;quot;},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Iterateurs&amp;diff=356</id>
		<title>Module:Iterateurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Iterateurs&amp;diff=356"/>
		<updated>2024-09-20T14:30:53Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- --------------------------------------------------------------------------------- -- Iterating primitives  ---------------------------------------------------------------------------------   Base functions to work on stateful lua iterators.  Function that creates iterators, like &amp;quot;pair&amp;quot; and &amp;quot;ipair&amp;quot;, but stateful unlike them  -- May be building a duplicate of https://www.wikidata.org/wiki/Module:Luafun   --  local p = {} -------------------------------------... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
---------------------------------------------------------------------------------&lt;br /&gt;
-- Iterating primitives &lt;br /&gt;
---------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Base functions to work on stateful lua iterators.&lt;br /&gt;
&lt;br /&gt;
Function that creates iterators, like &amp;quot;pair&amp;quot; and &amp;quot;ipair&amp;quot;, but stateful unlike them&lt;br /&gt;
&lt;br /&gt;
-- May be building a duplicate of https://www.wikidata.org/wiki/Module:Luafun &lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
----------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Copied From Luafun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local methods = {} -- collects the methods to append to an iterator object&lt;br /&gt;
&lt;br /&gt;
local register_method = (function(module, methods)&lt;br /&gt;
	return function(name, func)&lt;br /&gt;
		module[name] = func&lt;br /&gt;
		methods[name] = func&lt;br /&gt;
	end&lt;br /&gt;
end)(p, methods)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- the metatable for an iterator object&lt;br /&gt;
local iterator_mt = {&lt;br /&gt;
    -- usually called by for-in loop&lt;br /&gt;
    __call = function(self, param, state)&lt;br /&gt;
        return self.gen(param, state)&lt;br /&gt;
    end;&lt;br /&gt;
    __tostring = function(self)&lt;br /&gt;
        return &#039;&amp;lt;generator&amp;gt;&#039;&lt;br /&gt;
    end;&lt;br /&gt;
    -- add all exported methods&lt;br /&gt;
    __index = methods;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- used to change an iterator function to an iterator objects to allow to attach methods to an iterator&lt;br /&gt;
local wrap = function(gen, param, state)&lt;br /&gt;
    return setmetatable({&lt;br /&gt;
        gen = gen,&lt;br /&gt;
        param = param,&lt;br /&gt;
        state = state&lt;br /&gt;
    }, iterator_mt), param, state&lt;br /&gt;
end&lt;br /&gt;
p.wrap = wrap&lt;br /&gt;
&lt;br /&gt;
local method0 = function(fun)&lt;br /&gt;
    return function(self)&lt;br /&gt;
        return fun(self.gen, self.param, self.state)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local methodn = function(fun)&lt;br /&gt;
    return function(self, ...) &lt;br /&gt;
       	return fun(self.gen, ...)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- iterator constructor. Transforms an iterator over a sequence of values in &lt;br /&gt;
-- an iterator on the result of the &amp;quot;value_constructor&amp;quot; function applied to the initial values&lt;br /&gt;
-- (a kind of an equivalent of the functional &amp;quot;map&amp;quot; function that works on iterator instead of list)&lt;br /&gt;
&lt;br /&gt;
-- this iterator works on values and ignore the keys&lt;br /&gt;
local function map(it, transformation)&lt;br /&gt;
	assert(it, &amp;quot;map : no iterator provided&amp;quot;)&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local val = it()&lt;br /&gt;
			if val then return transformation(val) end&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;map&amp;quot;, map)&lt;br /&gt;
&lt;br /&gt;
-- like &amp;quot;map&amp;quot; except it works on pairs of values (usually key/val pairs)&lt;br /&gt;
&lt;br /&gt;
-- this iterator works on pairs&lt;br /&gt;
local function pair_map(it, transformation)&lt;br /&gt;
	assert(it, &amp;quot;pair_map : no iterator provided&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local i, val = it()&lt;br /&gt;
			if i then return transformation(i, val) end&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;pair_map&amp;quot;,pair_map)&lt;br /&gt;
&lt;br /&gt;
-- iterates on the values of another iterators and yield only the values that pass the criteria&lt;br /&gt;
-- (a kind of an equivalent of the functional &amp;quot;filter&amp;quot; function that works on iterator instead of list)&lt;br /&gt;
&lt;br /&gt;
-- this iterator works on values&lt;br /&gt;
local function filter(it, criteria)&lt;br /&gt;
	assert(it, &amp;quot;filter : no iterator provided&amp;quot;)&lt;br /&gt;
	assert(type(criteria)==&amp;quot;function&amp;quot;, &amp;quot;no criteria provided&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local val = it()&lt;br /&gt;
			while val and not(criteria(val)) do&lt;br /&gt;
				val = it()&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;
register_method(&amp;quot;filter&amp;quot;, filter)&lt;br /&gt;
&lt;br /&gt;
-- pair version of the previous function&lt;br /&gt;
&lt;br /&gt;
--this iterators works on pairs&lt;br /&gt;
local function pair_filter(it, criteria)&lt;br /&gt;
	assert(it, &amp;quot;pair_filter : no iterator provided&amp;quot;)&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local i, val = it()&lt;br /&gt;
			while val and not(criteria(i, val)) do&lt;br /&gt;
				i, val = it()&lt;br /&gt;
			end&lt;br /&gt;
			return i, val&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;pair_filter&amp;quot;, pair_filter)&lt;br /&gt;
&lt;br /&gt;
--creates a value only iterator from a &amp;quot;pair&amp;quot; one, yielding only the &amp;quot;keys&amp;quot; (first item of the pair)&lt;br /&gt;
&lt;br /&gt;
--this iterators works on pairs&lt;br /&gt;
local function select_keys(it)&lt;br /&gt;
	assert(it, &amp;quot;select_keys : no iterator provided&amp;quot;)&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local i, val = it()&lt;br /&gt;
			return i&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;select_keys&amp;quot;, select_keys)&lt;br /&gt;
&lt;br /&gt;
--creates a value only iterator from a &amp;quot;pair&amp;quot; one, yielding only the &amp;quot;values&amp;quot; (second item of the pair)&lt;br /&gt;
&lt;br /&gt;
--this iterators works on pairs&lt;br /&gt;
local function select_vals(it)&lt;br /&gt;
	assert(it, &amp;quot;pair_vals : no iterator provided&amp;quot;)&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local i, val = it()&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.select_vals = select_vals&lt;br /&gt;
&lt;br /&gt;
-- create a stateful iterators that iterates on the values of a table&lt;br /&gt;
-- (from the stateless standard &amp;quot;pairs&amp;quot; iterator on tables)&lt;br /&gt;
local function on_vals(tabl)&lt;br /&gt;
    local _f, _s, _v  = pairs(tabl)&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			if _s then&lt;br /&gt;
				local i, res = _f(_s, _v)&lt;br /&gt;
				_v = i&lt;br /&gt;
				if not res then _s = nil end&lt;br /&gt;
				return res&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
p.on_vals = on_vals&lt;br /&gt;
&lt;br /&gt;
-- create a stateful iterators that iterates over the keys of a table&lt;br /&gt;
-- (from the stateless standard &amp;quot;pairs&amp;quot; iterator on tables)&lt;br /&gt;
local function on_pairs(tabl)&lt;br /&gt;
    local _f, _s, _v  = pairs(tabl)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
	return --wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			if _s then&lt;br /&gt;
				local i, res = _f(_s, _v)&lt;br /&gt;
				_v = i&lt;br /&gt;
				if not res then _s = nil end&lt;br /&gt;
				return i, res&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	--)&lt;br /&gt;
end&lt;br /&gt;
p.on_pairs = on_pairs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- equivalent of the &amp;quot;join&amp;quot; operation, with join({{&amp;quot;a&amp;quot;},{},{&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;}}) = {&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;} &lt;br /&gt;
-- for iterators.&lt;br /&gt;
-- if the parameter &amp;quot;it&amp;quot; is an iterator that yields {&amp;quot;a&amp;quot;} ; then {} ; then {&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;} &lt;br /&gt;
-- and &amp;quot;creator&amp;quot; is a function that creates an iterator that yields &amp;quot;b&amp;quot; then &amp;quot;c&amp;quot; from the table {&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;}&lt;br /&gt;
-- the &amp;quot;flatten&amp;quot;-ing of this parameter will yield &amp;quot;a&amp;quot; then &amp;quot;b&amp;quot; then &amp;quot;c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function flatten(it, creator)&lt;br /&gt;
	assert(it, &amp;quot;flatten : no iterator provided&amp;quot;)&lt;br /&gt;
	assert(creator, &amp;quot;flatten : no iterator creator provided&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local main_val = it()&lt;br /&gt;
	&lt;br /&gt;
	if main_val then&lt;br /&gt;
		local sub_it = creator(main_val)&lt;br /&gt;
		return wrap(&lt;br /&gt;
			function()&lt;br /&gt;
				if main_val then&lt;br /&gt;
					local val = nil&lt;br /&gt;
					while not val and main_val do&lt;br /&gt;
						if sub_it then&lt;br /&gt;
							val = sub_it()&lt;br /&gt;
						end&lt;br /&gt;
						if not val then&lt;br /&gt;
							main_val = it()&lt;br /&gt;
							if not main_val then return end&lt;br /&gt;
							sub_it = creator(main_val)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					return val&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		return wrap(function () return nil end)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;flatten&amp;quot;, flatten)&lt;br /&gt;
&lt;br /&gt;
-- equivalent of list concatenation for iterators&lt;br /&gt;
&lt;br /&gt;
local chain = function (it1, it2)&lt;br /&gt;
	return wrap(&lt;br /&gt;
		function()&lt;br /&gt;
			local res = it1() or it2()&lt;br /&gt;
			return res&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;chain&amp;quot;, chain)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- creates an iterator on a single value&lt;br /&gt;
&lt;br /&gt;
p.singleton = function (val)&lt;br /&gt;
	local iterated&lt;br /&gt;
	return wrap(function()&lt;br /&gt;
		if not iterated then&lt;br /&gt;
			iterated = true&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fold(it, acc, init)&lt;br /&gt;
	local accum = init&lt;br /&gt;
	for res in it do&lt;br /&gt;
		accum = acc(res, accum)&lt;br /&gt;
	end&lt;br /&gt;
	return accum&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;fold&amp;quot;, fold)&lt;br /&gt;
&lt;br /&gt;
local function totable(it)&lt;br /&gt;
	return fold(&lt;br /&gt;
		it, &lt;br /&gt;
		function (val, tabl)&lt;br /&gt;
			table.insert(tabl, val)&lt;br /&gt;
			return tabl&lt;br /&gt;
		end,&lt;br /&gt;
		{}&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
register_method(&amp;quot;totable&amp;quot;, totable)&lt;br /&gt;
&lt;br /&gt;
function p.range(start_i, end_i, step)&lt;br /&gt;
	local i = nil&lt;br /&gt;
	step = step or 1&lt;br /&gt;
	&lt;br /&gt;
	assert(step ~= 0)&lt;br /&gt;
	&lt;br /&gt;
	local direction = step/math.abs(step)&lt;br /&gt;
	&lt;br /&gt;
	return wrap(function()&lt;br /&gt;
		if not i then &lt;br /&gt;
			i = start_i&lt;br /&gt;
		else&lt;br /&gt;
			i = i + step&lt;br /&gt;
		end&lt;br /&gt;
		if i * direction &amp;lt; end_i * direction then &lt;br /&gt;
			return i&lt;br /&gt;
		else&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- TESTING FUNCTIONS&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.execute(iterator)&lt;br /&gt;
	for x in iterator do&lt;br /&gt;
		mw.log(x)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.execute_pair(iterator)&lt;br /&gt;
	for x, y in iterator do&lt;br /&gt;
		mw.log(x, y)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Resultat&amp;diff=355</id>
		<title>Module:Wikidata/Chemin/Resultat</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Resultat&amp;diff=355"/>
		<updated>2024-09-20T14:30:12Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = {}  p.ResultNode = {}  function p.ResultNode:new (o)   local o = o or {}   o.is_RNode = true   setmetatable(o, self)   self.__index = self   return o end  function p.ResultNode:has_an_entity()   local value_snak = self:snak()   return value_snak.snaktype == &amp;quot;value&amp;quot;           and value_snak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot; end   function p.ResultNode:has_a_property()   local value_snak = self:snak()   return value_snak.snaktype == &amp;quot;value&amp;quot;  and value... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
p.ResultNode = {}&lt;br /&gt;
&lt;br /&gt;
function p.ResultNode:new (o)&lt;br /&gt;
  local o = o or {}&lt;br /&gt;
  o.is_RNode = true&lt;br /&gt;
  setmetatable(o, self)&lt;br /&gt;
  self.__index = self&lt;br /&gt;
  return o&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ResultNode:has_an_entity()&lt;br /&gt;
  local value_snak = self:snak()&lt;br /&gt;
  return value_snak.snaktype == &amp;quot;value&amp;quot; &lt;br /&gt;
         and value_snak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.ResultNode:has_a_property()&lt;br /&gt;
  local value_snak = self:snak()&lt;br /&gt;
  return value_snak.snaktype == &amp;quot;value&amp;quot;  and value_snak.datatype == &amp;quot;wikibase-property&amp;quot;&lt;br /&gt;
         and value_snak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ResultNode:has_an_item()&lt;br /&gt;
  local value_snak = self:snak()&lt;br /&gt;
  return value_snak.snaktype == &amp;quot;value&amp;quot; and value_snak.datatype == &amp;quot;wikibase-item&amp;quot;&lt;br /&gt;
         and value_snak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- precondition : ResultNode:has_an_item()&lt;br /&gt;
function p.ResultNode:item_value()&lt;br /&gt;
  local value_snak = self:snak()&lt;br /&gt;
  if(not(value_snak[&amp;quot;datavalue&amp;quot;] )) then return nil end&lt;br /&gt;
  return &amp;quot;Q&amp;quot; .. tostring(value_snak.datavalue.value[&#039;numeric-id&#039;])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- precondition : ResultNode:has_an_entity()&lt;br /&gt;
function p.ResultNode:entity_value()&lt;br /&gt;
  local value_snak = self:snak()&lt;br /&gt;
  if(not(value_snak[&amp;quot;datavalue&amp;quot;] )) then return nil end&lt;br /&gt;
  return value_snak.datavalue.value[&#039;id&#039;]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- subclassing&lt;br /&gt;
p.StatementRNode = p.ResultNode:new()&lt;br /&gt;
p.QualifierRNode = p.ResultNode:new()&lt;br /&gt;
p.EpsilonRNode = p.ResultNode:new()&lt;br /&gt;
&lt;br /&gt;
function p.StatementRNode:create(statement, previous_node)&lt;br /&gt;
	setmetatable(statement, self)&lt;br /&gt;
	statement.parent = previous_node&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return statement&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.QualifierRNode:create(snak, statement)&lt;br /&gt;
	setmetatable(snak, self)&lt;br /&gt;
	snak.parent = statement&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return snak&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.EpsilonRNode:create(item, parent, o)&lt;br /&gt;
	local o = o or {}&lt;br /&gt;
	o.item = item&lt;br /&gt;
	o.parent = parent&lt;br /&gt;
	setmetatable(o, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return o&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.EpsilonRNode:has_an_item()&lt;br /&gt;
  return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.EpsilonRNode:item_value()&lt;br /&gt;
  return self.item&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.StatementRNode:snak()&lt;br /&gt;
	return self.mainsnak&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.QualifierRNode:snak()&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Infobox/Pictogramme/musee.css&amp;diff=354</id>
		<title>Modèle:Infobox/Pictogramme/musee.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Infobox/Pictogramme/musee.css&amp;diff=354"/>
		<updated>2024-09-20T14:29:01Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « .entete.musee { 	background-image: url(&amp;quot;https://upload.wikimedia.org/wikipedia/commons/a/ac/Infobox_museum_pictogram.png&amp;quot;); } /* musee */ »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.entete.musee {&lt;br /&gt;
	background-image: url(&amp;quot;https://upload.wikimedia.org/wikipedia/commons/a/ac/Infobox_museum_pictogram.png&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/* [[Catégorie:Modèle infobox pictogramme|musee]] */&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:FParser&amp;diff=353</id>
		<title>Module:FParser</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:FParser&amp;diff=353"/>
		<updated>2024-09-20T14:27:36Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local lexer = {} local parser = {}  --[[ These parser functions are generic functions to build a parser. It works with &amp;quot;Lexing&amp;quot; and &amp;quot;Parsing&amp;quot; functions.  The parser is initialized by the &amp;quot;parse&amp;quot; function, who generates a &amp;quot;state&amp;quot; object that must be a parameter of each parsing functions,                                          and eventually returns the main node of the AST if everything goes well * Lexing functions have one parameter, the state of the parser, an... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local lexer = {}&lt;br /&gt;
local parser = {}&lt;br /&gt;
&lt;br /&gt;
--[[ These parser functions are generic functions to build a parser.&lt;br /&gt;
It works with &amp;quot;Lexing&amp;quot; and &amp;quot;Parsing&amp;quot; functions. &lt;br /&gt;
The parser is initialized by the &amp;quot;parse&amp;quot; function, who generates a &amp;quot;state&amp;quot; object that must be a parameter of each parsing functions,&lt;br /&gt;
                                         and eventually returns the main node of the AST if everything goes well&lt;br /&gt;
* Lexing functions have one parameter, the state of the parser, and returns a modified state &lt;br /&gt;
  if they could find the terminals they are supposed to recognize and  or nothing if the parse fails. &lt;br /&gt;
* Parsing functions always have a state as unique parameter. &lt;br /&gt;
  They can be divided into&lt;br /&gt;
  * Generic one, written in this module that corresponds that helps to build a parser &lt;br /&gt;
    but don&#039;t generate nodes of the AST themselves, like &amp;quot;alternative&amp;quot;, &amp;quot;chain&amp;quot;, &amp;quot;star&amp;quot; or &amp;quot;plus&amp;quot;  &lt;br /&gt;
    * &amp;quot;chain&amp;quot; corresponds to the concatenation operation in a grammar. for example a function that parses the EBNF rule&lt;br /&gt;
            twelve  = &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot; ;&lt;br /&gt;
      will be generated by chain{lex_char(&amp;quot;1&amp;quot;), lex_char(&amp;quot;2&amp;quot;)}&lt;br /&gt;
    * &amp;quot;alternative&amp;quot; corresponds to the alternative operation in a grammar, for example a function that parses the EBNF rule &lt;br /&gt;
            digit_excluding_zero = &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
       will be written alternative{lex_char(&amp;quot;1&amp;quot;), lex_char(&amp;quot;2&amp;quot;), lex_char(&amp;quot;3&amp;quot;), lex_char(&amp;quot;4&amp;quot;), lex_char(&amp;quot;5&amp;quot;), lex_char(&amp;quot;6&amp;quot;), &lt;br /&gt;
                                   lex_char(&amp;quot;7&amp;quot;), lex_char(&amp;quot;8&amp;quot;), lex_char(&amp;quot;9&amp;quot;)}&lt;br /&gt;
  * User written one, that are functions that must generate a node of the AST as a &amp;quot;node&amp;quot; attribute of the &amp;quot;state&amp;quot; object.&lt;br /&gt;
    To do that they must use attributes of the state object filled by the generic one like &lt;br /&gt;
    * &amp;quot;parsed&amp;quot;, the string parsed by the last lexing function,&lt;br /&gt;
    * &amp;quot;acc&amp;quot;, the list of nodes that are generated by the function that are passed to function that iterates their call namely &amp;quot;star&amp;quot; and &amp;quot;plus&amp;quot; &lt;br /&gt;
    They return nothing if the parse fails, or the state of the last state returned by a lexer function called if they don&#039;t.&lt;br /&gt;
&lt;br /&gt;
Other functions are&lt;br /&gt;
* maybe : a function to avoid checking if the state is nil every time : if the state is in a fail state, &lt;br /&gt;
  it does not apply the parsing or lexing function. Maybe allows to chain the application of lexing and parsing function easily.&lt;br /&gt;
  attribute of the &amp;quot;newstate&amp;quot; object to be able to access the &amp;quot;acc&amp;quot; or &amp;quot;node&amp;quot; of the previous object in a chain, for example.&lt;br /&gt;
* idop : a function that takes a function as parameter that is used to compute an action on the current state in a chain of parsing function, &lt;br /&gt;
  mainly modifying variables in the closure. Functions passed to idop returns nothing. Usable for example for logging.&lt;br /&gt;
* statemodop : a function that takes a function as parameter ; who computes a node in the AST from the state and the variables of the closure and typically adding &lt;br /&gt;
               it to the state.&lt;br /&gt;
               Those functions have the same signatures than parsing functions, but typically they do not parse anything.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- lexer&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function lex_regex(state, regex)&lt;br /&gt;
&lt;br /&gt;
	local res = string.match(state.newstate.str, &amp;quot;^&amp;quot; .. regex)&lt;br /&gt;
	if res then&lt;br /&gt;
		local newstate = {}&lt;br /&gt;
		local len = string.len(res)&lt;br /&gt;
		newstate.str = state.newstate.str:sub(len + 1)&lt;br /&gt;
		newstate.pos = state.newstate.pos + len&lt;br /&gt;
		return {&lt;br /&gt;
			[&#039;lexed&#039;] = res, &lt;br /&gt;
			[&amp;quot;newstate&amp;quot;] = newstate,&lt;br /&gt;
			[&amp;quot;node&amp;quot;] = state.node -- forwarding node in case it&#039;s not consumed &lt;br /&gt;
                                              -- case of lexing a closing parenthesis after the node creation.&lt;br /&gt;
                                              -- this is to avoid to have to create a closure variable&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
lexer.lex_regex = lex_regex&lt;br /&gt;
&lt;br /&gt;
local function lex_epsilon(state)&lt;br /&gt;
	return lex_regex(state, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests: p.parse(&amp;quot;a&amp;quot;, p.chain{p.lexer.lex_epsilon, p.lex_char(&amp;quot;a&amp;quot;),p.lexer.lex_epsilon})&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
lexer.lex_epsilon = lex_epsilon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local lex_char = function(char)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		return lex_regex(state, char)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- tested with &amp;quot;p.parse(&amp;quot;/&amp;quot;, p.lex_char(&#039;/&#039;))&amp;quot;&lt;br /&gt;
lexer.lex_char = lex_char&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function lexer.open_parenthesis(state)&lt;br /&gt;
	return lex_regex(state, &amp;quot;[(]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function lexer.close_parenthesis(state)&lt;br /&gt;
	return lex_regex(state, &amp;quot;[)]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function lexer.lex_integer(state)&lt;br /&gt;
	return lex_regex(state, &amp;quot;[0-9]+&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function lexer.eat_blanks(state)&lt;br /&gt;
	return lex_regex(state,&#039; *&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.lexer = lexer&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------&lt;br /&gt;
-- generic parser property&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function maybe(func)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		if state then&lt;br /&gt;
			return func(state)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.maybe = maybe&lt;br /&gt;
&lt;br /&gt;
local function accumulate(aggregate_func)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		return {&lt;br /&gt;
			[&amp;quot;newstate&amp;quot;]=state.newstate, &lt;br /&gt;
			[&amp;quot;node&amp;quot;]= aggregate_func(state.acc)&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.accumulate = accumulate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function map_node(map_func)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		if state then&lt;br /&gt;
			return {&lt;br /&gt;
				[&amp;quot;newstate&amp;quot;] = state.newstate, &lt;br /&gt;
				[&amp;quot;node&amp;quot;] = map_func(state.node)&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.map_node = map_node&lt;br /&gt;
&lt;br /&gt;
local function idop(func)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		if state then&lt;br /&gt;
			func(state)&lt;br /&gt;
			return state&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.idop = idop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- logs&lt;br /&gt;
local show = function (string) return idop(function(state) mw.log(string) end) end&lt;br /&gt;
parser.log = show&lt;br /&gt;
parser.show = show&lt;br /&gt;
&lt;br /&gt;
local dump_state =  idop(function(state) mw.logObject(state) end)&lt;br /&gt;
parser.dump_state = dump_state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- this allows avoiding to pass the state beetween each functions if they were called by hand&lt;br /&gt;
local function chain(funcs)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		local i = 1&lt;br /&gt;
		local res = funcs[1](state)&lt;br /&gt;
		&lt;br /&gt;
		while i &amp;lt; #funcs and res do&lt;br /&gt;
			i = i+1&lt;br /&gt;
			if funcs[i] == nil then&lt;br /&gt;
				error(&amp;quot;a nil func in chain&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			res = funcs[i](res)&lt;br /&gt;
		end&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests : &lt;br /&gt;
p.parse(&amp;quot;aba&amp;quot;, p.chain{p.lex_char(&#039;a&#039;), p.lex_char(&#039;b&#039;), p.lex_char(&#039;a&#039;)}) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;aba&amp;quot;, p.chain{p.lex_char(&#039;a&#039;), p.lex_char(&#039;b&#039;)}) =&amp;gt; nope&lt;br /&gt;
p.parse(&amp;quot;aba&amp;quot;, p.chain{p.lex_char(&#039;a&#039;), p.lex_char(&#039;b&#039;), p.lex_char(&#039;a&#039;), p.lex_char(&#039;a&#039;)}) =&amp;gt; nope&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
parser.chain = chain&lt;br /&gt;
&lt;br /&gt;
-- higher order function that can parse an alternative between several non terminals.&lt;br /&gt;
-- returns the state of the first match&lt;br /&gt;
local function alternative(funcs)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		local i = 1&lt;br /&gt;
		while i &amp;lt;= #funcs do&lt;br /&gt;
			local res = funcs[i](state)&lt;br /&gt;
			if res then &lt;br /&gt;
				return res &lt;br /&gt;
			end&lt;br /&gt;
			i=i+1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests : &lt;br /&gt;
p.parse(&amp;quot;a&amp;quot;, p.alternative{p.lex_char(&#039;a&#039;), p.lex_char(&#039;b&#039;)}) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;b&amp;quot;, p.alternative{p.lex_char(&#039;a&#039;), p.lex_char(&#039;b&#039;)}) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;c&amp;quot;, p.alternative{p.lex_char(&#039;a&#039;), p.lex_char(&#039;b&#039;)}) =&amp;gt; nope&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
parser.alternative = alternative&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function star(parsing_func)&lt;br /&gt;
	local function star_rec(state, acc, i)&lt;br /&gt;
&lt;br /&gt;
		local res = chain{&lt;br /&gt;
			parsing_func,&lt;br /&gt;
			idop(&lt;br /&gt;
				function (stat)&lt;br /&gt;
					table.insert(acc, stat.node)&lt;br /&gt;
				end&lt;br /&gt;
			),&lt;br /&gt;
		}(state)&lt;br /&gt;
	&lt;br /&gt;
		if res then&lt;br /&gt;
			return star_rec(res, acc, i + 1)&lt;br /&gt;
		else&lt;br /&gt;
			return state, acc&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return function(state)&lt;br /&gt;
		if state then&lt;br /&gt;
			local acc = {}&lt;br /&gt;
			local result, acc2 = star_rec(state, acc, 1)&lt;br /&gt;
			result.acc = acc2&lt;br /&gt;
			return result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests: p.parse(&amp;quot;aaab&amp;quot;, p.chain{p.star(p.lex_char(&amp;quot;a&amp;quot;)), p.lex_char(&amp;quot;b&amp;quot;)}) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;b&amp;quot;, p.chain{p.star(p.lex_char(&amp;quot;a&amp;quot;)), p.lex_char(&amp;quot;b&amp;quot;)}) =&amp;gt; yes&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
parser.star = star&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function plus(parsing_func)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		local firstnode&lt;br /&gt;
		local acc&lt;br /&gt;
		&lt;br /&gt;
		return chain{&lt;br /&gt;
			parsing_func,&lt;br /&gt;
			idop(&lt;br /&gt;
				function(state)&lt;br /&gt;
					firstnode = state.node&lt;br /&gt;
				end&lt;br /&gt;
			),&lt;br /&gt;
			star(parsing_func),&lt;br /&gt;
			function(state)&lt;br /&gt;
				acc = state.acc&lt;br /&gt;
				table.insert(acc, 1, firstnode)&lt;br /&gt;
				state.acc = acc&lt;br /&gt;
				return state&lt;br /&gt;
			end&lt;br /&gt;
		}(state)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
res = p.parse(&amp;quot;aaab&amp;quot;, &lt;br /&gt;
              p.chain{&lt;br /&gt;
                    p.plus(&lt;br /&gt;
                        p.chain{ &lt;br /&gt;
                              p.lex_char(&amp;quot;a&amp;quot;), &lt;br /&gt;
                              p.statemodop(function(res) res.node=&amp;quot;a&amp;quot; ;  return res; end)&lt;br /&gt;
                        }&lt;br /&gt;
                    ), &lt;br /&gt;
                    p.lex_char(&amp;quot;b&amp;quot;)&lt;br /&gt;
              }&lt;br /&gt;
             )&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
parser.plus = plus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests : &lt;br /&gt;
p.parse(&amp;quot;a&amp;quot;, p.chain{p.lex_char(&#039;a&#039;), p.idop(function (state) end )}) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;ab&amp;quot;, p.chain{p.lex_char(&#039;a&#039;), p.idop(function (state) end), p.lex_char(&#039;b&#039;) }) =&amp;gt; nope&lt;br /&gt;
p.parse(&amp;quot;ab&amp;quot;, p.chain{p.lex_char(&#039;a&#039;), p.idop(function (state) end), p.lex_char(&#039;a&#039;) }) =&amp;gt; nope&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function questionmark(parsing_func)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		local node = nil&lt;br /&gt;
		local res=alternative{&lt;br /&gt;
			chain{&lt;br /&gt;
				parsing_func,&lt;br /&gt;
				idop(function (stat) node = stat.node end)&lt;br /&gt;
			},&lt;br /&gt;
			lex_epsilon&lt;br /&gt;
		}(state)&lt;br /&gt;
		res.node = node&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.questionmark = questionmark&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- main function that launches the parsing&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
parser.parse = function (string, base_parsing_function)&lt;br /&gt;
	local state = {}&lt;br /&gt;
	&lt;br /&gt;
	state.newstate = {}&lt;br /&gt;
	state.newstate.str = string&lt;br /&gt;
	state.newstate.pos = 1&lt;br /&gt;
	&lt;br /&gt;
	local res_node = nil&lt;br /&gt;
		&lt;br /&gt;
	local res = chain{&lt;br /&gt;
		base_parsing_function,&lt;br /&gt;
		idop(function(stat) res_node = stat.node end),&lt;br /&gt;
		lexer.eat_blanks&lt;br /&gt;
	}(state)&lt;br /&gt;
&lt;br /&gt;
	if res and res.newstate.str==&amp;quot;&amp;quot; then&lt;br /&gt;
		return res_node&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- a function to create an AST node which represents an nary operator. Could parse an expression on the form « 1 + 2 + 3 + 4 » and return a « sum » AST node wich have a list of nodes for operands sum([number(1), number(2), number(3) number(4) ) in our example&lt;br /&gt;
&lt;br /&gt;
local function nary_op_parser (&lt;br /&gt;
	first_node_parser,      -- a parser that parses only the first element of the operation (« 1 »)&lt;br /&gt;
	next_nodes_parser,      -- a parser that parses the infix operation and one node ( « + 2 » and the subsequent)&lt;br /&gt;
	acc_result_node_creator,-- a function that takes the lists of the node generated by the previous parser and generates the final node&lt;br /&gt;
	single_creator          -- optional, a function corner case when the expression has no actual operator one element like « 1 » (one might just want to get a « number(1) » AST node instead of « sum([number(1)]) »&lt;br /&gt;
	                        -- if that’s not the wanted behavior, provide a function to build a node specific for that case. Takes a node, the result of the first_node_parser .&lt;br /&gt;
)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		local res&lt;br /&gt;
		local firstNode&lt;br /&gt;
		&lt;br /&gt;
		res = chain{&lt;br /&gt;
			first_node_parser,&lt;br /&gt;
			idop(&lt;br /&gt;
				function(state)&lt;br /&gt;
					firstNode = state.node &lt;br /&gt;
				end&lt;br /&gt;
			),&lt;br /&gt;
			star(&lt;br /&gt;
				next_nodes_parser&lt;br /&gt;
			)&lt;br /&gt;
		}(state)&lt;br /&gt;
		&lt;br /&gt;
		if res then &lt;br /&gt;
			if res.acc and #(res.acc) &amp;gt; 0 then &lt;br /&gt;
				local acc = res.acc&lt;br /&gt;
				table.insert(acc, 1, firstNode)&lt;br /&gt;
				res.node = acc_result_node_creator(acc)&lt;br /&gt;
			else&lt;br /&gt;
				single_creator = single_creator or function(node) return node end&lt;br /&gt;
				res.node = single_creator(firstNode)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			res.acc = nil&lt;br /&gt;
			return res&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parser.nary_op_parser = nary_op_parser&lt;br /&gt;
&lt;br /&gt;
return parser&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Langue/Data&amp;diff=352</id>
		<title>Module:Langue/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Langue/Data&amp;diff=352"/>
		<updated>2024-09-20T14:26:42Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local data = { -- -------------------------------------------------------------------- -- --   liste des caractéristiques des langues triées par leur code IETF   -- -- -------------------------------------------------------------------- --  -- a aa  = { &amp;quot;afar&amp;quot;, page = &amp;quot;Afar (langue)&amp;quot; }, aaa = { &amp;quot;ghotuo&amp;quot; }, aat = { &amp;quot;arvanitique&amp;quot;, &amp;quot;arvanatika&amp;quot; }, ab  = { &amp;quot;abkhaze&amp;quot; }, abe = { &amp;quot;abénaqui&amp;quot; }, abq = { &amp;quot;abaza&amp;quot;, page = &amp;quot;Abaza (langue)&amp;quot; }, abs = { &amp;quot;malais d&amp;#039;Amboine&amp;quot; },... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local data = {&lt;br /&gt;
-- -------------------------------------------------------------------- --&lt;br /&gt;
--   liste des caractéristiques des langues triées par leur code IETF   --&lt;br /&gt;
-- -------------------------------------------------------------------- --&lt;br /&gt;
&lt;br /&gt;
-- a&lt;br /&gt;
aa  = { &amp;quot;afar&amp;quot;, page = &amp;quot;Afar (langue)&amp;quot; },&lt;br /&gt;
aaa = { &amp;quot;ghotuo&amp;quot; },&lt;br /&gt;
aat = { &amp;quot;arvanitique&amp;quot;, &amp;quot;arvanatika&amp;quot; },&lt;br /&gt;
ab  = { &amp;quot;abkhaze&amp;quot; },&lt;br /&gt;
abe = { &amp;quot;abénaqui&amp;quot; },&lt;br /&gt;
abq = { &amp;quot;abaza&amp;quot;, page = &amp;quot;Abaza (langue)&amp;quot; },&lt;br /&gt;
abs = { &amp;quot;malais d&#039;Amboine&amp;quot; },&lt;br /&gt;
acd = { &amp;quot;gikyode&amp;quot; },&lt;br /&gt;
ace = { &amp;quot;aceh&amp;quot;, page = &amp;quot;Aceh (langue)&amp;quot; },&lt;br /&gt;
ach = { &amp;quot;acholi&amp;quot;, page = &amp;quot;Acholi (langue)&amp;quot; },&lt;br /&gt;
acm = { &amp;quot;arabe mésopotamien&amp;quot; },&lt;br /&gt;
acx = { &amp;quot;arabe omanais&amp;quot; },&lt;br /&gt;
acy = { &amp;quot;arabe chypriote&amp;quot; },&lt;br /&gt;
acz = { &amp;quot;acheron&amp;quot;, page = &amp;quot;Acheron (langue)&amp;quot; },&lt;br /&gt;
ade = { &amp;quot;adele&amp;quot;, page = &amp;quot;Adele (langue)&amp;quot; },&lt;br /&gt;
ads = { &amp;quot;langue des signes d&#039;Adamorobe&amp;quot;, signe = true },&lt;br /&gt;
ady = { &amp;quot;adyguéen&amp;quot;, page = &amp;quot;Adyguéen (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;ady-Cyrl&amp;quot;] = { &amp;quot;adyguéen en écriture cyrillique&amp;quot;, page = &amp;quot;Adyguéen (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;ady-Latn&amp;quot;] = { &amp;quot;adyguéen en écriture latine&amp;quot;, page = &amp;quot;Adyguéen (langue)&amp;quot; },&lt;br /&gt;
ae  = { &amp;quot;avestique&amp;quot;, rtl = true },&lt;br /&gt;
aeb = { &amp;quot;arabe tunisien&amp;quot;, rtl = true },&lt;br /&gt;
[&amp;quot;aeb-Arab&amp;quot;] = { &amp;quot;arabe tunisien en écriture arabe&amp;quot;, page = &amp;quot;Arabe tunisien&amp;quot;, rtl = true },&lt;br /&gt;
[&amp;quot;aeb-Latn&amp;quot;] = { &amp;quot;arabe tunisien en écriture latine&amp;quot;, page = &amp;quot;Arabe tunisien&amp;quot; },&lt;br /&gt;
aec = { &amp;quot;arabe saïdi&amp;quot;, rtl = true },&lt;br /&gt;
aed = { &amp;quot;langue des signes argentine&amp;quot;, signe = true },&lt;br /&gt;
aen = { &amp;quot;langue des signes arménienne&amp;quot;, signe = true },&lt;br /&gt;
af  = { &amp;quot;afrikaans&amp;quot; },&lt;br /&gt;
afe = { &amp;quot;putukwam&amp;quot; },&lt;br /&gt;
afg = { &amp;quot;langue des signes afghane&amp;quot;, signe = true },&lt;br /&gt;
agr = { &amp;quot;aguaruna&amp;quot; },&lt;br /&gt;
ags = { &amp;quot;esimbi&amp;quot; },&lt;br /&gt;
aha = { &amp;quot;ahanta&amp;quot; },&lt;br /&gt;
ahs = { &amp;quot;ashe&amp;quot;, page = &amp;quot;Ashe (langue)&amp;quot; },&lt;br /&gt;
aht = { &amp;quot;ahtna&amp;quot;, page = &amp;quot;Ahtna (langue)&amp;quot; },&lt;br /&gt;
aia = { &amp;quot;arosi&amp;quot; },&lt;br /&gt;
aib = { &amp;quot;aïnou&amp;quot;, page = &amp;quot;Aïnou (langue ouïghoure)&amp;quot; },&lt;br /&gt;
ail = { &amp;quot;aimele&amp;quot; },&lt;br /&gt;
ain = { &amp;quot;aïnou&amp;quot;, page = &amp;quot;Aïnou (langue du Japon)&amp;quot; },&lt;br /&gt;
aio = { &amp;quot;aiton&amp;quot;, page = &amp;quot;Aiton (langue)&amp;quot; },&lt;br /&gt;
aiw = { &amp;quot;aari&amp;quot;, page = &amp;quot;Aari (langue)&amp;quot; },&lt;br /&gt;
ak  = { &amp;quot;akan&amp;quot;, page = &amp;quot;Akan (langue)&amp;quot; },&lt;br /&gt;
akk = { &amp;quot;akkadien&amp;quot;, &amp;quot;assyrien&amp;quot; }, -- note : ce code est aussi utilisé pour l&#039;assyrien, qui représente l&#039;un des rameaux linguistiques de l&#039;akkadien&lt;br /&gt;
akp = { &amp;quot;siwu&amp;quot; },&lt;br /&gt;
akr = { &amp;quot;araki&amp;quot;, page = &amp;quot;Araki (langue)&amp;quot; },&lt;br /&gt;
aks = { &amp;quot;akaselem&amp;quot; },&lt;br /&gt;
ale = { &amp;quot;aléoute&amp;quot; },&lt;br /&gt;
alf = { &amp;quot;alege&amp;quot; },&lt;br /&gt;
alg = { &amp;quot;langues algonquiennes&amp;quot; },&lt;br /&gt;
all = { &amp;quot;allar&amp;quot; },&lt;br /&gt;
aln = { &amp;quot;guègue&amp;quot; },&lt;br /&gt;
alq = { &amp;quot;algonquin&amp;quot; },&lt;br /&gt;
als = { &amp;quot;tosque&amp;quot; },    -- note : le code de l&#039;alémanique est gsw (mais als.wikipedia est en alémanique)&lt;br /&gt;
alt = { &amp;quot;altaï&amp;quot;, page = &amp;quot;Altaï (langue)&amp;quot; },&lt;br /&gt;
am  = { &amp;quot;amharique&amp;quot; },&lt;br /&gt;
ams = { &amp;quot;amami du Sud&amp;quot; },&lt;br /&gt;
amu = { &amp;quot;amuzgo de Guerrero&amp;quot; },&lt;br /&gt;
an  = { &amp;quot;aragonais&amp;quot; },&lt;br /&gt;
anc = { &amp;quot;angas&amp;quot;, page = &amp;quot;Angas (langue)&amp;quot; },&lt;br /&gt;
ang = { &amp;quot;anglo-saxon&amp;quot;, page = &amp;quot;Vieil anglais&amp;quot; },&lt;br /&gt;
ani = { &amp;quot;andi&amp;quot; },&lt;br /&gt;
ank = { &amp;quot;goemai&amp;quot;, page = &amp;quot;Goemai (langue)&amp;quot; },&lt;br /&gt;
anm = { &amp;quot;anal&amp;quot;, page = &amp;quot;Anal (langue)&amp;quot; },&lt;br /&gt;
ann = { &amp;quot;obolo&amp;quot; },&lt;br /&gt;
anp = { &amp;quot;angika&amp;quot; },&lt;br /&gt;
anw = { &amp;quot;anang&amp;quot;, page = &amp;quot;Anang (langue)&amp;quot; },&lt;br /&gt;
any = { &amp;quot;agni&amp;quot;, page = &amp;quot;Agni (langue)&amp;quot; },&lt;br /&gt;
aoc = { &amp;quot;pemon&amp;quot; },&lt;br /&gt;
apc = { &amp;quot;arabe levantin septentrional&amp;quot; },&lt;br /&gt;
apt = { &amp;quot;apatani&amp;quot;, page = &amp;quot;Apatani (langue)&amp;quot; },&lt;br /&gt;
apw = { &amp;quot;apache occidental&amp;quot; },&lt;br /&gt;
ar  = { &amp;quot;arabe&amp;quot;, rtl = true },&lt;br /&gt;
arb = { &amp;quot;arabe standard moderne&amp;quot;, rtl = true },&lt;br /&gt;
arc = { &amp;quot;araméen&amp;quot;, rtl = true },&lt;br /&gt;
arh = { &amp;quot;arhuaco&amp;quot;, &amp;quot;ika&amp;quot; },&lt;br /&gt;
arn = { &amp;quot;mapudungun&amp;quot;, &amp;quot;mapuche&amp;quot; },&lt;br /&gt;
arp = { &amp;quot;arapaho&amp;quot;, page = &amp;quot;Arapaho (langue)&amp;quot;},&lt;br /&gt;
arq = { &amp;quot;arabe algérien&amp;quot;, rtl = true },&lt;br /&gt;
ary = { &amp;quot;arabe marocain&amp;quot;, rtl = true },&lt;br /&gt;
arz = { &amp;quot;arabe égyptien&amp;quot;, rtl = true },&lt;br /&gt;
as  = { &amp;quot;assamais&amp;quot; },&lt;br /&gt;
asa = { &amp;quot;asu&amp;quot;, &amp;quot;chasu&amp;quot;, page = &amp;quot;Asu (langue)&amp;quot; },&lt;br /&gt;
asb = { &amp;quot;assiniboine&amp;quot;, page = &amp;quot;Assiniboine (langue)&amp;quot; },&lt;br /&gt;
ase = { &amp;quot;langue des signes américaine&amp;quot;, signe = true },&lt;br /&gt;
asf = { &amp;quot;langue des signes australienne&amp;quot;, signe = true },&lt;br /&gt;
asp = { &amp;quot;langue des signes algérienne&amp;quot;, signe = true },&lt;br /&gt;
asq = { &amp;quot;langue des signes autrichienne&amp;quot;, signe = true },&lt;br /&gt;
ast = { &amp;quot;asturien&amp;quot; },&lt;br /&gt;
asw = { &amp;quot;langues des signes aborigènes australiennes&amp;quot;, signe = true },&lt;br /&gt;
atj = { &amp;quot;atikamekw&amp;quot;, page = &amp;quot;Atikamekw (langue)&amp;quot; },&lt;br /&gt;
ats = { &amp;quot;atsina&amp;quot;, page = &amp;quot;Atsina (langue)&amp;quot; },&lt;br /&gt;
auq = { &amp;quot;anus&amp;quot;, &amp;quot;korur&amp;quot;, page = &amp;quot;Anus (langue)&amp;quot; },&lt;br /&gt;
aus = { &amp;quot;langues aborigènes d&#039;Australie&amp;quot; },&lt;br /&gt;
aut = { &amp;quot;austral&amp;quot;, page = &amp;quot;Langues australes&amp;quot; },&lt;br /&gt;
av  = { &amp;quot;avar&amp;quot; },&lt;br /&gt;
avk = { &amp;quot;kotava&amp;quot; },&lt;br /&gt;
awa = { &amp;quot;awadhi&amp;quot; },&lt;br /&gt;
awc = { &amp;quot;cicipu&amp;quot; },&lt;br /&gt;
ay  = { &amp;quot;aymara&amp;quot; },&lt;br /&gt;
ayl = { &amp;quot;arabe libyen&amp;quot;, rtl = true },&lt;br /&gt;
az  = { &amp;quot;azéri&amp;quot; },&lt;br /&gt;
[&amp;quot;az-Cyrl&amp;quot;] = { &amp;quot;azéri en écriture cyrillique&amp;quot;, page = &amp;quot;Azéri&amp;quot; },&lt;br /&gt;
azb = { &amp;quot;azéri du Sud&amp;quot;, page = &amp;quot;Azéri&amp;quot; },&lt;br /&gt;
azj = { &amp;quot;azéri du Nord&amp;quot;, page = &amp;quot;Azéri&amp;quot; },&lt;br /&gt;
-- b&lt;br /&gt;
ba  = { &amp;quot;bachkir&amp;quot; },&lt;br /&gt;
bal = { &amp;quot;baloutchi&amp;quot; , &amp;quot;baloutche&amp;quot; },&lt;br /&gt;
ban = { &amp;quot;balinais&amp;quot;, page = &amp;quot;Balinais (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;ban-bali&amp;quot;] = { &amp;quot;balinais en écriture balinaise&amp;quot;, page = &amp;quot;Écriture balinaise&amp;quot; },&lt;br /&gt;
[&amp;quot;bat-smg&amp;quot;] = { &amp;quot;samogitien&amp;quot;, invalide = &amp;quot;sgs&amp;quot; }, -- Wikipédia en samogitien.&lt;br /&gt;
bar = { &amp;quot;bavarois&amp;quot; },&lt;br /&gt;
bas = { &amp;quot;bassa&amp;quot;, page = &amp;quot;Bassa (langue bantoue)&amp;quot; },&lt;br /&gt;
bav = { &amp;quot;babungo&amp;quot;, page = &amp;quot;Babungo (langue)&amp;quot; },&lt;br /&gt;
bax = { &amp;quot;bamoun&amp;quot;, page = &amp;quot;Bamoun (langue)&amp;quot; },&lt;br /&gt;
bba = { &amp;quot;bariba&amp;quot;, page = &amp;quot;Bariba (langue)&amp;quot; },&lt;br /&gt;
bbc = { &amp;quot;batak toba&amp;quot; },&lt;br /&gt;
[&amp;quot;bbc-Latn&amp;quot;] = { &amp;quot;batak toba en écriture latine&amp;quot;, page = &amp;quot;Batak toba&amp;quot; },&lt;br /&gt;
bbj = { &amp;quot;ghomalaʼ&amp;quot; },&lt;br /&gt;
bbk = { &amp;quot;kejom&amp;quot;, &amp;quot;babanki&amp;quot; },&lt;br /&gt;
bbo = { &amp;quot;bobo&amp;quot;, page = &amp;quot;Bobo (langue)&amp;quot; },&lt;br /&gt;
bdm = { &amp;quot;buduma&amp;quot;, page = &amp;quot;Buduma (langue)&amp;quot; },&lt;br /&gt;
bdr = { &amp;quot;bajau de la côte occidentale&amp;quot; },&lt;br /&gt;
bdu = { &amp;quot;oroko&amp;quot;, page = &amp;quot;Oroko (langue)&amp;quot; },&lt;br /&gt;
bcc = { &amp;quot;baloutchi méridional&amp;quot;, page = &amp;quot;Baloutchi&amp;quot; },&lt;br /&gt;
bci = { &amp;quot;baoulé&amp;quot;, page = &amp;quot;Baoulé (langue)&amp;quot; },&lt;br /&gt;
bcl = { &amp;quot;bicolano central&amp;quot; },&lt;br /&gt;
bcq = { &amp;quot;gimira&amp;quot; },&lt;br /&gt;
bcr = { &amp;quot;babine&amp;quot;, page = &amp;quot;Babine (langue)&amp;quot; },&lt;br /&gt;
bcs = { &amp;quot;humono&amp;quot; },&lt;br /&gt;
bde = { &amp;quot;bade&amp;quot;, page = &amp;quot;Bade (langue)&amp;quot; },&lt;br /&gt;
be  = { &amp;quot;biélorusse&amp;quot; },&lt;br /&gt;
[&amp;quot;be-tarask&amp;quot;] = { &amp;quot;biélorusse (tarashkevitsa)&amp;quot;, &amp;quot;biélorusse tarashkevitsa&amp;quot;, &amp;quot;taraskievica&amp;quot;, &amp;quot;tarashkevitsa&amp;quot;, &amp;quot;taraškievica&amp;quot;, &amp;quot;be-x-old&amp;quot;, page = &amp;quot;Orthographe classique biélorusse&amp;quot; },&lt;br /&gt;
bec = { &amp;quot;iceve-maci&amp;quot;, &amp;quot;iceve&amp;quot; },&lt;br /&gt;
beh = { &amp;quot;byali&amp;quot; },&lt;br /&gt;
bej = { &amp;quot;bedja&amp;quot;, page = &amp;quot;Bedja (langue)&amp;quot; },&lt;br /&gt;
beo = { &amp;quot;beami&amp;quot; },&lt;br /&gt;
bem = { &amp;quot;bemba&amp;quot;, page = &amp;quot;Bemba (langue)&amp;quot; },&lt;br /&gt;
beq = { &amp;quot;beembe&amp;quot;, page = &amp;quot;Beembe (langue)&amp;quot; },&lt;br /&gt;
ber = { &amp;quot;berbère&amp;quot;, &amp;quot;tamazight&amp;quot;, page = &amp;quot;Langues berbères&amp;quot; },&lt;br /&gt;
bew = { &amp;quot;betawi&amp;quot;, page = &amp;quot;Betawi (langue)&amp;quot; },&lt;br /&gt;
bfd = { &amp;quot;bafut&amp;quot;, &amp;quot;bafout&amp;quot;, page = &amp;quot;Bafut (langue)&amp;quot; },&lt;br /&gt;
bfi = { &amp;quot;langue des signes britannique&amp;quot;, signe = true },&lt;br /&gt;
bfj = { &amp;quot;bafanji&amp;quot;, page = &amp;quot;Bafanji (langue)&amp;quot; },&lt;br /&gt;
bfk = { &amp;quot;langue des signes de Ban Khor&amp;quot;, signe = true },&lt;br /&gt;
bg  = { &amp;quot;bulgare&amp;quot; },&lt;br /&gt;
bgc = { &amp;quot;haryanvi&amp;quot; },&lt;br /&gt;
bgn = { &amp;quot;baloutchi occidental&amp;quot;, page = &amp;quot;Baloutchi&amp;quot; },&lt;br /&gt;
bh  = { &amp;quot;langues biharies&amp;quot;, &amp;quot;bihari&amp;quot; },&lt;br /&gt;
bhj = { &amp;quot;bahing&amp;quot; },&lt;br /&gt;
bho = { &amp;quot;bhodjpouri&amp;quot; },&lt;br /&gt;
bi  = { &amp;quot;bichelamar&amp;quot; },&lt;br /&gt;
bib = { &amp;quot;bissa&amp;quot;, page = &amp;quot;Bissa (langue)&amp;quot; },&lt;br /&gt;
bid = { &amp;quot;bidiyo&amp;quot; },&lt;br /&gt;
bim = { &amp;quot;bimoba&amp;quot;, page = &amp;quot;Moba (langue)&amp;quot; },&lt;br /&gt;
bin = { &amp;quot;édo&amp;quot;, page = &amp;quot;Édo (langue)&amp;quot; },&lt;br /&gt;
biv = { &amp;quot;birifor du Sud&amp;quot; },&lt;br /&gt;
bjn = { &amp;quot;banjar&amp;quot;, page = &amp;quot;Banjar (langue)&amp;quot; },&lt;br /&gt;
bjw = { &amp;quot;bakwé&amp;quot;, page = &amp;quot;Bakwé (langue)&amp;quot; },&lt;br /&gt;
bkt = { &amp;quot;boloki&amp;quot; },&lt;br /&gt;
bky = { &amp;quot;bekwarra&amp;quot;, page = &amp;quot;Bekwarra (langue)&amp;quot; },&lt;br /&gt;
blc = { &amp;quot;nuxalk&amp;quot;, page = &amp;quot;Nuxalk (langue)&amp;quot; },&lt;br /&gt;
blk = { &amp;quot;pa&#039;o&amp;quot;, &amp;quot;karen pa&#039;o&amp;quot;, page = &amp;quot;Pa&#039;o (langue)&amp;quot; },&lt;br /&gt;
blo = { &amp;quot;anii&amp;quot;, page = &amp;quot;Anii (langue)&amp;quot; },&lt;br /&gt;
bm  = { &amp;quot;bambara&amp;quot; },&lt;br /&gt;
bmb = { &amp;quot;bembe&amp;quot;, page = &amp;quot;Bembe (langue)&amp;quot; },&lt;br /&gt;
bmi = { &amp;quot;barma&amp;quot;, page = &amp;quot;Barma (langue)&amp;quot; },&lt;br /&gt;
bn  = { &amp;quot;bengali&amp;quot; },&lt;br /&gt;
bnc = { &amp;quot;bontok&amp;quot; },&lt;br /&gt;
bni = { &amp;quot;bobangi&amp;quot;, page = &amp;quot;Bobangi (langue)&amp;quot; },&lt;br /&gt;
bnm = { &amp;quot;batanga&amp;quot;, page = &amp;quot;Batanga (langue)&amp;quot; },&lt;br /&gt;
bnn = { &amp;quot;bunun&amp;quot;, page = &amp;quot;Bunun (langue)&amp;quot; },&lt;br /&gt;
bo  = { &amp;quot;tibétain&amp;quot; },&lt;br /&gt;
[&amp;quot;bo-Latn&amp;quot;] = { &amp;quot;tibétain en écriture latine&amp;quot;, page = &amp;quot;Tibétain&amp;quot; },&lt;br /&gt;
bog = { &amp;quot;langue des signes malienne&amp;quot;, signe = true },&lt;br /&gt;
boh = { &amp;quot;boma&amp;quot;, page = &amp;quot;Boma (langue)&amp;quot; },&lt;br /&gt;
bol = { &amp;quot;bole&amp;quot;, page = &amp;quot;Bole (langue)&amp;quot; },&lt;br /&gt;
boo = { &amp;quot;bozo de Tiemacèwè&amp;quot;, page = &amp;quot;Bozo (langue)&amp;quot; },&lt;br /&gt;
bov = { &amp;quot;tuwuli&amp;quot; },&lt;br /&gt;
bot = { &amp;quot;bongo&amp;quot;, page = &amp;quot;Bongo (langue)&amp;quot; },&lt;br /&gt;
bou = { &amp;quot;bondei&amp;quot;, page = &amp;quot;Bondei (langue)&amp;quot; },&lt;br /&gt;
boz = { &amp;quot;bozo de Tiéyaxo&amp;quot;, &amp;quot;bozo-tigemaxo&amp;quot;, page = &amp;quot;Bozo (langue)&amp;quot; },&lt;br /&gt;
bpy = { &amp;quot;bishnupriya manipuri&amp;quot; },&lt;br /&gt;
bqc = { &amp;quot;boko&amp;quot;, page = &amp;quot;Boko (langue mandée)&amp;quot; },&lt;br /&gt;
bqi = { &amp;quot;bakhtiari&amp;quot; },&lt;br /&gt;
bqn = { &amp;quot;langue des signes bulgare&amp;quot;, signe = true },&lt;br /&gt;
bqp = { &amp;quot;busa&amp;quot;, page = &amp;quot;Busa (langue)&amp;quot; },&lt;br /&gt;
bqv = { &amp;quot;koro wachi&amp;quot;, &amp;quot;begbere-ejar&amp;quot; },&lt;br /&gt;
bqy = { &amp;quot;langue des signes de Bengkala&amp;quot;, signe = true },&lt;br /&gt;
br  = { &amp;quot;breton&amp;quot; },&lt;br /&gt;
bra = { &amp;quot;braj bhasha&amp;quot; },&lt;br /&gt;
brf = { &amp;quot;bera&amp;quot;, page = &amp;quot;Bera (langue)&amp;quot; },&lt;br /&gt;
brh = { &amp;quot;brahoui&amp;quot; },&lt;br /&gt;
brx = { &amp;quot;bodo&amp;quot; },&lt;br /&gt;
bs  = { &amp;quot;bosnien&amp;quot;, &amp;quot;bosniaque&amp;quot; },&lt;br /&gt;
bsk = { &amp;quot;bourouchaski&amp;quot; },&lt;br /&gt;
btm = { &amp;quot;batak mandailing&amp;quot;, &amp;quot;mandailing&amp;quot; },&lt;br /&gt;
bto = { &amp;quot;bicol de Rinconada&amp;quot;, page = &amp;quot;Langues bicol&amp;quot; },&lt;br /&gt;
bua = { &amp;quot;bouriate&amp;quot; },&lt;br /&gt;
[&amp;quot;bua-Cyrl&amp;quot;] = { &amp;quot;bouriate en écriture cyrillique&amp;quot; },&lt;br /&gt;
bud = { &amp;quot;ntcham&amp;quot; },&lt;br /&gt;
buf = { &amp;quot;bushong&amp;quot;, page = &amp;quot;Bushong (langue)&amp;quot; },&lt;br /&gt;
bug = { &amp;quot;bugi&amp;quot;, page = &amp;quot;Bugi (langue)&amp;quot; },&lt;br /&gt;
buu = { &amp;quot;budu&amp;quot;, page = &amp;quot;Budu (langue)&amp;quot; },&lt;br /&gt;
buw = { &amp;quot;pove&amp;quot;, page = &amp;quot;Pove (langue)&amp;quot; },&lt;br /&gt;
bvl = { &amp;quot;langue des signes bolivienne&amp;quot;, signe = true },&lt;br /&gt;
bwq = { &amp;quot;bobo&amp;quot;, page = &amp;quot;Bobo (langue)&amp;quot; },&lt;br /&gt;
bxm = { &amp;quot;bouriate de Mongolie&amp;quot;, page = &amp;quot;Bouriate&amp;quot; },&lt;br /&gt;
bxr = { &amp;quot;bouriate de Russie&amp;quot;, page = &amp;quot;Bouriate&amp;quot; },&lt;br /&gt;
bxu = { &amp;quot;bouriate de Chine&amp;quot;, page = &amp;quot;Bouriate&amp;quot; },&lt;br /&gt;
byi = { &amp;quot;buyu&amp;quot;, page = &amp;quot;Buyu (langue)&amp;quot; },&lt;br /&gt;
byn = { &amp;quot;bilen&amp;quot; },&lt;br /&gt;
byp = { &amp;quot;bumaji&amp;quot; },&lt;br /&gt;
byv = { &amp;quot;medumba&amp;quot; },&lt;br /&gt;
bzd = { &amp;quot;bribri&amp;quot; },&lt;br /&gt;
bze = { &amp;quot;bozo de Jenaama&amp;quot;, page = &amp;quot;Bozo (langue)&amp;quot; },&lt;br /&gt;
bzs = { &amp;quot;langue des signes brésilienne&amp;quot;, signe = true },&lt;br /&gt;
-- c&lt;br /&gt;
ca  = { &amp;quot;catalan&amp;quot; },&lt;br /&gt;
caa = { &amp;quot;ch&#039;orti&#039;&amp;quot; },&lt;br /&gt;
cab = { &amp;quot;garifuna&amp;quot;, page = &amp;quot;Garifuna (langue)&amp;quot; },&lt;br /&gt;
cad = { &amp;quot;caddo&amp;quot;, page = &amp;quot;Caddo (langue)&amp;quot; },&lt;br /&gt;
cag = { &amp;quot;nivaklé&amp;quot; },&lt;br /&gt;
cak = { &amp;quot;cakchiquel&amp;quot;, page = &amp;quot;Cakchiquel (langue)&amp;quot; },&lt;br /&gt;
cal = { &amp;quot;carolinien&amp;quot; },&lt;br /&gt;
car = { &amp;quot;kali&#039;na&amp;quot;, page = &amp;quot;Kali&#039;na (langue)&amp;quot; },&lt;br /&gt;
cax = { &amp;quot;chiquitano&amp;quot; },&lt;br /&gt;
cay = { &amp;quot;cayuga&amp;quot;, page = &amp;quot;Cayuga (langue)&amp;quot; },&lt;br /&gt;
ctl = { &amp;quot;chinantèque de Tlacoatzintepec&amp;quot; },&lt;br /&gt;
cto = { &amp;quot;emberá catío&amp;quot; },&lt;br /&gt;
cvn = { &amp;quot;chinantèque de Valle Nacional&amp;quot; },&lt;br /&gt;
cbg = { &amp;quot;chimila&amp;quot; },&lt;br /&gt;
cbk = { &amp;quot;chavacano&amp;quot; },&lt;br /&gt;
[&amp;quot;cbk-zam&amp;quot;] = { &amp;quot;chavacano de Zamboanga&amp;quot;, page = &amp;quot;Chavacano&amp;quot;, invalide = &amp;quot;cbk&amp;quot; }, -- cbk-zam.Wikipédia cbk=cebuano, zam=miahuatlán zapotec&lt;br /&gt;
cco = { &amp;quot;chinantèque de Comaltepec&amp;quot; },&lt;br /&gt;
cdo = { &amp;quot;mindong&amp;quot; },&lt;br /&gt;
cds = { &amp;quot;langue des signes tchadienne&amp;quot;, signe = true },&lt;br /&gt;
ce  = { &amp;quot;tchétchène&amp;quot; },&lt;br /&gt;
cea = { &amp;quot;chehalis inférieur&amp;quot; },&lt;br /&gt;
ceb = { &amp;quot;cebuano&amp;quot; },&lt;br /&gt;
cel = { &amp;quot;celte&amp;quot;, page = &amp;quot;Langues celtiques&amp;quot; },&lt;br /&gt;
cfm = { &amp;quot;falam&amp;quot;, page = &amp;quot;Falam (langue)&amp;quot; },&lt;br /&gt;
ch  = { &amp;quot;chamorro&amp;quot; },&lt;br /&gt;
chd = { &amp;quot;chontal des hauts-plateaux&amp;quot; },&lt;br /&gt;
chg = { &amp;quot;tchaghataï&amp;quot;, page = &amp;quot;Tchaghataï (langue)&amp;quot;},&lt;br /&gt;
chj = { &amp;quot;chinantèque d&#039;Ojitlán&amp;quot; },&lt;br /&gt;
chk = { &amp;quot;chuuk&amp;quot;, page = &amp;quot;Chuuk (langue)&amp;quot; },&lt;br /&gt;
chn = { &amp;quot;jargon chinook&amp;quot; },&lt;br /&gt;
cho = { &amp;quot;chacta&amp;quot;, page = &amp;quot;Chacta (langue)&amp;quot; },&lt;br /&gt;
chp = { &amp;quot;chipewyan&amp;quot;, page = &amp;quot;Chipewyan (langue)&amp;quot; },&lt;br /&gt;
chm = { &amp;quot;mari&amp;quot;, page = &amp;quot;Mari (langue)&amp;quot; },&lt;br /&gt;
chr = { &amp;quot;cherokee&amp;quot;, page = &amp;quot;Cherokee (langue)&amp;quot; },&lt;br /&gt;
chy = { &amp;quot;cheyenne&amp;quot;, page = &amp;quot;Cheyenne (langue)&amp;quot; },&lt;br /&gt;
chz = { &amp;quot;chinantèque d&#039;Ozumacín&amp;quot; },&lt;br /&gt;
chw = { &amp;quot;chuwabu&amp;quot; },&lt;br /&gt;
cia = { &amp;quot;cia-cia&amp;quot; },&lt;br /&gt;
cib = { &amp;quot;ci-gbe&amp;quot; },&lt;br /&gt;
cim = { &amp;quot;cimbre&amp;quot; },&lt;br /&gt;
cjh = { &amp;quot;chehalis supérieur&amp;quot; },&lt;br /&gt;
cjk = { &amp;quot;tchokwé&amp;quot;, page = &amp;quot;Tchokwé (langue)&amp;quot; },&lt;br /&gt;
cjp = { &amp;quot;cabécar&amp;quot; },&lt;br /&gt;
cjs = { &amp;quot;chor&amp;quot; },&lt;br /&gt;
ckb = { &amp;quot;sorani&amp;quot;, rtl = true },&lt;br /&gt;
ckt = { &amp;quot;tchouktche&amp;quot; },&lt;br /&gt;
clc = { &amp;quot;chilcotin&amp;quot;, page = &amp;quot;Chilcotin (langue)&amp;quot; },&lt;br /&gt;
clm = { &amp;quot;klallam&amp;quot; },&lt;br /&gt;
cmi = { &amp;quot;emberá chamí&amp;quot; },&lt;br /&gt;
cmn = { &amp;quot;mandarin&amp;quot;, page = &amp;quot;Mandarin (langue)&amp;quot; },&lt;br /&gt;
cmo = { &amp;quot;mnong central&amp;quot; },&lt;br /&gt;
cnr = { &amp;quot;monténégrin&amp;quot; },&lt;br /&gt;
[&amp;quot;cnr-Cyrl&amp;quot;] = { &amp;quot;monténégrin en écriture cyrillique&amp;quot; },&lt;br /&gt;
[&amp;quot;cnr-Latn&amp;quot;] = { &amp;quot;monténégrin en écriture latine&amp;quot; },&lt;br /&gt;
cnu = { &amp;quot;chenoui&amp;quot; },&lt;br /&gt;
cnx = { &amp;quot;cornique&amp;quot; },&lt;br /&gt;
co  = { &amp;quot;corse&amp;quot;, page = &amp;quot;Corse (langue)&amp;quot; },&lt;br /&gt;
coe = { &amp;quot;koreguaje&amp;quot; },&lt;br /&gt;
coh = { &amp;quot;chonyi&amp;quot; },&lt;br /&gt;
cok = { &amp;quot;cora de Santa Teresa&amp;quot;, page = &amp;quot;Cora (langue)&amp;quot; },&lt;br /&gt;
col = { &amp;quot;columbia-wenatchi&amp;quot; },&lt;br /&gt;
com = { &amp;quot;comanche&amp;quot;, page = &amp;quot;Comanche (langue)&amp;quot; },&lt;br /&gt;
con = { &amp;quot;cofán&amp;quot; },&lt;br /&gt;
coo = { &amp;quot;comox&amp;quot;, page = &amp;quot;Comox (langue)&amp;quot; },&lt;br /&gt;
cop = { &amp;quot;copte&amp;quot; },&lt;br /&gt;
cow = { &amp;quot;cowlitz&amp;quot;, page = &amp;quot;Cowlitz (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;cpe-011&amp;quot;] = { &amp;quot;pidgin ouest-africain&amp;quot; },&lt;br /&gt;
cpf = { &amp;quot;créoles à base lexicale française&amp;quot; },&lt;br /&gt;
cps = { &amp;quot;capiznon&amp;quot; },&lt;br /&gt;
cpx = { &amp;quot;puxian&amp;quot; },&lt;br /&gt;
[&amp;quot;cpx-Hans&amp;quot;] = { &amp;quot;puxian en caractères chinois simplifiés&amp;quot;, page = &amp;quot;Puxian&amp;quot; },&lt;br /&gt;
[&amp;quot;cpx-Hant&amp;quot;] = { &amp;quot;puxian en caractères chinois traditionnels&amp;quot;, page = &amp;quot;Puxian&amp;quot; },&lt;br /&gt;
[&amp;quot;cpx-Latn&amp;quot;] = { &amp;quot;puxian en écriture latine&amp;quot;, page = &amp;quot;Puxian&amp;quot; },&lt;br /&gt;
cr  = { &amp;quot;cri&amp;quot;, page = &amp;quot;Cri (langue)&amp;quot; },&lt;br /&gt;
crg = { &amp;quot;métchif&amp;quot; },&lt;br /&gt;
crh = { &amp;quot;tatar de Crimée&amp;quot; },&lt;br /&gt;
[&amp;quot;crh-Cyrl&amp;quot;] = { &amp;quot;tatar de Crimée en écriture cyrillique&amp;quot;, page = &amp;quot;Tatar de Crimée&amp;quot; },&lt;br /&gt;
[&amp;quot;crh-Latn&amp;quot;] = { &amp;quot;tatar de Crimée en écriture latine&amp;quot;, page = &amp;quot;Tatar de Crimée&amp;quot; },&lt;br /&gt;
[&amp;quot;crh-RO&amp;quot;] = { &amp;quot;tatar de Crimée de Roumanie&amp;quot;, page = &amp;quot;Tatar de Crimée&amp;quot; },&lt;br /&gt;
crn = { &amp;quot;cora d&#039;El Nayar&amp;quot;, page = &amp;quot;Cora (langue)&amp;quot; },&lt;br /&gt;
crx = { &amp;quot;dakelh&amp;quot;, page = &amp;quot;Dakelh (langue)&amp;quot; },&lt;br /&gt;
crs = { &amp;quot;créole seychellois&amp;quot; },&lt;br /&gt;
cs  = { &amp;quot;tchèque&amp;quot;, &amp;quot;czech&amp;quot; },&lt;br /&gt;
csb = { &amp;quot;cachoube&amp;quot; },&lt;br /&gt;
csc = { &amp;quot;langue des signes catalane&amp;quot;, signe = true },&lt;br /&gt;
csd = { &amp;quot;langue des signes de Chiangmai&amp;quot;, &amp;quot;langue des signes de chiangmai&amp;quot;, signe = true },&lt;br /&gt;
cse = { &amp;quot;langue des signes tchèque&amp;quot;, signe = true },&lt;br /&gt;
csf = { &amp;quot;langue des signes cubaine&amp;quot;, signe = true },&lt;br /&gt;
csg = { &amp;quot;langue des signes chilienne&amp;quot;, signe = true },&lt;br /&gt;
csk = { &amp;quot;diola-kasa&amp;quot; },&lt;br /&gt;
csl = { &amp;quot;langue des signes chinoise&amp;quot;, signe = true },&lt;br /&gt;
csn = { &amp;quot;langue des signes colombienne&amp;quot;, signe = true },&lt;br /&gt;
csq = { &amp;quot;langue des signes croate&amp;quot;, signe = true },&lt;br /&gt;
csr = { &amp;quot;langue des signes costaricienne&amp;quot;, signe = true },&lt;br /&gt;
css = { &amp;quot;costanoan du Sud &amp;quot;, page = &amp;quot;Langues costanoanes&amp;quot; },&lt;br /&gt;
cte = { &amp;quot;chinantèque de Tepinapa&amp;quot; },&lt;br /&gt;
ctg = { &amp;quot;chittagonien&amp;quot; },&lt;br /&gt;
ctu = { &amp;quot;ch&#039;ol&amp;quot; },&lt;br /&gt;
cu  = { &amp;quot;slavon d&#039;église&amp;quot; },&lt;br /&gt;
cuc = { &amp;quot;chinantèque d&#039;Usila&amp;quot; },&lt;br /&gt;
cui = { &amp;quot;cuiba&amp;quot; },&lt;br /&gt;
cv  = { &amp;quot;tchouvache&amp;quot;, &amp;quot;chv&amp;quot; },&lt;br /&gt;
cy  = { &amp;quot;gallois&amp;quot; },&lt;br /&gt;
cz  = { &amp;quot;tchèque&amp;quot;, invalide = &amp;quot;cs&amp;quot; },&lt;br /&gt;
-- d&lt;br /&gt;
da  = { &amp;quot;danois&amp;quot;, &amp;quot;danish&amp;quot; },&lt;br /&gt;
dag = { &amp;quot;dagbani&amp;quot; },&lt;br /&gt;
dak = { &amp;quot;dakota&amp;quot;, page = &amp;quot;Dakota (langue)&amp;quot; },&lt;br /&gt;
dar = { &amp;quot;dargwa&amp;quot; },&lt;br /&gt;
dbp = { &amp;quot;ɗuwai&amp;quot;, &amp;quot;duwai&amp;quot; },&lt;br /&gt;
ddo = { &amp;quot;tsez&amp;quot; },&lt;br /&gt;
de  = { &amp;quot;allemand&amp;quot;, &amp;quot;german&amp;quot; },&lt;br /&gt;
[&amp;quot;de-AT&amp;quot;] = { &amp;quot;allemand autrichien&amp;quot;, &amp;quot;österreichisches deutsch&amp;quot; },&lt;br /&gt;
[&amp;quot;de-CH&amp;quot;] = { &amp;quot;allemand standard suisse&amp;quot;, &amp;quot;schweizer hochdeutsch&amp;quot; },&lt;br /&gt;
[&amp;quot;de-formal&amp;quot;] = { &amp;quot;allemand formel&amp;quot;, page = &amp;quot;Allemand&amp;quot;, invalide = &amp;quot;de&amp;quot; },&lt;br /&gt;
deg = { &amp;quot;degema&amp;quot;, page = &amp;quot;Degema (langue)&amp;quot; },&lt;br /&gt;
dga = { &amp;quot;dagaare&amp;quot;, page = &amp;quot;Dagaare (langue)&amp;quot; },&lt;br /&gt;
dgl = { &amp;quot;andaandi&amp;quot; },&lt;br /&gt;
dgr = { &amp;quot;tlicho&amp;quot;, page = &amp;quot;Tlicho (langue)&amp;quot; },&lt;br /&gt;
dig = { &amp;quot;digo&amp;quot;, page = &amp;quot;Digo (langue)&amp;quot; },&lt;br /&gt;
din = { &amp;quot;dinka&amp;quot;, page = &amp;quot;Dinka (langue)&amp;quot; },&lt;br /&gt;
diq = { &amp;quot;zazaki&amp;quot; },&lt;br /&gt;
diz = { &amp;quot;dzing&amp;quot;, page = &amp;quot;Dzing (langue)&amp;quot; },&lt;br /&gt;
djk = { &amp;quot;nenge tongo&amp;quot;, page = &amp;quot;Langue des Aluku, des Ndjuka et des Paramaka&amp;quot; },&lt;br /&gt;
[&amp;quot;djk-aluku&amp;quot;] = { &amp;quot;aluku&amp;quot;, page = &amp;quot;Aluku (langue)&amp;quot; },&lt;br /&gt;
dlg = { &amp;quot;dolgane&amp;quot; },&lt;br /&gt;
dlm = { &amp;quot;dalmate&amp;quot;},&lt;br /&gt;
dng = { &amp;quot;doungane&amp;quot;, page = &amp;quot;Doungane (langue)&amp;quot; },&lt;br /&gt;
dnj = { &amp;quot;dan&amp;quot;, page = &amp;quot;Dan (langue)&amp;quot; },&lt;br /&gt;
dno = { &amp;quot;ndrulo&amp;quot; },&lt;br /&gt;
don = { &amp;quot;toura&amp;quot;, page = &amp;quot;Toura (langue océanienne)&amp;quot; },&lt;br /&gt;
dop = { &amp;quot;lokpa&amp;quot;, page = &amp;quot;Lokpa (langue)&amp;quot; },&lt;br /&gt;
doq = { &amp;quot;langue des signes dominicaine&amp;quot;, signe = true },&lt;br /&gt;
dos = { &amp;quot;dogosé&amp;quot; },&lt;br /&gt;
dow = { &amp;quot;dowayo&amp;quot;, page = &amp;quot;Dowayo (langue)&amp;quot; },&lt;br /&gt;
drs = { &amp;quot;gedeo&amp;quot;, page = &amp;quot;Gedeo (langue)&amp;quot; },&lt;br /&gt;
dsb = { &amp;quot;bas sorabe&amp;quot;, &amp;quot;bas-sorabe&amp;quot; },&lt;br /&gt;
dse = { &amp;quot;langue des signes néerlandaise&amp;quot;, signe = true },&lt;br /&gt;
dsh = { &amp;quot;daasanach&amp;quot; },&lt;br /&gt;
dsl = { &amp;quot;langue des signes danoise&amp;quot;, signe = true },&lt;br /&gt;
dta = { &amp;quot;daur&amp;quot;, page = &amp;quot;Daur (langue)&amp;quot; },&lt;br /&gt;
dtd = { &amp;quot;ditinaht&amp;quot; },&lt;br /&gt;
dtp = { &amp;quot;dusun&amp;quot; },&lt;br /&gt;
dty = { &amp;quot;dotyali&amp;quot; },&lt;br /&gt;
dua = { &amp;quot;duala&amp;quot;, page = &amp;quot;Duala (langue)&amp;quot; },&lt;br /&gt;
duf = { &amp;quot;drubea&amp;quot; },&lt;br /&gt;
dum = { &amp;quot;moyen néerlandais&amp;quot; },&lt;br /&gt;
dv  = { &amp;quot;maldivien&amp;quot;, &amp;quot;div&amp;quot;, rtl = true },&lt;br /&gt;
dya = { &amp;quot;dyan&amp;quot;, page = &amp;quot;Dyan (langue)&amp;quot; },&lt;br /&gt;
dyi = { &amp;quot;djimini&amp;quot;, page = &amp;quot;Djimini (langue)&amp;quot; },&lt;br /&gt;
dyo = { &amp;quot;diola-fogny&amp;quot; },&lt;br /&gt;
dyu = { &amp;quot;dioula&amp;quot;, page = &amp;quot;Dioula (langue)&amp;quot; },&lt;br /&gt;
dz  = { &amp;quot;dzongkha&amp;quot; },&lt;br /&gt;
-- e&lt;br /&gt;
ebo = { &amp;quot;téké du centre&amp;quot; },&lt;br /&gt;
ebr = { &amp;quot;tchaman&amp;quot; },&lt;br /&gt;
ecs = { &amp;quot;langue des signes équatorienne&amp;quot;, signe = true },&lt;br /&gt;
ee  = { &amp;quot;éwé&amp;quot;, &amp;quot;ewe&amp;quot;, page = &amp;quot;Éwé (langue)&amp;quot; },&lt;br /&gt;
efi = { &amp;quot;efik&amp;quot;, &amp;quot;Efik (langue)&amp;quot; },&lt;br /&gt;
egl = { &amp;quot;émilien&amp;quot;, page = &amp;quot;Émilien (langue)&amp;quot; },&lt;br /&gt;
egy = { &amp;quot;égyptien ancien&amp;quot; },&lt;br /&gt;
ekk = { &amp;quot;estonien standard&amp;quot;, page = &amp;quot;Estonien&amp;quot; },&lt;br /&gt;
ekp = { &amp;quot;ekpeye&amp;quot; },&lt;br /&gt;
eky = { &amp;quot;kayah de l&#039;Est&amp;quot;, page = &amp;quot;Kayah (langue)&amp;quot; },&lt;br /&gt;
el  = { &amp;quot;grec moderne&amp;quot; },&lt;br /&gt;
eme = { &amp;quot;émérillon&amp;quot; },&lt;br /&gt;
eml = { &amp;quot;émilien-romagnol&amp;quot; },       -- eml.Wikipédia&lt;br /&gt;
emp = { &amp;quot;emberá darién&amp;quot; },&lt;br /&gt;
emx = { &amp;quot;erromintxela&amp;quot; },&lt;br /&gt;
en  = { &amp;quot;anglais&amp;quot;, &amp;quot;english&amp;quot; },&lt;br /&gt;
[&amp;quot;en-CA&amp;quot;] = { &amp;quot;anglais canadien&amp;quot; },&lt;br /&gt;
[&amp;quot;en-GB&amp;quot;] = { &amp;quot;anglais britannique&amp;quot; },&lt;br /&gt;
[&amp;quot;en-US&amp;quot;] = { &amp;quot;anglais américain&amp;quot; },&lt;br /&gt;
enb = { &amp;quot;markweta&amp;quot; },&lt;br /&gt;
enf = { &amp;quot;énètse des forêts&amp;quot;},&lt;br /&gt;
enh = { &amp;quot;énètse de la toundra&amp;quot;},&lt;br /&gt;
enm = { &amp;quot;moyen anglais&amp;quot; },&lt;br /&gt;
enn = { &amp;quot;egene&amp;quot; },&lt;br /&gt;
eo  = { &amp;quot;espéranto&amp;quot; },&lt;br /&gt;
es  = { &amp;quot;espagnol&amp;quot;, &amp;quot;spanish&amp;quot; },&lt;br /&gt;
[&amp;quot;es-419&amp;quot;] = { &amp;quot;espagnol d&#039;Amérique latine&amp;quot;, page = &amp;quot;Espagnol&amp;quot; },&lt;br /&gt;
[&amp;quot;es-formal&amp;quot;] = { &amp;quot;espagnol formel&amp;quot;, page = &amp;quot;Espagnol&amp;quot;, invalide = &amp;quot;es&amp;quot; },&lt;br /&gt;
[&amp;quot;es-MX&amp;quot;] = { &amp;quot;espagnol du Mexique&amp;quot;, page = &amp;quot;Espagnol&amp;quot; },&lt;br /&gt;
esl = { &amp;quot;langue des signes égyptienne&amp;quot;, signe = true },&lt;br /&gt;
esn = { &amp;quot;langue des signes salvadorienne&amp;quot;, signe = true },&lt;br /&gt;
eso = { &amp;quot;langue des signes estonienne&amp;quot;, signe = true },&lt;br /&gt;
et  = { &amp;quot;estonien&amp;quot; },&lt;br /&gt;
etc = { &amp;quot;malécite-passamaquoddy&amp;quot; },&lt;br /&gt;
eth = { &amp;quot;langue des signes éthiopienne&amp;quot;, signe = true },&lt;br /&gt;
eto = { &amp;quot;eton&amp;quot;, page = &amp;quot;Eton (langue bantoue)&amp;quot; },&lt;br /&gt;
ets = { &amp;quot;etsako&amp;quot; },&lt;br /&gt;
ett = { &amp;quot;étrusque&amp;quot; },&lt;br /&gt;
etu = { &amp;quot;ejagham&amp;quot;, page = &amp;quot;Ejagham (langue)&amp;quot; },&lt;br /&gt;
eu  = { &amp;quot;basque&amp;quot; },&lt;br /&gt;
eve = { &amp;quot;évène&amp;quot; },&lt;br /&gt;
evn = { &amp;quot;evenki&amp;quot; },&lt;br /&gt;
ext = { &amp;quot;estrémègne&amp;quot; },&lt;br /&gt;
-- f&lt;br /&gt;
fa  = { &amp;quot;persan&amp;quot;, &amp;quot;farsi&amp;quot;, rtl = true },&lt;br /&gt;
fan = { &amp;quot;fang&amp;quot;, page = &amp;quot;Fang (langue)&amp;quot; },&lt;br /&gt;
fat = { &amp;quot;fanti&amp;quot;, page = &amp;quot;Fanti (langue)&amp;quot; },&lt;br /&gt;
fcs = { &amp;quot;langue des signes québécoise&amp;quot;, signe = true },&lt;br /&gt;
ff  = { &amp;quot;peul&amp;quot; },&lt;br /&gt;
ffm = { &amp;quot;peul de Maasina&amp;quot; },&lt;br /&gt;
fi  = { &amp;quot;finnois&amp;quot;, &amp;quot;finnish&amp;quot;, &amp;quot;finlandais&amp;quot; },&lt;br /&gt;
fia = { &amp;quot;nobiin&amp;quot; },&lt;br /&gt;
fil = { &amp;quot;philippin&amp;quot;, &amp;quot;filipino&amp;quot; },&lt;br /&gt;
fit = { &amp;quot;meänkieli&amp;quot; },&lt;br /&gt;
fj  = { &amp;quot;fidjien&amp;quot; },&lt;br /&gt;
fkv = { &amp;quot;kvène&amp;quot; },&lt;br /&gt;
fla = { &amp;quot;kalispel&amp;quot; },&lt;br /&gt;
fli = { &amp;quot;fali de Mubi&amp;quot;, page = &amp;quot;Langues fali&amp;quot; },&lt;br /&gt;
flr = { &amp;quot;fuliru&amp;quot; },&lt;br /&gt;
fo  = { &amp;quot;féroïen&amp;quot; },&lt;br /&gt;
fon = { &amp;quot;fon&amp;quot;, page = &amp;quot;Fon (langue)&amp;quot; },&lt;br /&gt;
fr  = { &amp;quot;français&amp;quot;, &amp;quot;française&amp;quot;, &amp;quot;french&amp;quot;, &amp;quot;francais&amp;quot; },&lt;br /&gt;
[&amp;quot;fr-gallo&amp;quot;] = { &amp;quot;gallo&amp;quot; },&lt;br /&gt;
[&amp;quot;fra-gal&amp;quot;] = { &amp;quot;gallo&amp;quot;, invalide = &amp;quot;fr-gallo&amp;quot; },&lt;br /&gt;
[&amp;quot;fr-BE&amp;quot;] = { &amp;quot;français de Belgique&amp;quot; },&lt;br /&gt;
[&amp;quot;fr-CA&amp;quot;] = { &amp;quot;français canadien&amp;quot; },&lt;br /&gt;
[&amp;quot;fr-CH&amp;quot;] = { &amp;quot;français de Suisse&amp;quot; },&lt;br /&gt;
[&amp;quot;fr-FR&amp;quot;] = { &amp;quot;français de France&amp;quot; },&lt;br /&gt;
[&amp;quot;fr1835&amp;quot;] = { &amp;quot;françois (1600-1835)&amp;quot;, &amp;quot;françois&amp;quot;, page = &amp;quot;Réforme de l&#039;orthographe française de 1835&amp;quot;, invalide = &amp;quot;fr&amp;quot; }, -- code non standard&lt;br /&gt;
frc = { &amp;quot;français louisianais&amp;quot; },&lt;br /&gt;
frk = { &amp;quot;vieux-francique&amp;quot; },&lt;br /&gt;
frm = { &amp;quot;moyen français (1400-1600)&amp;quot;, page = &amp;quot;Moyen français&amp;quot; },&lt;br /&gt;
fro = { &amp;quot;ancien français (842-1400)&amp;quot;, page = &amp;quot;Ancien français&amp;quot; },&lt;br /&gt;
frp = { &amp;quot;francoprovençal&amp;quot;, &amp;quot;arpitan&amp;quot;, &amp;quot;franco-provençal&amp;quot; },&lt;br /&gt;
frr = { &amp;quot;frison septentrional&amp;quot; },&lt;br /&gt;
frs = { &amp;quot;bas saxon de Frise orientale&amp;quot; },&lt;br /&gt;
fse = { &amp;quot;langue des signes finnoise&amp;quot;, signe = true },&lt;br /&gt;
fsl = { &amp;quot;langue des signes française&amp;quot;, signe = true, invalide = &amp;quot;lsf&amp;quot; },&lt;br /&gt;
fss = { &amp;quot;langue des signes finno-suédoise&amp;quot;, signe = true },&lt;br /&gt;
fub = { &amp;quot;peul de l&#039;Adamaoua&amp;quot; },&lt;br /&gt;
fuc = { &amp;quot;pulaar&amp;quot; },&lt;br /&gt;
fud = { &amp;quot;futunien&amp;quot; },&lt;br /&gt;
fue = { &amp;quot;peul de Borgou&amp;quot; },&lt;br /&gt;
fuf = { &amp;quot;pular&amp;quot; },&lt;br /&gt;
fuh = { &amp;quot;peul du Niger occidental&amp;quot; },&lt;br /&gt;
fui = { &amp;quot;peul de Bagirmi&amp;quot; },&lt;br /&gt;
fuq = { &amp;quot;peul du Niger centre-oriental&amp;quot; },&lt;br /&gt;
fur = { &amp;quot;frioulan&amp;quot; },&lt;br /&gt;
fuv = { &amp;quot;peul nigérian&amp;quot; },&lt;br /&gt;
fvr = { &amp;quot;four&amp;quot;, page = &amp;quot;Four (langue)&amp;quot; },&lt;br /&gt;
fy  = { &amp;quot;frison occidental&amp;quot;, &amp;quot;frison&amp;quot; },&lt;br /&gt;
-- g&lt;br /&gt;
ga  = { &amp;quot;irlandais&amp;quot;, &amp;quot;gaélique irlandais&amp;quot; },&lt;br /&gt;
gaa = { &amp;quot;ga&amp;quot;, &amp;quot;gã&amp;quot;, page = &amp;quot;Ga (langue)&amp;quot; },&lt;br /&gt;
gag = { &amp;quot;gagaouze&amp;quot; },&lt;br /&gt;
gal = { &amp;quot;galoli&amp;quot; },&lt;br /&gt;
gan = { &amp;quot;gan&amp;quot;, &amp;quot;kan&amp;quot;, page = &amp;quot;Gan (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;gan-Hans&amp;quot;] = { &amp;quot;gan en caractères chinois simplifiés&amp;quot;, page = &amp;quot;Gan (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;gan-Hant&amp;quot;] = { &amp;quot;gan en caractères chinois traditionnels&amp;quot;, page = &amp;quot;Gan (langue)&amp;quot; },&lt;br /&gt;
gaw = { &amp;quot;nobonob&amp;quot; },&lt;br /&gt;
gay = { &amp;quot;gayo&amp;quot;, page = &amp;quot;Gayo (langue)&amp;quot; },&lt;br /&gt;
gbp = { &amp;quot;gbeya&amp;quot; },&lt;br /&gt;
gbq = { &amp;quot;bozom&amp;quot; },&lt;br /&gt;
gbw = { &amp;quot;gubbi gubbi&amp;quot; },&lt;br /&gt;
gcf = { &amp;quot;créole guadeloupéen&amp;quot; },&lt;br /&gt;
gcr = { &amp;quot;créole guyanais&amp;quot; },&lt;br /&gt;
gd  = { &amp;quot;gaélique écossais&amp;quot;, &amp;quot;écossais&amp;quot; },&lt;br /&gt;
gde = { &amp;quot;gude&amp;quot;, page = &amp;quot;Gude (langue)&amp;quot; },&lt;br /&gt;
gds = { &amp;quot;langue des signes de Ghandruk&amp;quot;, signe = true },&lt;br /&gt;
gej = { &amp;quot;gen&amp;quot; },&lt;br /&gt;
gem = { &amp;quot;langues germaniques&amp;quot; },&lt;br /&gt;
gev = { &amp;quot;geviya&amp;quot;, page = &amp;quot;Geviya (langue)&amp;quot; },&lt;br /&gt;
gez = { &amp;quot;guèze&amp;quot; },&lt;br /&gt;
gid = { &amp;quot;guidar&amp;quot;, page = &amp;quot;Guidar (langue)&amp;quot; },&lt;br /&gt;
gil = { &amp;quot;gilbertin&amp;quot; },&lt;br /&gt;
git = { &amp;quot;gitksan&amp;quot; },&lt;br /&gt;
gju = { &amp;quot;gojri&amp;quot;, page=&amp;quot;Gojri&amp;quot; },&lt;br /&gt;
gl  = { &amp;quot;galicien&amp;quot; },&lt;br /&gt;
gld = { &amp;quot;nanaï&amp;quot; },&lt;br /&gt;
glk = { &amp;quot;guilaki&amp;quot;, rtl = true },&lt;br /&gt;
gmh = { &amp;quot;moyen haut allemand&amp;quot; },&lt;br /&gt;
[&amp;quot;gmh-hes&amp;quot;] = { &amp;quot;hessois&amp;quot;, invalide = &amp;quot;de&amp;quot; },      -- code linguistlist, gmh=middle high german (ca. 1050-1500), hes=invalide&lt;br /&gt;
gmy = { &amp;quot;mycénien&amp;quot; },&lt;br /&gt;
gn  = { &amp;quot;guarani&amp;quot;, page = &amp;quot;Guarani (langue)&amp;quot; },&lt;br /&gt;
gog = { &amp;quot;gogo&amp;quot;, page = &amp;quot;Gogo (langue)&amp;quot; },&lt;br /&gt;
goh = { &amp;quot;vieux haut allemand&amp;quot; },&lt;br /&gt;
gom = { &amp;quot;konkani&amp;quot; },&lt;br /&gt;
[&amp;quot;gom-Deva&amp;quot;] = { &amp;quot;konkani en écriture devanagari&amp;quot;, page = &amp;quot;Konkani&amp;quot; },&lt;br /&gt;
[&amp;quot;gom-Latn&amp;quot;] = { &amp;quot;konkani en écriture latine&amp;quot;, page = &amp;quot;Konkani&amp;quot; },&lt;br /&gt;
gor = { &amp;quot;gorontalo&amp;quot;, page = &amp;quot;Gorontalo (langue)&amp;quot; },&lt;br /&gt;
gos = { &amp;quot;groningois&amp;quot; },&lt;br /&gt;
got = { &amp;quot;gotique&amp;quot; },&lt;br /&gt;
gpe = { &amp;quot;pidgin ghanéen&amp;quot; },&lt;br /&gt;
gr  = { &amp;quot;grec&amp;quot;, invalide = &amp;quot;el&amp;quot; },&lt;br /&gt;
grb = { &amp;quot;grebo&amp;quot;, page = &amp;quot;Grebo (langue)&amp;quot; },&lt;br /&gt;
grc = { &amp;quot;grec ancien&amp;quot; },&lt;br /&gt;
grk = { &amp;quot;grec&amp;quot; },&lt;br /&gt;
gse = { &amp;quot;langue des signes ghanéenne&amp;quot;, signe = true },&lt;br /&gt;
gsg = { &amp;quot;langue des signes allemande&amp;quot;, signe = true },&lt;br /&gt;
gsm = { &amp;quot;langue des signes guatémaltèque&amp;quot;, signe = true },&lt;br /&gt;
gss = { &amp;quot;langue des signes grecque&amp;quot;, signe = true },&lt;br /&gt;
gsw = { &amp;quot;alémanique&amp;quot; },&lt;br /&gt;
[&amp;quot;gsw-CH&amp;quot;] = { &amp;quot;suisse allemand&amp;quot; },&lt;br /&gt;
[&amp;quot;gsw-FR&amp;quot;] = { &amp;quot;alsacien&amp;quot; },&lt;br /&gt;
gu  = { &amp;quot;gujarati&amp;quot; },&lt;br /&gt;
guc = { &amp;quot;wayuu&amp;quot;, page = &amp;quot;Wayuu (langue)&amp;quot; },&lt;br /&gt;
guh = { &amp;quot;sikuani&amp;quot; },&lt;br /&gt;
guk = { &amp;quot;gumuz&amp;quot;, page = &amp;quot;Gumuz (langue)&amp;quot; },&lt;br /&gt;
guo = { &amp;quot;guayabero&amp;quot; },&lt;br /&gt;
gus = { &amp;quot;langue des signes guinéenne&amp;quot;, signe = true },&lt;br /&gt;
gux = { &amp;quot;gourmantché&amp;quot;, page = &amp;quot;Gourmantché (langue)&amp;quot; },&lt;br /&gt;
guu = { &amp;quot;yanomamö&amp;quot; },&lt;br /&gt;
guw = { &amp;quot;gun-gbe&amp;quot; },&lt;br /&gt;
guz = { &amp;quot;gusii&amp;quot;, page = &amp;quot;Gusii (langue)&amp;quot; },&lt;br /&gt;
gv  = { &amp;quot;mannois&amp;quot;, &amp;quot;manx&amp;quot; },&lt;br /&gt;
gvl = { &amp;quot;gulay&amp;quot; },&lt;br /&gt;
gwe = { &amp;quot;gweno&amp;quot; },&lt;br /&gt;
gwi = { &amp;quot;gwichʼin&amp;quot;, page = &amp;quot;Gwich&#039;in (langue)&amp;quot; },&lt;br /&gt;
gwt = { &amp;quot;gawar-bati&amp;quot; },&lt;br /&gt;
gya = { &amp;quot;gbaya du Nord-Ouest&amp;quot; },&lt;br /&gt;
-- h&lt;br /&gt;
ha  = { &amp;quot;haoussa&amp;quot; },&lt;br /&gt;
hab = { &amp;quot;langue des signes de Hanoï&amp;quot;, &amp;quot;langue des signes de hanoi&amp;quot;, signe = true },&lt;br /&gt;
haf = { &amp;quot;langue des signes de Haïphong&amp;quot;, &amp;quot;langue des signes de haiphong&amp;quot;, signe = true },&lt;br /&gt;
hai = { &amp;quot;haïda&amp;quot;, page = &amp;quot;Haïda (langue)&amp;quot; },&lt;br /&gt;
hak = { &amp;quot;hakka&amp;quot;, page = &amp;quot;Hakka (langue)&amp;quot; },&lt;br /&gt;
han = { &amp;quot;hangaza&amp;quot; },&lt;br /&gt;
har = { &amp;quot;harari&amp;quot;, page = &amp;quot;Harari (langue)&amp;quot; },&lt;br /&gt;
has = { &amp;quot;haisla&amp;quot; },&lt;br /&gt;
haw = { &amp;quot;hawaïen&amp;quot;, &amp;quot;hawaien&amp;quot; },&lt;br /&gt;
hay = { &amp;quot;haya&amp;quot;, page = &amp;quot;Haya (langue)&amp;quot; },&lt;br /&gt;
haz = { &amp;quot;hazara&amp;quot; },&lt;br /&gt;
hbo = { &amp;quot;hébreu biblique&amp;quot; },&lt;br /&gt;
hds = { &amp;quot;langue des signes hondurienne&amp;quot;, signe = true },&lt;br /&gt;
he  = { &amp;quot;hébreu&amp;quot;, &amp;quot;iw&amp;quot;, rtl = true },&lt;br /&gt;
hei = { &amp;quot;heiltsuk-oowekyala&amp;quot; },&lt;br /&gt;
hem = { &amp;quot;hemba&amp;quot;, &amp;quot;kihemba&amp;quot;, page = &amp;quot;Hemba (langue)&amp;quot; },&lt;br /&gt;
hess = { &amp;quot;hessois&amp;quot;, invalide = &amp;quot;de&amp;quot; },   -- code non IETF ni ISO 639, code linguistlist gmh-hes&lt;br /&gt;
hi  = { &amp;quot;hindi&amp;quot; },&lt;br /&gt;
hif = { &amp;quot;hindi des Fidji&amp;quot; },&lt;br /&gt;
[&amp;quot;hif-Latn&amp;quot;] = { &amp;quot;hindi des Fidji en écriture latine&amp;quot;, page = &amp;quot;Hindi des Fidji&amp;quot; },&lt;br /&gt;
hil = { &amp;quot;hiligaïnon&amp;quot; },&lt;br /&gt;
hit = { &amp;quot;hittite&amp;quot;, page = &amp;quot;Hittite (langue)&amp;quot; },&lt;br /&gt;
hiw = { &amp;quot;hiw&amp;quot;, page = &amp;quot;Hiw (langue)&amp;quot; },&lt;br /&gt;
hka = { &amp;quot;kahe&amp;quot;, page = &amp;quot;Kahe (langue)&amp;quot; },&lt;br /&gt;
hks = { &amp;quot;langue des signes de Hong Kong&amp;quot;, signe = true },&lt;br /&gt;
hmd = { &amp;quot;a hmao&amp;quot; },&lt;br /&gt;
hmk = { &amp;quot;ye-maek&amp;quot;, page = &amp;quot;Ye-maek (langue)&amp;quot; },&lt;br /&gt;
hnd = { &amp;quot;hindko du Sud&amp;quot;, page = &amp;quot;hindko&amp;quot; },&lt;br /&gt;
hno = { &amp;quot;hindko du Nord&amp;quot;, page = &amp;quot;hindko&amp;quot; },&lt;br /&gt;
ho  = { &amp;quot;hiri motu&amp;quot; },&lt;br /&gt;
hoc = { &amp;quot;ho&amp;quot;, page = &amp;quot;Ho (langue)&amp;quot; },&lt;br /&gt;
hoo = { &amp;quot;holoholo&amp;quot;, page = &amp;quot;Holoholo (langue)&amp;quot; },&lt;br /&gt;
hop = { &amp;quot;hopi&amp;quot;, page = &amp;quot;Hopi (langue)&amp;quot; },&lt;br /&gt;
hos = { &amp;quot;langue des signes de Ho Chi Min Ville&amp;quot;, signe = true },&lt;br /&gt;
hps = { &amp;quot;langue des signes hawaïenne&amp;quot;, signe = true },&lt;br /&gt;
hr  = { &amp;quot;croate&amp;quot;, &amp;quot;croatian&amp;quot; },&lt;br /&gt;
hrx = { &amp;quot;hunsrik&amp;quot; },&lt;br /&gt;
hsb = { &amp;quot;haut sorabe&amp;quot; },&lt;br /&gt;
hsh = { &amp;quot;langue des signes hongroise&amp;quot;, signe = true },&lt;br /&gt;
hsl = { &amp;quot;langue des signes haoussa&amp;quot;, signe = true },&lt;br /&gt;
hsn = { &amp;quot;xiang&amp;quot;, page = &amp;quot;Xiang (langue)&amp;quot; },&lt;br /&gt;
ht  = { &amp;quot;créole haïtien&amp;quot; },&lt;br /&gt;
hu  = { &amp;quot;hongrois&amp;quot;, &amp;quot;hungarian&amp;quot; },&lt;br /&gt;
[&amp;quot;hu-formal&amp;quot;]  = { &amp;quot;hongrois formel&amp;quot;, page = &amp;quot;Hongrois&amp;quot; },&lt;br /&gt;
hur = { &amp;quot;halkomelem&amp;quot; },&lt;br /&gt;
hus = { &amp;quot;huastèque&amp;quot;, page = &amp;quot;Huastèque (langue)&amp;quot; },&lt;br /&gt;
hwc = { &amp;quot;créole hawaïen&amp;quot; },&lt;br /&gt;
hy  = { &amp;quot;arménien&amp;quot; },&lt;br /&gt;
hyx = { &amp;quot;arménien&amp;quot; , invalide = &amp;quot;hy&amp;quot;  },&lt;br /&gt;
hyw = { &amp;quot;arménien occidental&amp;quot; },&lt;br /&gt;
hz  = { &amp;quot;héréro&amp;quot;, page = &amp;quot;Héréro (langue)&amp;quot; },&lt;br /&gt;
-- i&lt;br /&gt;
ia  = { &amp;quot;interlingua&amp;quot;, page = &amp;quot;Interlingua (IALA)&amp;quot; },&lt;br /&gt;
ibb = { &amp;quot;ibibio&amp;quot;, page = &amp;quot;Ibibio (langue)&amp;quot; },&lt;br /&gt;
iby = { &amp;quot;ibani&amp;quot;, page = &amp;quot;Kalabari (langue)&amp;quot; },&lt;br /&gt;
ica = { &amp;quot;ede ica&amp;quot;, &amp;quot;itcha&amp;quot; },&lt;br /&gt;
icl = { &amp;quot;langue des signes islandaise&amp;quot;, signe = true },&lt;br /&gt;
id  = { &amp;quot;indonésien&amp;quot; },&lt;br /&gt;
ie  = { &amp;quot;interlingue&amp;quot;, &amp;quot;occidental (interlingue)&amp;quot;, &amp;quot;occidental&amp;quot; , page = &amp;quot;Interlingue&amp;quot; },&lt;br /&gt;
ife = { &amp;quot;ifè&amp;quot;, page = &amp;quot;Ifè (langue)&amp;quot; },&lt;br /&gt;
ig  = { &amp;quot;igbo&amp;quot; },&lt;br /&gt;
igl = { &amp;quot;igala&amp;quot;, page = &amp;quot;Igala (langue)&amp;quot; },&lt;br /&gt;
ii  = { &amp;quot;yi de Shichuan&amp;quot;, page = &amp;quot;Yi (langue)&amp;quot; },&lt;br /&gt;
ijc = { &amp;quot;izon&amp;quot;, page = &amp;quot;Izon (langue)&amp;quot; },&lt;br /&gt;
ijn = { &amp;quot;kalabari&amp;quot;, page = &amp;quot;Kalabari (langue)&amp;quot; },&lt;br /&gt;
ijo = { &amp;quot;langues ijo&amp;quot;, &amp;quot;langues ijaw&amp;quot;, &amp;quot;ijaw&amp;quot; },&lt;br /&gt;
ik  = { &amp;quot;inupiaq&amp;quot;, &amp;quot;inupiak&amp;quot; },&lt;br /&gt;
ike = { &amp;quot;inuktitut&amp;quot; },&lt;br /&gt;
[&amp;quot;ike-Cans&amp;quot;] = { &amp;quot;inuktitut en syllabaire inuktitut&amp;quot;, page = &amp;quot;Inuktitut&amp;quot; },&lt;br /&gt;
[&amp;quot;ike-Latn&amp;quot;] = { &amp;quot;inuktitut en écriture latine&amp;quot;, page = &amp;quot;Inuktitut&amp;quot; },&lt;br /&gt;
iks = { &amp;quot;langue des signes inuit&amp;quot;, signe = true },&lt;br /&gt;
ikw = { &amp;quot;ikwere&amp;quot; },&lt;br /&gt;
ikx = { &amp;quot;ik&amp;quot;, &amp;quot;icetod&amp;quot;, page = &amp;quot;Ik (langue)&amp;quot; },&lt;br /&gt;
ikz = { &amp;quot;ikizu&amp;quot;, page = &amp;quot;Ikizu (langue)&amp;quot; },&lt;br /&gt;
ili = { &amp;quot;ili turki&amp;quot; },&lt;br /&gt;
ilo = { &amp;quot;ilocano&amp;quot; },&lt;br /&gt;
ine = { &amp;quot;indo-européen&amp;quot;, page = &amp;quot;Langues indo-européennes&amp;quot; },&lt;br /&gt;
inh = { &amp;quot;ingouche&amp;quot; },&lt;br /&gt;
inl = { &amp;quot;langue des signes indonésienne&amp;quot;, signe = true },&lt;br /&gt;
ins = { &amp;quot;langue des signes indienne&amp;quot;, signe = true },&lt;br /&gt;
io  = { &amp;quot;ido&amp;quot; },&lt;br /&gt;
[&amp;quot;in&amp;quot;]  = { &amp;quot;indonésien&amp;quot;, invalide = &amp;quot;id&amp;quot; },	-- in est un mot clé lua : ne pas retirer les crochets - guillemets&lt;br /&gt;
ira = { &amp;quot;iranien&amp;quot;, page = &amp;quot;Langues iraniennes&amp;quot; },&lt;br /&gt;
iro = { &amp;quot;iroquois&amp;quot;, page = &amp;quot;Langues iroquoiennes&amp;quot; },&lt;br /&gt;
is  = { &amp;quot;islandais&amp;quot; },&lt;br /&gt;
ise = { &amp;quot;langue des signes italienne&amp;quot;, signe = true },&lt;br /&gt;
isg = { &amp;quot;langue des signes irlandaise&amp;quot;, signe = true },&lt;br /&gt;
isr = { &amp;quot;langue des signes israélienne&amp;quot;, signe = true },&lt;br /&gt;
it  = { &amp;quot;italien&amp;quot;, &amp;quot;italian&amp;quot; },&lt;br /&gt;
iu  = { &amp;quot;inuktitut&amp;quot; },&lt;br /&gt;
-- j&lt;br /&gt;
ja  = { &amp;quot;japonais&amp;quot;, &amp;quot;japanese&amp;quot; },&lt;br /&gt;
[&amp;quot;ja-Latn&amp;quot;] = { &amp;quot;japonais romanisé&amp;quot;, page = &amp;quot;Japonais&amp;quot; }, -- avec n’importe quelle méthode de romanisation&lt;br /&gt;
[&amp;quot;ja-Latn-alalc97&amp;quot;] = { &amp;quot;japonais romanisé avec la méthode Hepburn modifiée&amp;quot;, page = &amp;quot;Méthode Hepburn&amp;quot; },&lt;br /&gt;
[&amp;quot;ja-Latn-hepburn&amp;quot;] = { &amp;quot;japonais romanisé avec la méthode Hepburn traditionnelle&amp;quot;, page = &amp;quot;Méthode Hepburn&amp;quot; },&lt;br /&gt;
jam = { &amp;quot;créole jamaïcain&amp;quot; },&lt;br /&gt;
jbo = { &amp;quot;lojban&amp;quot; },&lt;br /&gt;
jcs = { &amp;quot;langue des signes jamaïcaine rurale&amp;quot;, signe = true },&lt;br /&gt;
jeu = { &amp;quot;jonkor&amp;quot;},&lt;br /&gt;
jge = { &amp;quot;judéo-géorgien&amp;quot; },&lt;br /&gt;
jhs = { &amp;quot;langue des signes de Jhankot&amp;quot;, signe = true },&lt;br /&gt;
jic = { &amp;quot;jicaque de la Flor&amp;quot; },&lt;br /&gt;
jit = { &amp;quot;jita&amp;quot;, page = &amp;quot;Jita (langue)&amp;quot; },&lt;br /&gt;
jje = { &amp;quot;jeju&amp;quot;, page = &amp;quot;Jeju (langue)&amp;quot; },&lt;br /&gt;
jls = { &amp;quot;langue des signes jamaïcaine&amp;quot;, &amp;quot;langue des signes jamaicaine&amp;quot;, signe = true },&lt;br /&gt;
jmc = { &amp;quot;mashami&amp;quot; },&lt;br /&gt;
jos = { &amp;quot;langue des signes jordanienne&amp;quot;, signe = true },&lt;br /&gt;
jp  = { &amp;quot;japonais&amp;quot;, invalide = &amp;quot;ja&amp;quot; },&lt;br /&gt;
jqr = { &amp;quot;jaqaru&amp;quot; },&lt;br /&gt;
jsl = { &amp;quot;langue des signes japonaise&amp;quot;, signe = true },&lt;br /&gt;
juc = { &amp;quot;jurchen&amp;quot;, page = &amp;quot;Jurchen (langue)&amp;quot; },&lt;br /&gt;
jud = { &amp;quot;worodugukakan&amp;quot; },&lt;br /&gt;
jum = { &amp;quot;jumjum&amp;quot; },&lt;br /&gt;
jup = { &amp;quot;hupda&amp;quot; },&lt;br /&gt;
jus = { &amp;quot;langue des signes de Jumla&amp;quot;, signe = true },&lt;br /&gt;
jut = { &amp;quot;jute&amp;quot;, page = &amp;quot;Jute (langue)&amp;quot; },&lt;br /&gt;
jv  = { &amp;quot;javanais&amp;quot; },&lt;br /&gt;
jw  = { &amp;quot;javanais&amp;quot;, invalide = &amp;quot;jv&amp;quot; },&lt;br /&gt;
-- k&lt;br /&gt;
ka  = { &amp;quot;géorgien&amp;quot; },&lt;br /&gt;
kaa = { &amp;quot;karakalpak&amp;quot; },&lt;br /&gt;
kab = { &amp;quot;kabyle&amp;quot; },&lt;br /&gt;
kai = { &amp;quot;karekare&amp;quot; },&lt;br /&gt;
kam = { &amp;quot;kamba&amp;quot;, page = &amp;quot;Kamba (langue du Kenya)&amp;quot; },&lt;br /&gt;
kao = { &amp;quot;khassonké&amp;quot; },&lt;br /&gt;
kap = { &amp;quot;bejta&amp;quot;, page = &amp;quot;Bejta (langue)&amp;quot; },&lt;br /&gt;
kaw = { &amp;quot;kawi&amp;quot; },&lt;br /&gt;
kbc = { &amp;quot;kadiwéu&amp;quot; },&lt;br /&gt;
kbd = { &amp;quot;kabarde&amp;quot; },&lt;br /&gt;
[&amp;quot;kbd-Cyrl&amp;quot;] = { &amp;quot;kabarde en écriture cyrillique&amp;quot;, page = &amp;quot;Kabarde&amp;quot; },&lt;br /&gt;
kbh = { &amp;quot;camsá&amp;quot; },&lt;br /&gt;
kbl = { &amp;quot;kanembou&amp;quot;, page = &amp;quot;Kanembou (langue)&amp;quot; },&lt;br /&gt;
kbp = { &amp;quot;kabiyè&amp;quot;, page = &amp;quot;Kabiyè (langue)&amp;quot; },&lt;br /&gt;
kbt = { &amp;quot;abadi&amp;quot;, page = &amp;quot;Abadi (langue)&amp;quot; },&lt;br /&gt;
kca = { &amp;quot;khanty&amp;quot; },&lt;br /&gt;
kcy = { &amp;quot;korandjé&amp;quot;, &amp;quot;kwarandzyey&amp;quot; },&lt;br /&gt;
kde = { &amp;quot;makondé&amp;quot;, page = &amp;quot;Makondé (langue)&amp;quot; },&lt;br /&gt;
kdk = { &amp;quot;nââ numèè&amp;quot; },&lt;br /&gt;
kdh = { &amp;quot;tem&amp;quot;, page = &amp;quot;Tem (langue)&amp;quot; },&lt;br /&gt;
kdx = { &amp;quot;kam&amp;quot;, page = &amp;quot;Kam (langue nigéro-congolaise)&amp;quot; },&lt;br /&gt;
ke  = { &amp;quot;koinè&amp;quot;, page = &amp;quot;Koinè (grec)&amp;quot;, invalide = &amp;quot;grc&amp;quot; },&lt;br /&gt;
kea = { &amp;quot;créole du Cap-Vert&amp;quot; },&lt;br /&gt;
keu = { &amp;quot;akébou&amp;quot;, page = &amp;quot;Akébou (langue)&amp;quot; },&lt;br /&gt;
kg  = { &amp;quot;kikongo&amp;quot; },&lt;br /&gt;
kgf = { &amp;quot;kube&amp;quot;, page = &amp;quot;Tobo-kube&amp;quot; },&lt;br /&gt;
kgi = { &amp;quot;langue des signes de Selangor&amp;quot;, signe = true },&lt;br /&gt;
khb = { &amp;quot;taï lü&amp;quot; },&lt;br /&gt;
khi = { &amp;quot;langues khoïsan&amp;quot; },&lt;br /&gt;
khk = { &amp;quot;khalkha&amp;quot; },&lt;br /&gt;
[&amp;quot;khk-Cyrl&amp;quot;] = { &amp;quot;khalka en écriture cyrillique&amp;quot;, page = &amp;quot;khalkha&amp;quot; },&lt;br /&gt;
kht = { &amp;quot;khamti&amp;quot; },&lt;br /&gt;
khw = { &amp;quot;khowar&amp;quot;, rtl = true },&lt;br /&gt;
ki  = { &amp;quot;kikuyu&amp;quot;, page = &amp;quot;Kikuyu (langue)&amp;quot; },&lt;br /&gt;
kia = { &amp;quot;kim&amp;quot;, page = &amp;quot;Kim (langue)&amp;quot; },&lt;br /&gt;
kib = { &amp;quot;koalib&amp;quot; },&lt;br /&gt;
kic = { &amp;quot;kickapou&amp;quot; },&lt;br /&gt;
kiu = { &amp;quot;kirmanjki&amp;quot;, page = &amp;quot;Zazaki&amp;quot; },&lt;br /&gt;
kj  = { &amp;quot;kuanyama&amp;quot; },&lt;br /&gt;
kjb = { &amp;quot;q&#039;anjob&#039;al&amp;quot; },&lt;br /&gt;
kjh = { &amp;quot;khakasse&amp;quot; },&lt;br /&gt;
kjj = { &amp;quot;khinalug&amp;quot;, page = &amp;quot;Khinalug (langue)&amp;quot; },&lt;br /&gt;
kjp = { &amp;quot;pwo de l&#039;Est&amp;quot; },&lt;br /&gt;
kjt = { &amp;quot;pwo de Phrae&amp;quot; },&lt;br /&gt;
kk  = { &amp;quot;kazakh&amp;quot; },&lt;br /&gt;
[&amp;quot;kk-Arab&amp;quot;] = { &amp;quot;kazakh en écriture arabe&amp;quot;, page = &amp;quot;Kazakh&amp;quot; },&lt;br /&gt;
[&amp;quot;kk-CN&amp;quot;]   = { &amp;quot;kazakh de Chine&amp;quot;, page = &amp;quot;Kazakh&amp;quot; },&lt;br /&gt;
[&amp;quot;kk-Cyrl&amp;quot;] = { &amp;quot;kazakh en écriture cyrillique&amp;quot;, page = &amp;quot;Kazakh&amp;quot; },&lt;br /&gt;
[&amp;quot;kk-KZ&amp;quot;]   = { &amp;quot;kazakh du Kazakhstan&amp;quot;, page = &amp;quot;Kazakh&amp;quot; },&lt;br /&gt;
[&amp;quot;kk-Latn&amp;quot;] = { &amp;quot;kazakh en écriture latine&amp;quot;, page = &amp;quot;Kazakh&amp;quot; },&lt;br /&gt;
[&amp;quot;kk-TR&amp;quot;]   = { &amp;quot;kazakh de Turquie&amp;quot;, page = &amp;quot;Kazakh&amp;quot; },&lt;br /&gt;
kkj = { &amp;quot;kako&amp;quot;, page = &amp;quot;Kako (langue)&amp;quot; },&lt;br /&gt;
kkz = { &amp;quot;kaska&amp;quot; },&lt;br /&gt;
kl  = { &amp;quot;groenlandais&amp;quot; },&lt;br /&gt;
klr = { &amp;quot;khaling&amp;quot; },&lt;br /&gt;
km  = { &amp;quot;khmer&amp;quot; },&lt;br /&gt;
kma = { &amp;quot;konni&amp;quot;, &amp;quot;koma&amp;quot;, page = &amp;quot;Konni (langue)&amp;quot; },&lt;br /&gt;
kmb = { &amp;quot;kimbundu&amp;quot;, &amp;quot;kimboundou&amp;quot; },&lt;br /&gt;
kmg = { &amp;quot;kâte&amp;quot; },&lt;br /&gt;
kmq = { &amp;quot;kwama&amp;quot;, page = &amp;quot;Kwama (langue)&amp;quot; },&lt;br /&gt;
kmr = { &amp;quot;kurmandji&amp;quot; },&lt;br /&gt;
kmw = { &amp;quot;komo&amp;quot;, page = &amp;quot;Komo (langue bantoue)&amp;quot; },&lt;br /&gt;
kn  = { &amp;quot;kannada&amp;quot; },&lt;br /&gt;
knb = { &amp;quot;lilubuagen&amp;quot;, &amp;quot;lubuagan&amp;quot;, &amp;quot;kalinga de Lubuagan&amp;quot; },&lt;br /&gt;
knf = { &amp;quot;mancagne&amp;quot;, page = &amp;quot;Mancagne (langue)&amp;quot; },&lt;br /&gt;
kno = { &amp;quot;kono&amp;quot;, page = &amp;quot;Kono (langue de Sierra Leone)&amp;quot; },&lt;br /&gt;
kny = { &amp;quot;kanyok&amp;quot;, page = &amp;quot;Kanyok (langue)&amp;quot; },&lt;br /&gt;
ko  = { &amp;quot;coréen&amp;quot;, &amp;quot;korean&amp;quot; },&lt;br /&gt;
[&amp;quot;ko-KP&amp;quot;]   = { &amp;quot;coréen de Corée du Nord&amp;quot;, page = &amp;quot;Coréen&amp;quot; },&lt;br /&gt;
[&amp;quot;ko-Latn&amp;quot;] = { &amp;quot;coréen romanisé&amp;quot;, page = &amp;quot;Coréen&amp;quot; }, -- avec n’importe quelle méthode de romanisation&lt;br /&gt;
[&amp;quot;ko-Hani&amp;quot;]   = { &amp;quot;coréen&amp;quot; }, -- Hangeul&lt;br /&gt;
kog = { &amp;quot;kogui&amp;quot; },&lt;br /&gt;
koi = { &amp;quot;komi-permiak&amp;quot; },&lt;br /&gt;
kok = { &amp;quot;konkani&amp;quot; },&lt;br /&gt;
kos = { &amp;quot;kosrae&amp;quot;, page = &amp;quot;Kosrae (langue)&amp;quot; },&lt;br /&gt;
kot = { &amp;quot;lagwan&amp;quot; },&lt;br /&gt;
koy = { &amp;quot;koyukon&amp;quot; },&lt;br /&gt;
kpe = { &amp;quot;kpèllé&amp;quot;, page = &amp;quot;Kpèllé (langue)&amp;quot; },&lt;br /&gt;
kpo = { &amp;quot;ikposso&amp;quot;, &amp;quot;kposso&amp;quot; },&lt;br /&gt;
kpt = { &amp;quot;karata&amp;quot; },&lt;br /&gt;
kpy = { &amp;quot;koriak&amp;quot; },&lt;br /&gt;
kpz = { &amp;quot;sapiny&amp;quot; },&lt;br /&gt;
kqn = { &amp;quot;kaonde&amp;quot;, &amp;quot;chikaonde&amp;quot;, &amp;quot;kiikaonde&amp;quot;, page = &amp;quot;Kaonde (langue)&amp;quot; },&lt;br /&gt;
kr  = { &amp;quot;kanouri&amp;quot;, page = &amp;quot;Kanouri (langue)&amp;quot; },&lt;br /&gt;
krc = { &amp;quot;karatchaï balkar&amp;quot; },&lt;br /&gt;
kri = { &amp;quot;krio&amp;quot;, page = &amp;quot;Krio (langue)&amp;quot; },&lt;br /&gt;
krj = { &amp;quot;kinaray-a&amp;quot; },&lt;br /&gt;
krl = { &amp;quot;carélien&amp;quot; },&lt;br /&gt;
ks  = { &amp;quot;cachemiri&amp;quot; },&lt;br /&gt;
[&amp;quot;ks-Arab&amp;quot;] = { &amp;quot;cachemiri en écriture arabe&amp;quot;, page = &amp;quot;Cachemiri&amp;quot; },&lt;br /&gt;
[&amp;quot;ks-Deva&amp;quot;] = { &amp;quot;cachemiri en écriture devanagari&amp;quot;, page = &amp;quot;Cachemiri&amp;quot; },&lt;br /&gt;
ksh = { &amp;quot;kölsch&amp;quot;, &amp;quot;francique ripuaire&amp;quot;, page = &amp;quot;Kölsch (langue)&amp;quot; },&lt;br /&gt;
ksk = { &amp;quot;kanza&amp;quot;, page = &amp;quot;Kanza (langue)&amp;quot; },&lt;br /&gt;
kst = { &amp;quot;winyé&amp;quot; },&lt;br /&gt;
ktu = { &amp;quot;kituba&amp;quot; },&lt;br /&gt;
ktw = { &amp;quot;cahto&amp;quot; },&lt;br /&gt;
ksw = { &amp;quot;karen s&#039;gaw&amp;quot; },&lt;br /&gt;
ku  = { &amp;quot;kurde&amp;quot; },&lt;br /&gt;
[&amp;quot;ku-Arab&amp;quot;] = { &amp;quot;kurde en écriture arabe&amp;quot;, page = &amp;quot;Kurde&amp;quot; },&lt;br /&gt;
[&amp;quot;ku-Latn&amp;quot;] = { &amp;quot;kurde en écriture latine&amp;quot;, page = &amp;quot;Kurde&amp;quot; },&lt;br /&gt;
kuf = { &amp;quot;katu&amp;quot;, page = &amp;quot;Katu (langue)&amp;quot; },&lt;br /&gt;
kuj = { &amp;quot;kuria&amp;quot;, page = &amp;quot;Kuria (langue)&amp;quot; },&lt;br /&gt;
kum = { &amp;quot;koumyk&amp;quot; },&lt;br /&gt;
kus = { &amp;quot;kusaal&amp;quot; },&lt;br /&gt;
kut = { &amp;quot;kutenai&amp;quot; },&lt;br /&gt;
kv  = { &amp;quot;komi&amp;quot;, page = &amp;quot;Komi (langue)&amp;quot; },&lt;br /&gt;
kvj = { &amp;quot;psikye&amp;quot; },&lt;br /&gt;
kvk = { &amp;quot;langue des signes coréenne&amp;quot;, signe = true },&lt;br /&gt;
kvl = { &amp;quot;kayaw&amp;quot; },&lt;br /&gt;
kw  = { &amp;quot;cornique&amp;quot; },&lt;br /&gt;
kwk = { &amp;quot;kwak&#039;wala&amp;quot; },&lt;br /&gt;
kxf = { &amp;quot;manumanaw&amp;quot; },&lt;br /&gt;
ky  = { &amp;quot;kirghize&amp;quot; },&lt;br /&gt;
kya = { &amp;quot;kwaya&amp;quot; },&lt;br /&gt;
kye = { &amp;quot;krache&amp;quot; },&lt;br /&gt;
kyf = { &amp;quot;kouya&amp;quot;, page = &amp;quot;Bété (langue)&amp;quot; },&lt;br /&gt;
kyu = { &amp;quot;kayah&amp;quot;, page = &amp;quot;Kayah (langue)&amp;quot; },&lt;br /&gt;
kzg = { &amp;quot;kikaï&amp;quot; },&lt;br /&gt;
kzr  = { &amp;quot;karang&amp;quot;, page = &amp;quot;Karang (langue)&amp;quot; },&lt;br /&gt;
-- l&lt;br /&gt;
la  = { &amp;quot;latin&amp;quot;, &amp;quot;lat&amp;quot; },&lt;br /&gt;
[&amp;quot;la-peano&amp;quot;] = { &amp;quot;latino sine flexione&amp;quot;, &amp;quot;interlingua de Peano&amp;quot;, &amp;quot;interlingua de l&#039;API&amp;quot;, &amp;quot;latin sans flexions&amp;quot; },&lt;br /&gt;
lac = { &amp;quot;lacandon&amp;quot;, page = &amp;quot;Lacandon (langue)&amp;quot; },&lt;br /&gt;
lad = { &amp;quot;judéo-espagnol&amp;quot;, &amp;quot;ladino&amp;quot; },&lt;br /&gt;
lam = { &amp;quot;lamba&amp;quot;, page = &amp;quot;Lamba (langue)&amp;quot; },&lt;br /&gt;
lb  = { &amp;quot;luxembourgeois&amp;quot; },&lt;br /&gt;
lbe = { &amp;quot;lak&amp;quot; },&lt;br /&gt;
lbi = { &amp;quot;la&#039;bi&amp;quot; },&lt;br /&gt;
lbj = { &amp;quot;ladakhi&amp;quot; },&lt;br /&gt;
lbr = { &amp;quot;lohorung&amp;quot;, page = &amp;quot;Lohorung (langue)&amp;quot; },&lt;br /&gt;
lbs = { &amp;quot;langue des signes libyenne&amp;quot;, signe = true },&lt;br /&gt;
ldi = { &amp;quot;lari&amp;quot;, page = &amp;quot;Lari (langue)&amp;quot; },&lt;br /&gt;
ldm = { &amp;quot;landoma&amp;quot;, page = &amp;quot;Landoma (langue)&amp;quot; },&lt;br /&gt;
ldn = { &amp;quot;láadan&amp;quot; },&lt;br /&gt;
led = { &amp;quot;lendu&amp;quot;, page = &amp;quot;Lendu (langue)&amp;quot; },&lt;br /&gt;
lef = { &amp;quot;lelemi&amp;quot; },&lt;br /&gt;
lep = { &amp;quot;lepcha&amp;quot; },&lt;br /&gt;
lez = { &amp;quot;lezghien&amp;quot; },&lt;br /&gt;
lfn = { &amp;quot;Lingua Franca Nova&amp;quot; },&lt;br /&gt;
lg  = { &amp;quot;luganda&amp;quot;, &amp;quot;ganda&amp;quot; },&lt;br /&gt;
li  = { &amp;quot;limbourgeois&amp;quot; },&lt;br /&gt;
lia = { &amp;quot;limba&amp;quot;, page = &amp;quot;Limba (langue)&amp;quot; },&lt;br /&gt;
lib = { &amp;quot;likum&amp;quot; },&lt;br /&gt;
lif = { &amp;quot;limbou&amp;quot;, &amp;quot;limbu&amp;quot;, page = &amp;quot;Limbou (langue)&amp;quot; },&lt;br /&gt;
lij = { &amp;quot;ligure&amp;quot; },&lt;br /&gt;
[&amp;quot;lij-MC&amp;quot;] = { &amp;quot;monégasque&amp;quot; },&lt;br /&gt;
lik = { &amp;quot;lika&amp;quot;, page = &amp;quot;Lika (langue)&amp;quot; },&lt;br /&gt;
lil = { &amp;quot;st&#039;at&#039;imcets&amp;quot;, &amp;quot;stʼatʼimcets&amp;quot;, &amp;quot;lillooet&amp;quot;, &amp;quot;st̓át̓imcets&amp;quot; },&lt;br /&gt;
liv = { &amp;quot;live&amp;quot;, &amp;quot;livonien&amp;quot;, page = &amp;quot;Live (langue)&amp;quot; },&lt;br /&gt;
lki = { &amp;quot;laki&amp;quot;,page = &amp;quot;Laki (langue)&amp;quot; },&lt;br /&gt;
lkt = { &amp;quot;lakota&amp;quot;, page = &amp;quot;Lakota (langue)&amp;quot; },&lt;br /&gt;
lld = { &amp;quot;ladin&amp;quot; },&lt;br /&gt;
lls = { &amp;quot;langue des signes lituanienne&amp;quot;, signe = true },&lt;br /&gt;
lmo = { &amp;quot;lombard&amp;quot;, page = &amp;quot;Lombard (langue romane)&amp;quot; },&lt;br /&gt;
ln  = { &amp;quot;lingala&amp;quot; },&lt;br /&gt;
lna = { &amp;quot;langbasi&amp;quot;, page = &amp;quot;Ngbugu-langbasi&amp;quot; },&lt;br /&gt;
lnl = { &amp;quot;ngbugu&amp;quot;, &amp;quot;banda sud central&amp;quot;, page = &amp;quot;Ngbugu-langbasi&amp;quot; },&lt;br /&gt;
lns = { &amp;quot;lamnso&#039;&amp;quot;, &amp;quot;lamnso’&amp;quot;, &amp;quot;lamnsoʼ&amp;quot; },&lt;br /&gt;
lo  = { &amp;quot;lao&amp;quot;, page = &amp;quot;Lao (langue)&amp;quot; },&lt;br /&gt;
lob = { &amp;quot;lobiri&amp;quot; },&lt;br /&gt;
log = { &amp;quot;logoti&amp;quot; },&lt;br /&gt;
lol = { &amp;quot;lomongo&amp;quot; },&lt;br /&gt;
loq = { &amp;quot;lobala&amp;quot; },&lt;br /&gt;
lor = { &amp;quot;téén&amp;quot;, &amp;quot;lorhon&amp;quot; },&lt;br /&gt;
lou = { &amp;quot;créole louisianais&amp;quot; },&lt;br /&gt;
loz = { &amp;quot;lozi&amp;quot;, page = &amp;quot;Lozi (langue)&amp;quot; },&lt;br /&gt;
lrc = { &amp;quot;lori du Nord&amp;quot; },&lt;br /&gt;
lsf = { &amp;quot;langue des signes française&amp;quot;, signe = true },&lt;br /&gt;
lsg = { &amp;quot;langue des signes lyonnaise&amp;quot;, signe = true },&lt;br /&gt;
lsl = { &amp;quot;langue des signes lettone&amp;quot;, signe = true },&lt;br /&gt;
lso = { &amp;quot;langue des signes laotienne&amp;quot;, signe = true },&lt;br /&gt;
lsp = { &amp;quot;langue des signes panaméenne&amp;quot;, signe = true },&lt;br /&gt;
lst = { &amp;quot;langue des signes trinidadienne&amp;quot;, signe = true },&lt;br /&gt;
lsy = { &amp;quot;langue des signes mauricienne&amp;quot;, signe = true },&lt;br /&gt;
lt  = { &amp;quot;lituanien&amp;quot; },&lt;br /&gt;
ltc = { &amp;quot;chinois médiéval&amp;quot; },&lt;br /&gt;
ltg = { &amp;quot;latgalien&amp;quot; },&lt;br /&gt;
lu  = { &amp;quot;luba-katanga&amp;quot;, &amp;quot;luba-shaba&amp;quot;, &amp;quot;kiluba&amp;quot; },&lt;br /&gt;
lua = { &amp;quot;luba-kasaï&amp;quot;, &amp;quot;tshiluba&amp;quot; },&lt;br /&gt;
luc = { &amp;quot;aringa&amp;quot; },&lt;br /&gt;
lui = { &amp;quot;luiseño&amp;quot;, page = &amp;quot;Luiseño (langue)&amp;quot; },&lt;br /&gt;
luo = { &amp;quot;luo&amp;quot;, page = &amp;quot;Luo (langue)&amp;quot; },&lt;br /&gt;
lup = { &amp;quot;lumbu&amp;quot;, page = &amp;quot;Lumbu (langue)&amp;quot; },&lt;br /&gt;
lus = { &amp;quot;mizo&amp;quot;, &amp;quot;lushai&amp;quot; },&lt;br /&gt;
lut = { &amp;quot;lushootseed&amp;quot; },&lt;br /&gt;
luz = { &amp;quot;lori du Sud&amp;quot; },&lt;br /&gt;
lv  = { &amp;quot;letton&amp;quot; },&lt;br /&gt;
lzh = { &amp;quot;chinois classique&amp;quot;, &amp;quot;zh-classical&amp;quot; },&lt;br /&gt;
lzz = { &amp;quot;laze&amp;quot;, page = &amp;quot;Laze (langue caucasienne)&amp;quot; },&lt;br /&gt;
-- m&lt;br /&gt;
ma =  { &amp;quot;arabe dialectal marocain&amp;quot;, invalide = &amp;quot;ary&amp;quot; },&lt;br /&gt;
mad = { &amp;quot;madurais&amp;quot;, page = &amp;quot;Madurais (langue)&amp;quot; },&lt;br /&gt;
mai = { &amp;quot;maïthili&amp;quot;, &amp;quot;maithili&amp;quot;, &amp;quot;mazatèque de jalapa&amp;quot;, &amp;quot;mazatèque de jalapa de díaz&amp;quot; },&lt;br /&gt;
maj = { &amp;quot;mazatèque de Jalapa&amp;quot; },&lt;br /&gt;
mam = { &amp;quot;mam&amp;quot; },&lt;br /&gt;
man = { &amp;quot;mandingue&amp;quot;, &amp;quot;maninka&amp;quot;, &amp;quot;malinke&amp;quot;, page = &amp;quot;Langues mandingues&amp;quot; },&lt;br /&gt;
map = { &amp;quot;langues austronésiennes&amp;quot; },&lt;br /&gt;
[&amp;quot;map-bms&amp;quot;] = { &amp;quot;banyumasan&amp;quot;, invalide = &amp;quot;jv&amp;quot; }, -- code non standard, map=austronesian languages, bms=bilma kanuri (langue nilo-saharienne)&lt;br /&gt;
mat = { &amp;quot;matlatzinca&amp;quot; },&lt;br /&gt;
mav = { &amp;quot;mavé&amp;quot;, page = &amp;quot;Mawé (langue)&amp;quot; },&lt;br /&gt;
maz = { &amp;quot;mazahua central&amp;quot;, page = &amp;quot;Mazahua&amp;quot; },&lt;br /&gt;
mbp = { &amp;quot;damana&amp;quot; },&lt;br /&gt;
mbr = {&amp;quot;nukak&amp;quot;, page = &amp;quot;Nukak (langue)&amp;quot;},&lt;br /&gt;
mca = { &amp;quot;maká&amp;quot;, page = &amp;quot;Maká (langue mataguayo)&amp;quot; },&lt;br /&gt;
mch = { &amp;quot;maquiritari&amp;quot; },&lt;br /&gt;
mcp = { &amp;quot;maka&amp;quot;, page = &amp;quot;Maka (langue bantoue)&amp;quot; },&lt;br /&gt;
mda = { &amp;quot;mada&amp;quot;, page = &amp;quot;Mada (langue du Nigeria)&amp;quot; },&lt;br /&gt;
mde = { &amp;quot;maba&amp;quot;, page = &amp;quot;Maba (langue du Tchad)&amp;quot; },&lt;br /&gt;
mdf = { &amp;quot;mokcha&amp;quot;, &amp;quot;moksa&amp;quot;, &amp;quot;mokṣa&amp;quot;, &amp;quot;moksha&amp;quot;, page = &amp;quot;Mokcha (langue)&amp;quot; },&lt;br /&gt;
mdj = { &amp;quot;mangbetu&amp;quot;, page = &amp;quot;Mangbetu (langue)&amp;quot; },&lt;br /&gt;
mdl = { &amp;quot;langue des signes maltaise&amp;quot;, signe = true },&lt;br /&gt;
mdm = { &amp;quot;mayogo&amp;quot; },&lt;br /&gt;
mdp = { &amp;quot;mbala&amp;quot;, &amp;quot;kimbala&amp;quot;, &amp;quot;gimbala&amp;quot;, page = &amp;quot;Mbala (langue)&amp;quot; },&lt;br /&gt;
mdw = { &amp;quot;mbochi&amp;quot;, &amp;quot;mbosi&amp;quot;, &amp;quot;mboshi&amp;quot;, &amp;quot;embɔ́si&amp;quot;, page = &amp;quot;Mbochi (langue)&amp;quot; },&lt;br /&gt;
men = { &amp;quot;mendé&amp;quot;, page = &amp;quot;Mendé (langue)&amp;quot; },&lt;br /&gt;
mer = { &amp;quot;meru&amp;quot;, &amp;quot;kimeru&amp;quot;, page = &amp;quot;Meru (langue)&amp;quot; },&lt;br /&gt;
meu = { &amp;quot;motu&amp;quot;, page = &amp;quot;Motu (langue)&amp;quot; },&lt;br /&gt;
mew = { &amp;quot;maka&amp;quot;, &amp;quot;maha&amp;quot;, &amp;quot;maaka&amp;quot;, &amp;quot;makaa&amp;quot;, page = &amp;quot;Maka (langue tchadique)&amp;quot; },&lt;br /&gt;
mey = { &amp;quot;hassanya&amp;quot; },&lt;br /&gt;
mfe = { &amp;quot;créole mauricien&amp;quot;, &amp;quot;mauricien&amp;quot; },&lt;br /&gt;
mfg = { &amp;quot;mogofin&amp;quot; },&lt;br /&gt;
mfq = { &amp;quot;moba&amp;quot;, page = &amp;quot;Moba (langue)&amp;quot; },&lt;br /&gt;
mfs = { &amp;quot;langue des signes mexicaine&amp;quot;, signe = true },&lt;br /&gt;
mg  = { &amp;quot;malgache&amp;quot;, &amp;quot;malagasy&amp;quot; },&lt;br /&gt;
mga = { &amp;quot;moyen irlandais&amp;quot; },&lt;br /&gt;
mgp = { &amp;quot;magar oriental&amp;quot;, page = &amp;quot;Magar (langue)&amp;quot; },&lt;br /&gt;
mh  = { &amp;quot;marshallais&amp;quot; },&lt;br /&gt;
mhr = { &amp;quot;mari oriental&amp;quot;, &amp;quot;mari&amp;quot;, &amp;quot;mari de l&#039;est&amp;quot;, page = &amp;quot;Mari (langue)&amp;quot; },&lt;br /&gt;
mi  = { &amp;quot;maori de Nouvelle-Zélande&amp;quot;, &amp;quot;maori&amp;quot; },&lt;br /&gt;
mic = { &amp;quot;micmac&amp;quot; },&lt;br /&gt;
mig = { &amp;quot;bas mixtèque du sud&amp;quot; },&lt;br /&gt;
min = { &amp;quot;minangkabau&amp;quot;, page = &amp;quot;Minangkabau (langue)&amp;quot; },&lt;br /&gt;
miq = { &amp;quot;miskito&amp;quot;, &amp;quot;miskitu&amp;quot; },&lt;br /&gt;
mis = { &amp;quot;langue qui n&#039;a aucun code langue&amp;quot;, page = &amp;quot;&amp;quot; },&lt;br /&gt;
mjg = { &amp;quot;monguor&amp;quot; },&lt;br /&gt;
mjt = { &amp;quot;sauria paharia&amp;quot; },&lt;br /&gt;
mk  = { &amp;quot;macédonien&amp;quot; },&lt;br /&gt;
[&amp;quot;mk-Cyrl&amp;quot;] = { &amp;quot;macédonien (écriture cyrillique)&amp;quot;, page = &amp;quot;macédonien&amp;quot; },&lt;br /&gt;
[&amp;quot;mk-Latn&amp;quot;] = { &amp;quot;macédonien (écriture latine)&amp;quot;, page = &amp;quot;macédonien&amp;quot; },&lt;br /&gt;
mkh = { &amp;quot;langues môn-khmer&amp;quot;, &amp;quot;môn-khmer&amp;quot; },&lt;br /&gt;
mkl = { &amp;quot;mokolé&amp;quot;, page = &amp;quot;Mokolé (langue)&amp;quot; },&lt;br /&gt;
mkv = { &amp;quot;mavea&amp;quot;, page = &amp;quot;Mavea (langue)&amp;quot; },&lt;br /&gt;
ml  = { &amp;quot;malayalam&amp;quot; },&lt;br /&gt;
mls = { &amp;quot;masalit&amp;quot;, &amp;quot;massalit&amp;quot; },&lt;br /&gt;
mlv = { &amp;quot;mwotlap&amp;quot; },&lt;br /&gt;
mmc = { &amp;quot;mazahua occidental&amp;quot;, page = &amp;quot;Mazahua&amp;quot; },&lt;br /&gt;
mmz = { &amp;quot;mabale&amp;quot; },&lt;br /&gt;
mn  = { &amp;quot;mongol&amp;quot; },&lt;br /&gt;
[&amp;quot;mn-Cyrl&amp;quot;] = { &amp;quot;mongol (écriture cyrillique)&amp;quot;, page = &amp;quot;mongol&amp;quot; },&lt;br /&gt;
[&amp;quot;mn-Latn&amp;quot;] = { &amp;quot;mongol (écriture latine)&amp;quot;, page = &amp;quot;mongol&amp;quot; },&lt;br /&gt;
[&amp;quot;mn-Mong&amp;quot;] = { &amp;quot;mongol (écriture mongole)&amp;quot;, page = &amp;quot;mongol&amp;quot; },&lt;br /&gt;
mnc = { &amp;quot;mandchou&amp;quot; },&lt;br /&gt;
mni = { &amp;quot;meitei&amp;quot;, &amp;quot;meithei&amp;quot; },&lt;br /&gt;
mnk = { &amp;quot;mandinka&amp;quot;},&lt;br /&gt;
mnp = { &amp;quot;minbei&amp;quot; },&lt;br /&gt;
mnw = { &amp;quot;môn&amp;quot;, &amp;quot;mon&amp;quot;, page = &amp;quot;Môn (langue)&amp;quot; },&lt;br /&gt;
mo  = { &amp;quot;moldave&amp;quot;, invalide = &amp;quot;ro-MD&amp;quot; },&lt;br /&gt;
moa = { &amp;quot;monan&amp;quot;, &amp;quot;mwan&amp;quot; },&lt;br /&gt;
moe = { &amp;quot;innu-aimun&amp;quot;, &amp;quot;montagnais&amp;quot; },&lt;br /&gt;
moh = { &amp;quot;mohawk&amp;quot;, &amp;quot;agnier&amp;quot;, page = &amp;quot;Mohawk (langue)&amp;quot; },&lt;br /&gt;
mor = { &amp;quot;moro&amp;quot;, page = &amp;quot;Moro (langue)&amp;quot; },&lt;br /&gt;
mot = { &amp;quot;barí&amp;quot;, &amp;quot;bari&amp;quot;, page = &amp;quot;Barí (langue)&amp;quot; },&lt;br /&gt;
mov = { &amp;quot;mojave&amp;quot;, page = &amp;quot;Mojave (langue)&amp;quot; },&lt;br /&gt;
moz = { &amp;quot;mokulu&amp;quot;, page = &amp;quot;Mokulu (langue)&amp;quot; },&lt;br /&gt;
mqb = { &amp;quot;moloko&amp;quot;, page = &amp;quot;Moloko (langue)&amp;quot; },&lt;br /&gt;
mql = { &amp;quot;mbèlimè&amp;quot;, &amp;quot;mbɛlimɛ&amp;quot;, &amp;quot;mbelime&amp;quot; },&lt;br /&gt;
mqm = { &amp;quot;marquisien du Sud&amp;quot;, page = &amp;quot;Marquisien&amp;quot; },&lt;br /&gt;
mr  = { &amp;quot;marathi&amp;quot;, &amp;quot;marāthī&amp;quot;, &amp;quot;marathe&amp;quot;, &amp;quot;marâthî&amp;quot;, page = &amp;quot;Marathi (langue)&amp;quot; },&lt;br /&gt;
mrd = { &amp;quot;magar occidental&amp;quot;, page = &amp;quot;Magar (langue)&amp;quot; },&lt;br /&gt;
mre = { &amp;quot;langue des signes de Martha&#039;s Vineyard&amp;quot;, signe = true },&lt;br /&gt;
mrj = { &amp;quot;mari des montagnes&amp;quot;, &amp;quot;mari occidental&amp;quot; },&lt;br /&gt;
mrn = { &amp;quot;cheke holo&amp;quot; },&lt;br /&gt;
mrq = { &amp;quot;marquisien du Nord&amp;quot;, &amp;quot;marquisien&amp;quot;, page = &amp;quot;Marquisien&amp;quot; },&lt;br /&gt;
mrv = { &amp;quot;mangarévien&amp;quot; },&lt;br /&gt;
ms  = { &amp;quot;malais&amp;quot;, page = &amp;quot;Malais (langue)&amp;quot; },&lt;br /&gt;
msc = { &amp;quot;sankaran&amp;quot; },&lt;br /&gt;
msd = { &amp;quot;langue des signes maya yucatèque&amp;quot;, signe = true },&lt;br /&gt;
mse = { &amp;quot;moussey&amp;quot;, &amp;quot;musey&amp;quot;, page = &amp;quot;Moussey (langue)&amp;quot; },&lt;br /&gt;
msn = { &amp;quot;vurës&amp;quot; },&lt;br /&gt;
msr = { &amp;quot;langue des signes mongole&amp;quot;, signe = true },&lt;br /&gt;
mt  = { &amp;quot;maltais&amp;quot; },&lt;br /&gt;
mtq = { &amp;quot;muong&amp;quot;, page = &amp;quot;Muong (langue)&amp;quot; },&lt;br /&gt;
mtt = { &amp;quot;mota&amp;quot;, page = &amp;quot;Mota (langue)&amp;quot; },&lt;br /&gt;
mua = { &amp;quot;moundang&amp;quot;, page = &amp;quot;Moundang (langue)&amp;quot; },&lt;br /&gt;
mug = { &amp;quot;mousgoum&amp;quot;, page = &amp;quot;Mousgoum (langue)&amp;quot; },&lt;br /&gt;
muh = { &amp;quot;mundu&amp;quot;, &amp;quot;mündü&amp;quot;, page = &amp;quot;Mundu (langue)&amp;quot; },&lt;br /&gt;
mul = { &amp;quot;multilingue&amp;quot;, page = &amp;quot;Multilinguisme&amp;quot; },&lt;br /&gt;
mur = { &amp;quot;murle&amp;quot;, page = &amp;quot;Murle (langue)&amp;quot; },&lt;br /&gt;
mus = { &amp;quot;creek&amp;quot;, page = &amp;quot;Creek (langue)&amp;quot; },&lt;br /&gt;
muz = { &amp;quot;mursi&amp;quot;, page = &amp;quot;Mursi (langue)&amp;quot; },&lt;br /&gt;
mvf = { &amp;quot;mongol périphérique&amp;quot;, page = &amp;quot;Mongol (langue de Chine)&amp;quot; },&lt;br /&gt;
mvi = { &amp;quot;miyako&amp;quot;, page = &amp;quot;Miyako (langue)&amp;quot; },&lt;br /&gt;
mwl = { &amp;quot;mirandais&amp;quot; },&lt;br /&gt;
mwr = { &amp;quot;marwari&amp;quot;, page = &amp;quot;Marwari (langue)&amp;quot; },&lt;br /&gt;
mxu = { &amp;quot;mada&amp;quot;, page = &amp;quot;Mada (langue du Cameroun)&amp;quot; },&lt;br /&gt;
my  = { &amp;quot;birman&amp;quot;, page = &amp;quot;Birman (langue)&amp;quot; },&lt;br /&gt;
mye = { &amp;quot;myènè&amp;quot;, &amp;quot;omyènè&amp;quot;, page = &amp;quot;Myènè (langue)&amp;quot; },&lt;br /&gt;
myh = { &amp;quot;makah&amp;quot; },&lt;br /&gt;
myk = { &amp;quot;mamara&amp;quot; },&lt;br /&gt;
mym = { &amp;quot;me’en&amp;quot; },&lt;br /&gt;
myn = { &amp;quot;langues mayas&amp;quot;, &amp;quot;langue maya&amp;quot;, &amp;quot;maya&amp;quot; },&lt;br /&gt;
myp = { &amp;quot;pirahã&amp;quot;, page = &amp;quot;Pirahã (langue)&amp;quot; },&lt;br /&gt;
myv = { &amp;quot;erzya&amp;quot; },&lt;br /&gt;
mzc = { &amp;quot;langue des signes malgache&amp;quot;, signe = true },&lt;br /&gt;
mzg = { &amp;quot;langue des signes monastique&amp;quot;, signe = true },&lt;br /&gt;
mzi = { &amp;quot;mazatèque d&#039;Ixcatlán&amp;quot; },&lt;br /&gt;
mzn = { &amp;quot;mazandarani&amp;quot;, &amp;quot;tabari&amp;quot;, rtl = true },&lt;br /&gt;
mzv = { &amp;quot;manza&amp;quot; },&lt;br /&gt;
mzy = { &amp;quot;langue des signes mozambicaine&amp;quot;, signe = true },&lt;br /&gt;
-- n&lt;br /&gt;
na  = { &amp;quot;nauruan&amp;quot; },&lt;br /&gt;
nab = { &amp;quot;nambikwara du sud&amp;quot;, &amp;quot;nambikwara&amp;quot;, &amp;quot;nambiquara&amp;quot;, &amp;quot;nambikuára&amp;quot; },&lt;br /&gt;
nah = { &amp;quot;nahuatl&amp;quot; },&lt;br /&gt;
nan = { &amp;quot;minnan&amp;quot;, &amp;quot;zh-min-nan&amp;quot; },&lt;br /&gt;
nap = { &amp;quot;napolitain&amp;quot;, &amp;quot;tarentin&amp;quot; },&lt;br /&gt;
naq = { &amp;quot;khoïkhoï&amp;quot;, &amp;quot;nama&amp;quot; },&lt;br /&gt;
nb  = { &amp;quot;bokmål&amp;quot;, &amp;quot;bokmal&amp;quot;, &amp;quot;norvégien classique&amp;quot; },&lt;br /&gt;
nba = { &amp;quot;nyemba&amp;quot;, &amp;quot;ngangela&amp;quot;, page = &amp;quot;Nyemba (langue)&amp;quot; },&lt;br /&gt;
nbh = { &amp;quot;ngamo&amp;quot; },&lt;br /&gt;
nbs = { &amp;quot;langue des signes namibienne&amp;quot;, signe = true },&lt;br /&gt;
ncg = { &amp;quot;nisgha&amp;quot;, &amp;quot;nisg̱a&#039;a&amp;quot; },&lt;br /&gt;
nci = { &amp;quot;nahuatl classique&amp;quot;, &amp;quot;aztèque&amp;quot;, page = &amp;quot;Nahuatl&amp;quot; },&lt;br /&gt;
ncs = { &amp;quot;langue des signes nicaraguayenne&amp;quot;, signe = true },&lt;br /&gt;
nd  = { &amp;quot;ndébélé du Nord&amp;quot;, &amp;quot;ndébélé du zimbabwe&amp;quot;, &amp;quot;sindebele&amp;quot;, page = &amp;quot;Ndébélé du Zimbabwe&amp;quot; },&lt;br /&gt;
ndb = { &amp;quot;kenswei nsei&amp;quot;, &amp;quot;kenswey nsei&amp;quot;, &amp;quot;bamessing&amp;quot; },&lt;br /&gt;
ndc = { &amp;quot;ndau&amp;quot; },&lt;br /&gt;
nds = { &amp;quot;bas allemand&amp;quot; },&lt;br /&gt;
[&amp;quot;nds-NL&amp;quot;] = { &amp;quot;bas saxon des Pays-Bas&amp;quot;, &amp;quot;bas saxon néerlandais&amp;quot; },&lt;br /&gt;
ndv = { &amp;quot;ndut&amp;quot;, page = &amp;quot;Ndut (langue)&amp;quot; },&lt;br /&gt;
ne  = { &amp;quot;népalais&amp;quot; },&lt;br /&gt;
neb = { &amp;quot;toura&amp;quot;, &amp;quot;tura&amp;quot;, page = &amp;quot;Toura (langue mandée)&amp;quot; },&lt;br /&gt;
neg = { &amp;quot;néguidale&amp;quot; , page = &amp;quot;Néguidale&amp;quot; },&lt;br /&gt;
neu = { &amp;quot;neo&amp;quot;, page = &amp;quot;Neo (langue construite)&amp;quot; },&lt;br /&gt;
new = { &amp;quot;nepalbhasha&amp;quot; },&lt;br /&gt;
nez = { &amp;quot;nez-percé&amp;quot;, page = &amp;quot;Nez-percé (langue)&amp;quot; },&lt;br /&gt;
ng  = { &amp;quot;ndonga&amp;quot; },&lt;br /&gt;
ngc = { &amp;quot;lingombe&amp;quot; },&lt;br /&gt;
ngh = { &amp;quot;nǁng&amp;quot;, &amp;quot;nǀu&amp;quot; },&lt;br /&gt;
ngi = { &amp;quot;ngizim&amp;quot;, page = &amp;quot;Ngizim (langue)&amp;quot; },&lt;br /&gt;
ngo = { &amp;quot;ngoni&amp;quot;, page = &amp;quot;Ngoni (langue)&amp;quot; },&lt;br /&gt;
nhb = { &amp;quot;beng&amp;quot;, page = &amp;quot;Beng (langue)&amp;quot; },&lt;br /&gt;
nhd = { &amp;quot;ava-guarani&amp;quot; },&lt;br /&gt;
nia = { &amp;quot;niha&amp;quot;, &amp;quot;nias&amp;quot; },&lt;br /&gt;
nih = { &amp;quot;nyiha&amp;quot; },&lt;br /&gt;
nio = { &amp;quot;nganassane&amp;quot; },&lt;br /&gt;
niu = { &amp;quot;niuéen&amp;quot; },&lt;br /&gt;
niv = { &amp;quot;nivkhe&amp;quot;, page = &amp;quot;Nivkhe (langue)&amp;quot; },&lt;br /&gt;
niy = { &amp;quot;ndruna&amp;quot; },&lt;br /&gt;
nl  = { &amp;quot;néerlandais&amp;quot;, &amp;quot;dutch&amp;quot; },&lt;br /&gt;
[&amp;quot;nl-BE&amp;quot;] = { &amp;quot;néerlandais de Belgique&amp;quot;, page = &amp;quot;Néerlandais&amp;quot; },&lt;br /&gt;
[&amp;quot;nl-informal&amp;quot;] = { &amp;quot;néerlandais informel&amp;quot;, page = &amp;quot;Néerlandais&amp;quot;, invalide = &amp;quot;nl&amp;quot; },&lt;br /&gt;
nlo = { &amp;quot;ngwi&amp;quot; },&lt;br /&gt;
nmg = { &amp;quot;kwasio&amp;quot; },&lt;br /&gt;
nn  = { &amp;quot;nynorsk&amp;quot; },&lt;br /&gt;
nnb = { &amp;quot;kinande&amp;quot; },&lt;br /&gt;
nnw = { &amp;quot;nuni du Sud&amp;quot;, page = &amp;quot;Nuni&amp;quot; },&lt;br /&gt;
no  = { &amp;quot;norvégien&amp;quot;, &amp;quot;norwegian&amp;quot; },&lt;br /&gt;
[&amp;quot;no-nin&amp;quot;]  = { &amp;quot;nynorsk&amp;quot;, invalide = &amp;quot;nynorsk&amp;quot; },&lt;br /&gt;
nod = { &amp;quot;thaï du Nord&amp;quot; },&lt;br /&gt;
nok = { &amp;quot;nooksack&amp;quot; },&lt;br /&gt;
non = { &amp;quot;vieux norrois&amp;quot;, &amp;quot;norrois&amp;quot; },&lt;br /&gt;
[&amp;quot;not&amp;quot;] = { &amp;quot;nomatsiguenga&amp;quot; }, -- not est un mot clé lua : ne pas retirer les crochets - guillemets&lt;br /&gt;
nov = { &amp;quot;novial&amp;quot; },&lt;br /&gt;
now = { &amp;quot;nyambo&amp;quot;, page = &amp;quot;Nyambo (langue)&amp;quot; },&lt;br /&gt;
nr  = { &amp;quot;ndébélé du Transvaal&amp;quot;, &amp;quot;ndébélé du Sud&amp;quot;, &amp;quot;nrebele&amp;quot;, &amp;quot;ndébélé du transvaal&amp;quot; },&lt;br /&gt;
nrf = { &amp;quot;guernesiais&amp;quot; },&lt;br /&gt;
[&amp;quot;nrf-JE&amp;quot;] = { &amp;quot;jersiais&amp;quot; },&lt;br /&gt;
nrm = { &amp;quot;narum&amp;quot;, &amp;quot;narom&amp;quot; }, --  nrm.wikipedia est en normand, qui n&#039;a pas de code IETF valide&lt;br /&gt;
nsi = { &amp;quot;langue des signes nigériane&amp;quot;, signe = true },&lt;br /&gt;
nsl = { &amp;quot;langue des signes norvégienne&amp;quot;, signe = true },&lt;br /&gt;
nso = { &amp;quot;sotho du Nord&amp;quot;, &amp;quot;pedi&amp;quot;, &amp;quot;sesotho sa leboa&amp;quot; },&lt;br /&gt;
nsp = { &amp;quot;langue des signes népalaise&amp;quot;, signe = true },&lt;br /&gt;
nsr = { &amp;quot;langue des signes maritime&amp;quot;, signe = true },&lt;br /&gt;
ntp = { &amp;quot;tepehuan du Nord&amp;quot; },&lt;br /&gt;
nua = { &amp;quot;yuanga-zuanga&amp;quot; },&lt;br /&gt;
nuj = { &amp;quot;lunyole&amp;quot; },&lt;br /&gt;
nuk = { &amp;quot;nuuchahnulth&amp;quot; },&lt;br /&gt;
num = { &amp;quot;niuafoʻou&amp;quot;, page = &amp;quot;Niuafoʻou (langue)&amp;quot; },&lt;br /&gt;
nuv = { &amp;quot;nuni du Nord&amp;quot;, page = &amp;quot;Nuni&amp;quot; },&lt;br /&gt;
nv  = { &amp;quot;navajo&amp;quot;, &amp;quot;nav&amp;quot;, page = &amp;quot;Navajo (langue)&amp;quot; },&lt;br /&gt;
nwi = { &amp;quot;tanna du Sud-Ouest&amp;quot; },&lt;br /&gt;
ny  = { &amp;quot;chewa&amp;quot; },&lt;br /&gt;
nyb = { &amp;quot;nyangbo&amp;quot; },&lt;br /&gt;
nyd = { &amp;quot;lunyore&amp;quot; },&lt;br /&gt;
nyf = { &amp;quot;giriama&amp;quot;, page = &amp;quot;Giriama (langue)&amp;quot; },&lt;br /&gt;
nyi = { &amp;quot;nyimang&amp;quot; },&lt;br /&gt;
nyo = { &amp;quot;nyoro&amp;quot;, page = &amp;quot;Nyoro (langue)&amp;quot; },&lt;br /&gt;
nys = { &amp;quot;nyungar&amp;quot; },&lt;br /&gt;
nyy = { &amp;quot;nyakyusa&amp;quot;, &amp;quot;kinyakyusa&amp;quot;, page = &amp;quot;Nyakyusa (langue)&amp;quot; },&lt;br /&gt;
nzd = { &amp;quot;nzadi&amp;quot;, page = &amp;quot;Nzadi (langue)&amp;quot; },&lt;br /&gt;
nzi = { &amp;quot;nzema&amp;quot;, page = &amp;quot;Nzema (langue)&amp;quot; },&lt;br /&gt;
nzk = { &amp;quot;nzakara&amp;quot;, &amp;quot;nzakala&amp;quot;, page = &amp;quot;Nzakara (langue)&amp;quot; },&lt;br /&gt;
nzs = { &amp;quot;langue des signes néo-zélandaise&amp;quot;, signe = true },&lt;br /&gt;
-- o&lt;br /&gt;
oaa = { &amp;quot;orok&amp;quot; },&lt;br /&gt;
oac = { &amp;quot;orotche&amp;quot; },&lt;br /&gt;
oar = { &amp;quot;araméen ancien&amp;quot;, page = &amp;quot;Araméen&amp;quot; },&lt;br /&gt;
obt = { &amp;quot;vieux breton&amp;quot; },&lt;br /&gt;
oc  = { &amp;quot;occitan&amp;quot;, &amp;quot;oci&amp;quot;, },&lt;br /&gt;
[&#039;oc-aranes&#039;] = { &amp;quot;aranais&amp;quot; },&lt;br /&gt;
[&#039;oc-auvern&#039;] = { &amp;quot;auvergnat&amp;quot; },&lt;br /&gt;
[&#039;oc-cisaup&#039;] = { &amp;quot;cisalpin&amp;quot;, page = &amp;quot;Occitan&amp;quot; },&lt;br /&gt;
[&#039;oc-gascon&#039;] = { &amp;quot;gascon&amp;quot; },&lt;br /&gt;
[&#039;oc-lemosin&#039;] = { &amp;quot;limousin&amp;quot;, page = &amp;quot;Limousin (dialecte)&amp;quot; },&lt;br /&gt;
[&#039;oc-lengadoc&#039;] = { &amp;quot;languedocien&amp;quot; },&lt;br /&gt;
[&#039;oc-nicard&#039;] = { &amp;quot;niçois&amp;quot; },&lt;br /&gt;
[&#039;oc-provenc&#039;] = { &amp;quot;provençal&amp;quot; },&lt;br /&gt;
[&#039;oc-vivaraup&#039;] = { &amp;quot;vivaro-alpin&amp;quot; },&lt;br /&gt;
och = { &amp;quot;chinois archaïque&amp;quot; },&lt;br /&gt;
ocm = { &amp;quot;vieux cham&amp;quot; },&lt;br /&gt;
oco = { &amp;quot;cornique&amp;quot; },&lt;br /&gt;
ocu = { &amp;quot;tlahuica&amp;quot; },&lt;br /&gt;
odk = { &amp;quot;od&amp;quot;, &amp;quot;odki&amp;quot;, page = &amp;quot;Od (langue)&amp;quot; },&lt;br /&gt;
odt = { &amp;quot;vieux néerlandais&amp;quot; },&lt;br /&gt;
odu = { &amp;quot;odual&amp;quot; },&lt;br /&gt;
ofr = { &amp;quot;francique oriental&amp;quot; },&lt;br /&gt;
ofs = { &amp;quot;vieux frison&amp;quot; },&lt;br /&gt;
ogc = { &amp;quot;ogba&amp;quot; },&lt;br /&gt;
oj  = { &amp;quot;ojibwé&amp;quot;, page = &amp;quot;Ojibwé (langue)&amp;quot; },&lt;br /&gt;
ojw = { &amp;quot;saulteaux&amp;quot;, &amp;quot;ojibwé des plaines&amp;quot;, &amp;quot;ojibwé occidental&amp;quot;, page = &amp;quot;Saulteaux (langue)&amp;quot; },&lt;br /&gt;
oka = { &amp;quot;colville-okanagan&amp;quot; },&lt;br /&gt;
okc = { &amp;quot;kobo&amp;quot;, &amp;quot;kikobo&amp;quot;, page = &amp;quot;Kobo (langue)&amp;quot; },&lt;br /&gt;
okl = { &amp;quot;vieille langue des signes kentoise&amp;quot;, signe = true },&lt;br /&gt;
okm = { &amp;quot;moyen coréen&amp;quot; },&lt;br /&gt;
okn = { &amp;quot;oki-no-erabu&amp;quot; },&lt;br /&gt;
oko = { &amp;quot;vieux coréen&amp;quot; },&lt;br /&gt;
okr = { &amp;quot;kirike&amp;quot;, &amp;quot;okrika&amp;quot;, page = &amp;quot;Kalabari (langue)&amp;quot; },&lt;br /&gt;
old = { &amp;quot;mochi&amp;quot;, page = &amp;quot;Mochi (langue)&amp;quot; },&lt;br /&gt;
olo = { &amp;quot;olonetsien&amp;quot; },&lt;br /&gt;
om  = { &amp;quot;oromo&amp;quot;, page = &amp;quot;Oromo (langue)&amp;quot; },&lt;br /&gt;
omi = { &amp;quot;omi&amp;quot;, &amp;quot;omiti&amp;quot;, page = &amp;quot;Omi (langue)&amp;quot; },&lt;br /&gt;
oml = { &amp;quot;ombo&amp;quot;, page = &amp;quot;Ombo (langue)&amp;quot; },&lt;br /&gt;
omy = { &amp;quot;vieux malais&amp;quot; },&lt;br /&gt;
one = { &amp;quot;oneida&amp;quot;, page = &amp;quot;Oneida (langue)&amp;quot; },&lt;br /&gt;
ono = { &amp;quot;onondaga&amp;quot;, page = &amp;quot;Onondaga (langue)&amp;quot; },&lt;br /&gt;
ood = { &amp;quot;o&#039;odham&amp;quot;, &amp;quot;papago&amp;quot;, &amp;quot;pima&amp;quot; },&lt;br /&gt;
[&amp;quot;or&amp;quot;]  = { &amp;quot;odia&amp;quot;, &amp;quot;oriya&amp;quot; },	-- or est un mot clé lua : ne pas retirer les crochets - guillemets&lt;br /&gt;
ore = { &amp;quot;orejón&amp;quot;, &amp;quot;orejon&amp;quot;, &amp;quot;maijiki&amp;quot; },&lt;br /&gt;
orh = { &amp;quot;oroqen&amp;quot;, page = &amp;quot;Oroqen (langue)&amp;quot; },&lt;br /&gt;
[&amp;quot;orv-olr&amp;quot;] = { &amp;quot;ruthène ancien&amp;quot;, &amp;quot;ruthène&amp;quot;, invalide = &amp;quot;rue&amp;quot; }, -- code linguist list, orv=old russian, olr=olrat (Vanuatu)&lt;br /&gt;
orv = { &amp;quot;vieux russe&amp;quot; },&lt;br /&gt;
os  = { &amp;quot;ossète&amp;quot; },&lt;br /&gt;
osa = { &amp;quot;osage&amp;quot;, page = &amp;quot;Osage (langue)&amp;quot; },&lt;br /&gt;
osc = { &amp;quot;osque&amp;quot; },&lt;br /&gt;
osn = { &amp;quot;vieux soundanais&amp;quot; },&lt;br /&gt;
osp = { &amp;quot;castillan ancien&amp;quot;, &amp;quot;vieil espagnol&amp;quot; },&lt;br /&gt;
osx = { &amp;quot;vieux saxon&amp;quot;, &amp;quot;vieux bas allemand&amp;quot; },&lt;br /&gt;
ota = { &amp;quot;turc ottoman&amp;quot;, rtl = true },&lt;br /&gt;
otk = { &amp;quot;vieux turc&amp;quot;, &amp;quot;vieux-turc&amp;quot;, rtl = true },&lt;br /&gt;
otw = { &amp;quot;outaouais&amp;quot;, page = &amp;quot;Outaouais (langue)&amp;quot; },&lt;br /&gt;
owl = { &amp;quot;vieux gallois&amp;quot; },&lt;br /&gt;
oym = { &amp;quot;wayãpi&amp;quot;, page = &amp;quot;Wayãpi (langue)&amp;quot; },&lt;br /&gt;
-- p&lt;br /&gt;
pa  = { &amp;quot;pendjabi&amp;quot; },&lt;br /&gt;
pae = { &amp;quot;pagibete&amp;quot;, &amp;quot;pagabete&amp;quot; },&lt;br /&gt;
pag = { &amp;quot;pangasinan&amp;quot;, page = &amp;quot;Pangasinan (langue)&amp;quot; },&lt;br /&gt;
pal = { &amp;quot;moyen perse&amp;quot;, &amp;quot;pehlevi&amp;quot;, &amp;quot;moyen-perse&amp;quot; },&lt;br /&gt;
pam = { &amp;quot;pampangue&amp;quot;, &amp;quot;pampangan&amp;quot; },&lt;br /&gt;
pap = { &amp;quot;papiamento&amp;quot; },&lt;br /&gt;
pau = { &amp;quot;paluan&amp;quot;, page = &amp;quot;Palau (langue)&amp;quot; },&lt;br /&gt;
pay = { &amp;quot;paya&amp;quot;, &amp;quot;pech&amp;quot;, page = &amp;quot;Paya (langue)&amp;quot; },&lt;br /&gt;
pbb  = { &amp;quot;paez&amp;quot;, page = &amp;quot;Paez (langue)&amp;quot; },&lt;br /&gt;
pbs = { &amp;quot;pame central&amp;quot; },&lt;br /&gt;
pcc = { &amp;quot;bouyei&amp;quot; },&lt;br /&gt;
pcd = { &amp;quot;picard&amp;quot; },&lt;br /&gt;
pce = { &amp;quot;palaung palé&amp;quot; },&lt;br /&gt;
pcm = { &amp;quot;pidgin nigérian&amp;quot; },&lt;br /&gt;
pdc = { &amp;quot;allemand de Pennsylvanie&amp;quot;, &amp;quot;pennsilfaanisch&amp;quot; },&lt;br /&gt;
pdt = { &amp;quot;bas allemand mennonite&amp;quot; },&lt;br /&gt;
pdu = { &amp;quot;kayan&amp;quot;, &amp;quot;padaung&amp;quot;, page = &amp;quot;Kayan (langue)&amp;quot; },&lt;br /&gt;
pei = { &amp;quot;jonaz&amp;quot;, &amp;quot;chichimèque jonaz&amp;quot; },&lt;br /&gt;
pem = { &amp;quot;kipende&amp;quot;, page = &amp;quot;Kipende (langue)&amp;quot; },&lt;br /&gt;
peo = { &amp;quot;vieux perse&amp;quot; },&lt;br /&gt;
pfl = { &amp;quot;palatin&amp;quot;, page = &amp;quot;Palatin (langue)&amp;quot; },&lt;br /&gt;
phk = { &amp;quot;tai phake&amp;quot;, &amp;quot;phake&amp;quot; },&lt;br /&gt;
phl = { &amp;quot;phalura&amp;quot; },&lt;br /&gt;
phn = { &amp;quot;phénicien&amp;quot; },&lt;br /&gt;
pi  = { &amp;quot;pali&amp;quot; },&lt;br /&gt;
pic = { &amp;quot;apindji&amp;quot;, page = &amp;quot;Apindji (langue)&amp;quot; },&lt;br /&gt;
pid = { &amp;quot;piaroa&amp;quot;, page = &amp;quot;Piaroa (langue)&amp;quot; },&lt;br /&gt;
pih = { &amp;quot;norfolk&amp;quot;, &amp;quot;norfuk&amp;quot;, page = &amp;quot;Norfolk (langue)&amp;quot; },&lt;br /&gt;
pkb = { &amp;quot;pokomo&amp;quot;, page = &amp;quot;Pokomo (langue)&amp;quot; },&lt;br /&gt;
pkc = { &amp;quot;han-baekje&amp;quot;, page = &amp;quot;Mahan (langue)&amp;quot; },&lt;br /&gt;
pko = { &amp;quot;pökot&amp;quot;, &amp;quot;pokot&amp;quot; },&lt;br /&gt;
pks = { &amp;quot;langue des signes pakistanaise&amp;quot;, signe = true },&lt;br /&gt;
pl  = { &amp;quot;polonais&amp;quot;, &amp;quot;polish&amp;quot; },&lt;br /&gt;
plg = { &amp;quot;pilagá&amp;quot;, &amp;quot;pilaga&amp;quot;, page = &amp;quot;Pilagá (langue)&amp;quot; },&lt;br /&gt;
pll = { &amp;quot;palaung shwe&amp;quot; },&lt;br /&gt;
plo = { &amp;quot;popoluca d&#039;Oluta&amp;quot;, &amp;quot;olutèque&amp;quot; },&lt;br /&gt;
plu = { &amp;quot;palikur&amp;quot;, page = &amp;quot;Palikur (langue)&amp;quot; },&lt;br /&gt;
pma = { &amp;quot;paama&amp;quot;, page = &amp;quot;Paama (langue)&amp;quot; },&lt;br /&gt;
pmq = { &amp;quot;pame du Nord&amp;quot; },&lt;br /&gt;
pms = { &amp;quot;piémontais&amp;quot; },&lt;br /&gt;
pmt = { &amp;quot;paumotu&amp;quot; },&lt;br /&gt;
pnb = { &amp;quot;pendjabi occidental&amp;quot;, page = &amp;quot;Pendjabi&amp;quot;, rtl = true },&lt;br /&gt;
pnk = { &amp;quot;paunaka&amp;quot; },&lt;br /&gt;
pnt = { &amp;quot;pontique&amp;quot;, &amp;quot;grec pontique&amp;quot;, page = &amp;quot;Pontique (langue)&amp;quot; },&lt;br /&gt;
poi = { &amp;quot;popoluca de la Sierra&amp;quot;, &amp;quot;soteapanèque&amp;quot; },&lt;br /&gt;
pon = { &amp;quot;pohnpei&amp;quot;, page = &amp;quot;Pohnpei (langue)&amp;quot; },&lt;br /&gt;
pos = { &amp;quot;popoluca de Sayula&amp;quot;, &amp;quot;sayultèque&amp;quot; },&lt;br /&gt;
pov = { &amp;quot;créole de Guinée-Bissau&amp;quot; },&lt;br /&gt;
prg = { &amp;quot;vieux-prussien&amp;quot;, &amp;quot;vieux prussien&amp;quot; },&lt;br /&gt;
prk = { &amp;quot;parauk&amp;quot; },&lt;br /&gt;
prl = { &amp;quot;langue des signes péruvienne&amp;quot;, signe = true },&lt;br /&gt;
pro = { &amp;quot;ancien occitan&amp;quot; },&lt;br /&gt;
prs = { &amp;quot;dari&amp;quot; },&lt;br /&gt;
prz = { &amp;quot;langue des signes de Providencia&amp;quot;, signe = true },&lt;br /&gt;
ps  = { &amp;quot;pachto&amp;quot;, rtl = true },&lt;br /&gt;
psc = { &amp;quot;langue des signes perse&amp;quot;, signe = true },&lt;br /&gt;
psd = { &amp;quot;langues des signes des Indiens des Plaines&amp;quot;, signe = true },&lt;br /&gt;
psg = { &amp;quot;langue des signes de Penang&amp;quot;, signe = true },&lt;br /&gt;
psl = { &amp;quot;langue des signes portoricaine&amp;quot;, signe = true },&lt;br /&gt;
pso = { &amp;quot;langue des signes polonaise&amp;quot;, signe = true },&lt;br /&gt;
psp = { &amp;quot;langue des signes philippine&amp;quot;, signe = true },&lt;br /&gt;
psr = { &amp;quot;langue des signes portugaise&amp;quot;, signe = true },&lt;br /&gt;
pt  = { &amp;quot;portugais&amp;quot;, &amp;quot;portuguese&amp;quot; },&lt;br /&gt;
[&amp;quot;pt-BR&amp;quot;] = { &amp;quot;portugais brésilien&amp;quot; },&lt;br /&gt;
pua = { &amp;quot;purépecha occidental&amp;quot;, page = &amp;quot;Purépecha&amp;quot; },&lt;br /&gt;
pug = { &amp;quot;puguli&amp;quot; },&lt;br /&gt;
pui = { &amp;quot;puinave&amp;quot;, page = &amp;quot;Puinave (langue)&amp;quot; },&lt;br /&gt;
puw = { &amp;quot;puluwat&amp;quot;, page = &amp;quot;Puluwat (langue)&amp;quot; },&lt;br /&gt;
pwo = { &amp;quot;pwo de l&#039;Ouest&amp;quot;, &amp;quot;pwo occidental&amp;quot; },&lt;br /&gt;
pww = { &amp;quot;pwo du Nord&amp;quot;, &amp;quot;pwo septentrional&amp;quot; },&lt;br /&gt;
pye = { &amp;quot;kroumen piè&amp;quot;, page = &amp;quot;Kroumen (langue)&amp;quot; },&lt;br /&gt;
pys = { &amp;quot;langue des signes paraguayenne&amp;quot;, signe = true },&lt;br /&gt;
pyu = { &amp;quot;puyuma&amp;quot;, page = &amp;quot;Puyuma (langue)&amp;quot; },&lt;br /&gt;
-- q&lt;br /&gt;
qu  = { &amp;quot;quechua&amp;quot; },&lt;br /&gt;
qug = { &amp;quot;kichwa&amp;quot; },&lt;br /&gt;
qun = { &amp;quot;quinault&amp;quot;, page = &amp;quot;Quinault (langue)&amp;quot; },&lt;br /&gt;
quy = { &amp;quot;quechua d&#039;Ayacucho&amp;quot;, page = &amp;quot;Quechua&amp;quot; },&lt;br /&gt;
quz = { &amp;quot;quechua de Cuzco&amp;quot;, page = &amp;quot;Quechua&amp;quot; },&lt;br /&gt;
qya = { &amp;quot;quenya&amp;quot; },&lt;br /&gt;
-- r&lt;br /&gt;
rad = { &amp;quot;rhade&amp;quot;, page = &amp;quot;Rhade (langue)&amp;quot; },&lt;br /&gt;
rag = { &amp;quot;logooli&amp;quot;, &amp;quot;lulogooli&amp;quot;, &amp;quot;ragoli&amp;quot;, page = &amp;quot;Logooli (langue)&amp;quot; },&lt;br /&gt;
raj = { &amp;quot;rajasthani&amp;quot; },&lt;br /&gt;
rap = { &amp;quot;rapanui&amp;quot;, page = &amp;quot;Rapanui (langue)&amp;quot; },&lt;br /&gt;
rar = { &amp;quot;maori des îles Cook&amp;quot;, &amp;quot;maori des iles cook&amp;quot; },&lt;br /&gt;
raw = { &amp;quot;rawang&amp;quot; },&lt;br /&gt;
ray = { &amp;quot;rapa&amp;quot;, page = &amp;quot;Rapa (langue)&amp;quot; },&lt;br /&gt;
rbb = { &amp;quot;palaung rumai&amp;quot; },&lt;br /&gt;
rcf = { &amp;quot;créole réunionnais&amp;quot; },&lt;br /&gt;
rde = { &amp;quot;allemand de la Ruhr&amp;quot;, invalide = &amp;quot;de&amp;quot; },   -- code non standard&lt;br /&gt;
rgn = { &amp;quot;romagnol&amp;quot; },&lt;br /&gt;
rhg = { &amp;quot;rohingya &amp;quot; },&lt;br /&gt;
rif = { &amp;quot;rifain&amp;quot; },&lt;br /&gt;
rin = { &amp;quot;nungu&amp;quot;, page = &amp;quot;Nungu (langue)&amp;quot; },&lt;br /&gt;
rki = { &amp;quot;arakanais&amp;quot;, page = &amp;quot;Arakanais (langue)&amp;quot; },&lt;br /&gt;
rkt = { &amp;quot;rangpuri&amp;quot;, &amp;quot;kamta&amp;quot;, &amp;quot;bahe&amp;quot; },&lt;br /&gt;
rm  = { &amp;quot;romanche&amp;quot;, &amp;quot;rhéto-roman&amp;quot; },&lt;br /&gt;
rmc = { &amp;quot;romani central&amp;quot; },&lt;br /&gt;
rmf = { &amp;quot;romani finlandais&amp;quot; },&lt;br /&gt;
rmg = { &amp;quot;romani norvégien&amp;quot;, page = &amp;quot;Scandoromani&amp;quot; },&lt;br /&gt;
rms = { &amp;quot;langue des signes roumaine&amp;quot;, signe = true },&lt;br /&gt;
rmu = { &amp;quot;romani suédois&amp;quot;, page = &amp;quot;Scandoromani&amp;quot; },&lt;br /&gt;
rmy = { &amp;quot;romani vlax&amp;quot; },&lt;br /&gt;
rn  = { &amp;quot;kirundi&amp;quot;, &amp;quot;run&amp;quot; },&lt;br /&gt;
ro  = { &amp;quot;roumain&amp;quot; },&lt;br /&gt;
[&amp;quot;ro-MD&amp;quot;] = { &amp;quot;moldave&amp;quot; },&lt;br /&gt;
roa = { &amp;quot;langues romanes&amp;quot; },&lt;br /&gt;
[&amp;quot;roa-tara&amp;quot;] = { &amp;quot;tarentin&amp;quot;, invalide = &amp;quot;nap&amp;quot; },   -- code non standard, roa=langues romanes, tara=invalide&lt;br /&gt;
rom = { &amp;quot;romani&amp;quot; },&lt;br /&gt;
rsi = { &amp;quot;langue des signes rennellienne&amp;quot;, &amp;quot;langue des signes de rennell&amp;quot;, signe = true },&lt;br /&gt;
rsl = { &amp;quot;langue des signes russe&amp;quot;, signe = true },&lt;br /&gt;
ru  = { &amp;quot;russe&amp;quot;, &amp;quot;russian&amp;quot; },&lt;br /&gt;
rue = { &amp;quot;rusyn&amp;quot; },&lt;br /&gt;
ruo = { &amp;quot;istro-roumain&amp;quot;, &amp;quot;valaque d’istrie&amp;quot;, &amp;quot;istrien&amp;quot; },&lt;br /&gt;
rup = { &amp;quot;aroumain&amp;quot;, &amp;quot;roa-rup&amp;quot; },&lt;br /&gt;
ruq = { &amp;quot;mégléno-roumain&amp;quot; },&lt;br /&gt;
[&amp;quot;ruq-Cyrl&amp;quot;] = { &amp;quot;mégléno-roumain en écriture cyrillique&amp;quot;, page = &amp;quot;Mégléno-roumain&amp;quot; },&lt;br /&gt;
[&amp;quot;ruq-Latn&amp;quot;] = { &amp;quot;mégléno-roumain en écriture latine&amp;quot;, page = &amp;quot;Mégléno-roumain&amp;quot; },&lt;br /&gt;
rw  = { &amp;quot;kinyarwanda&amp;quot; },&lt;br /&gt;
rwk = { &amp;quot;rwa&amp;quot; },&lt;br /&gt;
ry  = { &amp;quot;ruthène ancien&amp;quot;, invalide = &amp;quot;rue&amp;quot; },    -- code non standard, voir orv-olr&lt;br /&gt;
ryn = { &amp;quot;amami du Nord&amp;quot; },&lt;br /&gt;
rys = { &amp;quot;yaeyama&amp;quot; },&lt;br /&gt;
ryu = { &amp;quot;okinawaïen&amp;quot; },&lt;br /&gt;
rzh = { &amp;quot;razihi&amp;quot; },&lt;br /&gt;
-- s&lt;br /&gt;
sa  = { &amp;quot;sanskrit&amp;quot; },&lt;br /&gt;
saf = { &amp;quot;safaliba&amp;quot; },&lt;br /&gt;
sah = { &amp;quot;iakoute&amp;quot; },&lt;br /&gt;
sat = { &amp;quot;santali&amp;quot;, &amp;quot;santâlî&amp;quot; },&lt;br /&gt;
sbd = { &amp;quot;samo maka&amp;quot;, page = &amp;quot;Samo (langue)&amp;quot; },&lt;br /&gt;
sc  = { &amp;quot;sarde&amp;quot; },&lt;br /&gt;
scl = { &amp;quot;shina&amp;quot; },&lt;br /&gt;
scn = { &amp;quot;sicilien&amp;quot; },&lt;br /&gt;
sco = { &amp;quot;scots&amp;quot; },&lt;br /&gt;
[&amp;quot;sco-ulster&amp;quot;] = { &amp;quot;scots d&#039;Ulster&amp;quot; },&lt;br /&gt;
sd  = { &amp;quot;sindhi&amp;quot; },&lt;br /&gt;
sdc = { &amp;quot;sassarais&amp;quot; },&lt;br /&gt;
sdh = { &amp;quot;kurde du Sud&amp;quot; },&lt;br /&gt;
sdl = { &amp;quot;langue des signes saoudienne&amp;quot;, signe = true },&lt;br /&gt;
se  = { &amp;quot;same du Nord&amp;quot; },&lt;br /&gt;
[&amp;quot;se-FI&amp;quot;] = { &amp;quot;same du Nord&amp;quot; },&lt;br /&gt;
[&amp;quot;se-NO&amp;quot;] = { &amp;quot;same du Nord&amp;quot; },&lt;br /&gt;
[&amp;quot;se-SE&amp;quot;] = { &amp;quot;same du Nord&amp;quot; },&lt;br /&gt;
sec = { &amp;quot;seneca&amp;quot;, &amp;quot;sénéca&amp;quot;, page = &amp;quot;Seneca (langue)&amp;quot; },&lt;br /&gt;
sei = { &amp;quot;seri&amp;quot;, page = &amp;quot;Seri (langue)&amp;quot; },&lt;br /&gt;
sef = { &amp;quot;cebaara&amp;quot;, page = &amp;quot;Cebaara&amp;quot; },&lt;br /&gt;
sel = { &amp;quot;selkoupe&amp;quot; },&lt;br /&gt;
sem = { &amp;quot;langues sémitiques&amp;quot; },&lt;br /&gt;
ses = { &amp;quot;koyraboro senni&amp;quot; },&lt;br /&gt;
sev = { &amp;quot;niarafolo&amp;quot;, &amp;quot;nyarafolo&amp;quot;, page = &amp;quot;Niarafolo (langue)&amp;quot; },&lt;br /&gt;
sey = { &amp;quot;secoya&amp;quot;, page = &amp;quot;Secoya (langue)&amp;quot; },&lt;br /&gt;
sfb = { &amp;quot;langue des signes de Belgique francophone&amp;quot;, signe = true },&lt;br /&gt;
sfs = { &amp;quot;langue des signes sud-africaine&amp;quot;, signe = true },&lt;br /&gt;
sfw = { &amp;quot;sehwi&amp;quot;, &amp;quot;esahie&amp;quot; },&lt;br /&gt;
sg  = { &amp;quot;sango&amp;quot; },&lt;br /&gt;
sga = { &amp;quot;vieil irlandais&amp;quot; },&lt;br /&gt;
sgg = { &amp;quot;langue des signes suisse alémanique&amp;quot;, signe = true },&lt;br /&gt;
sgh = { &amp;quot;shugni&amp;quot; },&lt;br /&gt;
sgn = { &amp;quot;langue des signes&amp;quot;, signe = true },&lt;br /&gt;
sgs = { &amp;quot;samogitien&amp;quot;, &amp;quot;samogitian&amp;quot; },&lt;br /&gt;
sgx = { &amp;quot;langue des signes sierra-léonaise&amp;quot;, signe = true },&lt;br /&gt;
sh  = { &amp;quot;serbo-croate&amp;quot; },&lt;br /&gt;
shb = { &amp;quot;ninam&amp;quot;, &amp;quot;yanam&amp;quot; },&lt;br /&gt;
shi = { &amp;quot;chleuh&amp;quot;, &amp;quot;tachelhit&amp;quot;, &amp;quot;chelha&amp;quot; },&lt;br /&gt;
[&amp;quot;shi-Latn&amp;quot;] = { &amp;quot;chleuh en écriture latine&amp;quot;, page = &amp;quot;Chleuh&amp;quot; },&lt;br /&gt;
[&amp;quot;shi-Tfng&amp;quot;] = { &amp;quot;chleuh en écriture tifinagh&amp;quot;, page = &amp;quot;Chleuh&amp;quot; },&lt;br /&gt;
shk = { &amp;quot;shilluk&amp;quot;, page = &amp;quot;Shilluk (langue)&amp;quot; },&lt;br /&gt;
shn = { &amp;quot;shan&amp;quot;, page = &amp;quot;Shan (langue)&amp;quot; },&lt;br /&gt;
shy = { &amp;quot;chaoui&amp;quot; },&lt;br /&gt;
[&amp;quot;shy-Latn&amp;quot;] = { &amp;quot;chaoui en écriture latine&amp;quot;, page = &amp;quot;Chaoui&amp;quot; },&lt;br /&gt;
si  = { &amp;quot;singhalais&amp;quot; },&lt;br /&gt;
sif = { &amp;quot;siamou&amp;quot;, &amp;quot;sèmè&amp;quot; },&lt;br /&gt;
sig = { &amp;quot;paasaal&amp;quot; },&lt;br /&gt;
simple = { &amp;quot;anglais simple&amp;quot;, &amp;quot;simple english&amp;quot;, page = &amp;quot;Simplifications de l&#039;anglais&amp;quot;, invalide = &amp;quot;en&amp;quot; }, -- code non standard&lt;br /&gt;
sip = { &amp;quot;sikkimais&amp;quot; },&lt;br /&gt;
sja = { &amp;quot;epena saija&amp;quot; },&lt;br /&gt;
sjd = { &amp;quot;same de Kildin&amp;quot; },&lt;br /&gt;
sje = { &amp;quot;same de Pite&amp;quot; },&lt;br /&gt;
sjn = { &amp;quot;sindarin&amp;quot; },&lt;br /&gt;
sjo = { &amp;quot;xibe&amp;quot;, page = &amp;quot;Xibe (langue)&amp;quot; },&lt;br /&gt;
sju = { &amp;quot;same d&#039;Ume&amp;quot; },&lt;br /&gt;
sk  = { &amp;quot;slovaque&amp;quot; },&lt;br /&gt;
ska = { &amp;quot;skagit&amp;quot;, page = &amp;quot;Lushootseed&amp;quot; },&lt;br /&gt;
ski = { &amp;quot;sika&amp;quot;, page = &amp;quot;Sika (langue)&amp;quot; },&lt;br /&gt;
skr = { &amp;quot;saraiki&amp;quot; },&lt;br /&gt;
[&amp;quot;skr-Arab&amp;quot;] = { &amp;quot;seraiki en écriture arabe&amp;quot;, page = &amp;quot;Seraiki&amp;quot; },&lt;br /&gt;
sl  = { &amp;quot;slovène&amp;quot; },&lt;br /&gt;
sla = { &amp;quot;langues slaves&amp;quot; },&lt;br /&gt;
slc = { &amp;quot;sáliva&amp;quot; },&lt;br /&gt;
slf = { &amp;quot;langue des signes suisse italienne&amp;quot;, signe = true },&lt;br /&gt;
slh = { &amp;quot;salish du Puget Sound du sud&amp;quot;, page = &amp;quot;Lushootseed&amp;quot; },&lt;br /&gt;
sli = { &amp;quot;silésien&amp;quot;, page = &amp;quot;Silésien (langue germanique)&amp;quot; },&lt;br /&gt;
slr = { &amp;quot;salar&amp;quot;, page = &amp;quot;Salar (langue)&amp;quot; },&lt;br /&gt;
sls = { &amp;quot;langue des signes de Singapour&amp;quot;, signe = true },&lt;br /&gt;
sm  = { &amp;quot;samoan&amp;quot; },&lt;br /&gt;
sma = { &amp;quot;same du Sud&amp;quot; },&lt;br /&gt;
smg = { &amp;quot;simbali&amp;quot; },&lt;br /&gt;
smi = { &amp;quot;same&amp;quot;, page = &amp;quot;Langues sames&amp;quot; },&lt;br /&gt;
smj = { &amp;quot;same de Lule&amp;quot; },&lt;br /&gt;
smn = { &amp;quot;same d&#039;Inari&amp;quot; },&lt;br /&gt;
sms = { &amp;quot;same skolt&amp;quot; },&lt;br /&gt;
smw = { &amp;quot;sumbawa&amp;quot;, page = &amp;quot;Sumbawa (langue)&amp;quot; },&lt;br /&gt;
sn  = { &amp;quot;shona&amp;quot;, page = &amp;quot;Shona (langue)&amp;quot; },&lt;br /&gt;
sng = { &amp;quot;sanga&amp;quot;, &amp;quot;kisanga&amp;quot;, &amp;quot;luba-sanga&amp;quot;, &amp;quot;kiluba-sanga&amp;quot;, page = &amp;quot;Sanga (langue)&amp;quot; },&lt;br /&gt;
snk = { &amp;quot;soninké&amp;quot;, page = &amp;quot;Soninké (langue)&amp;quot; },&lt;br /&gt;
sno = { &amp;quot;snohomish&amp;quot;, page = &amp;quot;Lushootseed&amp;quot; },&lt;br /&gt;
snw = { &amp;quot;santrokofi&amp;quot;, &amp;quot;selee&amp;quot; },&lt;br /&gt;
so  = { &amp;quot;somali&amp;quot; },&lt;br /&gt;
sog = { &amp;quot;sogdien&amp;quot; },&lt;br /&gt;
son = { &amp;quot;songhaï&amp;quot; },&lt;br /&gt;
soo = { &amp;quot;nsong&amp;quot;, &amp;quot;tsong&amp;quot; },&lt;br /&gt;
sov = { &amp;quot;sonsorolais&amp;quot; },&lt;br /&gt;
sox = { &amp;quot;swo&amp;quot; },&lt;br /&gt;
spp = { &amp;quot;supyiré&amp;quot; },&lt;br /&gt;
spr = { &amp;quot;saparua&amp;quot;, page = &amp;quot;Saparua (langue)&amp;quot; },&lt;br /&gt;
spx = { &amp;quot;sud-picène&amp;quot;, &amp;quot;picène du sud&amp;quot; },&lt;br /&gt;
sq  = { &amp;quot;albanais&amp;quot; },&lt;br /&gt;
sqk = { &amp;quot;langue des signes albanaise&amp;quot;, signe = true },&lt;br /&gt;
sqs = { &amp;quot;langue des signes sri-lankaise&amp;quot;, signe = true },&lt;br /&gt;
sqt = { &amp;quot;soqotri&amp;quot; },&lt;br /&gt;
squ = { &amp;quot;squamish&amp;quot;, &amp;quot;Squamish (langue)&amp;quot; },&lt;br /&gt;
sr  = { &amp;quot;serbe&amp;quot; },&lt;br /&gt;
srd = { &amp;quot;sarde&amp;quot;, invalide = &amp;quot;sc&amp;quot; },&lt;br /&gt;
[&amp;quot;sr-ec&amp;quot;]   = { &amp;quot;serbe en écriture cyrillique&amp;quot;, invalide = &amp;quot;sr-Cyrl&amp;quot; },&lt;br /&gt;
[&amp;quot;sr-Cyrl&amp;quot;] = { &amp;quot;serbe en écriture cyrillique&amp;quot;, page = &amp;quot;Serbe&amp;quot; },&lt;br /&gt;
[&amp;quot;sr-el&amp;quot;]   = { &amp;quot;serbe en écriture latine&amp;quot;, invalide = &amp;quot;sr-Latn&amp;quot; },&lt;br /&gt;
[&amp;quot;sr-Latn&amp;quot;] = { &amp;quot;serbe en écriture latine&amp;quot;, page = &amp;quot;Serbe&amp;quot; },&lt;br /&gt;
srh = { &amp;quot;sariqoli&amp;quot; },&lt;br /&gt;
srn = { &amp;quot;sranan&amp;quot;, &amp;quot;sranan tongo&amp;quot; },&lt;br /&gt;
sro = { &amp;quot;campidanais&amp;quot; },&lt;br /&gt;
srr = { &amp;quot;sérère&amp;quot;, &amp;quot;seereer&amp;quot;, page = &amp;quot;Sérère (langue)&amp;quot; },&lt;br /&gt;
ss  = { &amp;quot;swati&amp;quot; },&lt;br /&gt;
ssf = { &amp;quot;thao&amp;quot;, page = &amp;quot;Thao (langue)&amp;quot; },&lt;br /&gt;
ssp = { &amp;quot;langue des signes espagnole&amp;quot;, signe = true },&lt;br /&gt;
ssr = { &amp;quot;langue des signes suisse romande&amp;quot;, signe = true },&lt;br /&gt;
st  = { &amp;quot;sotho du Sud&amp;quot;, &amp;quot;sot&amp;quot; },&lt;br /&gt;
stj = { &amp;quot;samo matya&amp;quot;, page = &amp;quot;Samo (langue)&amp;quot; },&lt;br /&gt;
stp = { &amp;quot;tepehuan du Sud-Est&amp;quot; },&lt;br /&gt;
stq = { &amp;quot;frison oriental&amp;quot; },&lt;br /&gt;
str = { &amp;quot;saanich&amp;quot;, page = &amp;quot;Saanich (langue)&amp;quot; },&lt;br /&gt;
stw = { &amp;quot;satawal&amp;quot;, page = &amp;quot;Satawal (langue)&amp;quot; },&lt;br /&gt;
sty = { &amp;quot;tatar sibérien&amp;quot;, &amp;quot;себертатар&amp;quot;, page =&amp;quot;Tatar de Sibérie&amp;quot; },&lt;br /&gt;
su  = { &amp;quot;soundanais&amp;quot;, &amp;quot;sondonésien&amp;quot; },&lt;br /&gt;
sus = { &amp;quot;soso&amp;quot;, &amp;quot;soussou&amp;quot;, &amp;quot;sosso&amp;quot;, &amp;quot;susu&amp;quot;, page = &amp;quot;Soso (langue)&amp;quot; },&lt;br /&gt;
suw = { &amp;quot;sumbwa&amp;quot;, page = &amp;quot;Sumbwa (langue)&amp;quot; },&lt;br /&gt;
sux = { &amp;quot;sumérien&amp;quot; },&lt;br /&gt;
sv  = { &amp;quot;suédois&amp;quot;, &amp;quot;swedish&amp;quot; },&lt;br /&gt;
sva = { &amp;quot;svane&amp;quot;, &amp;quot;svan&amp;quot; },&lt;br /&gt;
svk = { &amp;quot;langue des signes slovaque&amp;quot;, signe = true },&lt;br /&gt;
sw  = { &amp;quot;swahili&amp;quot; },&lt;br /&gt;
swb = { &amp;quot;mahorais&amp;quot; },&lt;br /&gt;
swg = { &amp;quot;souabe&amp;quot;, page = &amp;quot;Souabe (dialecte)&amp;quot; },&lt;br /&gt;
swl = { &amp;quot;langue des signes suédoise&amp;quot;, signe = true },&lt;br /&gt;
sxu = { &amp;quot;haut saxon&amp;quot; },&lt;br /&gt;
sxw = { &amp;quot;saxwe&amp;quot; },&lt;br /&gt;
syc = { &amp;quot;syriaque&amp;quot; },&lt;br /&gt;
syl = { &amp;quot;sylheti&amp;quot; },&lt;br /&gt;
sym = { &amp;quot;samo maya&amp;quot;, page = &amp;quot;Samo (langue)&amp;quot; },&lt;br /&gt;
syr = { &amp;quot;syriaque&amp;quot;, rtl = true },&lt;br /&gt;
syy = { &amp;quot;langue des signes bédouine d&#039;Al-Sayyid&amp;quot;, signe = true },&lt;br /&gt;
szg = { &amp;quot;sengele&amp;quot;, &amp;quot;kesengele&amp;quot;, page = &amp;quot;Sengele (langue)&amp;quot; },&lt;br /&gt;
szl = { &amp;quot;silésien&amp;quot;, page = &amp;quot;Silésien (langue slave)&amp;quot; },&lt;br /&gt;
-- t&lt;br /&gt;
ta  = { &amp;quot;tamoul&amp;quot; },&lt;br /&gt;
tao = { &amp;quot;yami&amp;quot; },&lt;br /&gt;
tap = { &amp;quot;tabwa&amp;quot;, &amp;quot;kitabwa&amp;quot;, &amp;quot;taabwa&amp;quot;, page = &amp;quot;Tabwa (langue)&amp;quot; },&lt;br /&gt;
taq = { &amp;quot;tamasheq&amp;quot; },&lt;br /&gt;
tay = { &amp;quot;atayal&amp;quot; },&lt;br /&gt;
tbk = { &amp;quot;tagbanwa calamian&amp;quot; },&lt;br /&gt;
tbl = { &amp;quot;t&#039;boli&amp;quot;, &amp;quot;tboli&amp;quot;, &amp;quot;tagabili&amp;quot; },&lt;br /&gt;
tbt = { &amp;quot;tembo&amp;quot;, &amp;quot;chitembo&amp;quot;, &amp;quot;kitembo&amp;quot;, page = &amp;quot;Tembo (langue)&amp;quot; },&lt;br /&gt;
tbv = { &amp;quot;tobo&amp;quot;, page = &amp;quot;Tobo-kube&amp;quot; },&lt;br /&gt;
tbz = { &amp;quot;ditammari&amp;quot;, &amp;quot;tammari&amp;quot; },&lt;br /&gt;
tca = { &amp;quot;ticuna&amp;quot; },&lt;br /&gt;
tcy = { &amp;quot;toulou&amp;quot;, &amp;quot;tulu&amp;quot; },&lt;br /&gt;
tdc = { &amp;quot;emberá tadó&amp;quot; },&lt;br /&gt;
tdd = { &amp;quot;tai nüa&amp;quot; },&lt;br /&gt;
te  = { &amp;quot;télougou&amp;quot; },&lt;br /&gt;
ted = { &amp;quot;kroumen tépo&amp;quot;, page = &amp;quot;Kroumen (langue)&amp;quot; },&lt;br /&gt;
tek = { &amp;quot;téké-ibali&amp;quot; },&lt;br /&gt;
teo = { &amp;quot;ateso&amp;quot;, &amp;quot;teso&amp;quot;, page = &amp;quot;Teso (langue)&amp;quot; },&lt;br /&gt;
tet = { &amp;quot;tétoum&amp;quot; },&lt;br /&gt;
tfn = { &amp;quot;dena&#039;ina&amp;quot;, &amp;quot;tanaina&amp;quot;, page = &amp;quot;Dena&#039;ina (langue)&amp;quot; },&lt;br /&gt;
tfr = { &amp;quot;teribe&amp;quot; },&lt;br /&gt;
tg  = { &amp;quot;tadjik&amp;quot; },&lt;br /&gt;
[&amp;quot;tg-Cyrl&amp;quot;]  = { &amp;quot;tadjik en écriture cyrillique&amp;quot;, page = &amp;quot;Tadjik&amp;quot; },&lt;br /&gt;
[&amp;quot;tg-Latn&amp;quot;]  = { &amp;quot;tadjik en écriture latine&amp;quot;, page = &amp;quot;Tadjik&amp;quot; },&lt;br /&gt;
tgp = { &amp;quot;tangoa&amp;quot;, page = &amp;quot;Tangoa (langue)&amp;quot; },&lt;br /&gt;
th  = { &amp;quot;thaï&amp;quot;, &amp;quot;thai&amp;quot; },&lt;br /&gt;
thk = { &amp;quot;tharaka&amp;quot;, page = &amp;quot;Tharaka (langue)&amp;quot; },&lt;br /&gt;
thp = { &amp;quot;thompson&amp;quot;, &amp;quot;nłeʔkepmxcin&amp;quot;, page = &amp;quot;Thompson (langue)&amp;quot; },&lt;br /&gt;
thv = { &amp;quot;tamahaq&amp;quot;, &amp;quot;tamahak&amp;quot; },&lt;br /&gt;
thz = { &amp;quot;tamajeq de l&#039;Aïr&amp;quot; },&lt;br /&gt;
ti  = { &amp;quot;tigrigna&amp;quot;, &amp;quot;tigrinya&amp;quot; },&lt;br /&gt;
tji = { &amp;quot;Tujia du Nord&amp;quot;, page = &amp;quot;Tujia&amp;quot; },&lt;br /&gt;
tjl = { &amp;quot;tai laing&amp;quot; },&lt;br /&gt;
tjs = { &amp;quot;tujia du Sud&amp;quot;, page = &amp;quot;Tujia&amp;quot; },&lt;br /&gt;
tk  = { &amp;quot;turkmène&amp;quot; },&lt;br /&gt;
tkl = { &amp;quot;tokelau&amp;quot;, page = &amp;quot;Tokelau (langue)&amp;quot; },&lt;br /&gt;
tkn = { &amp;quot;toku-no-shima&amp;quot; },&lt;br /&gt;
tl  = { &amp;quot;tagalog&amp;quot; },&lt;br /&gt;
tla = { &amp;quot;tepehuan du Sud-Ouest&amp;quot; },&lt;br /&gt;
tlh = { &amp;quot;klingon&amp;quot;, page = &amp;quot;Klingon (langue)&amp;quot; },&lt;br /&gt;
tli = { &amp;quot;tlingit&amp;quot; },&lt;br /&gt;
tll = { &amp;quot;tetela&amp;quot;, &amp;quot;otetela&amp;quot;, page = &amp;quot;Tetela (langue)&amp;quot; },&lt;br /&gt;
tly = { &amp;quot;talysh&amp;quot;, &amp;quot;talyche&amp;quot;, page = &amp;quot;Talysh (langue)&amp;quot; },&lt;br /&gt;
tmh = { &amp;quot;touareg&amp;quot;, &amp;quot;tamacheq&amp;quot;, page = &amp;quot;Langues touarègues&amp;quot; },&lt;br /&gt;
tmr = { &amp;quot;judéo-araméen babylonien&amp;quot;, rtl = true },&lt;br /&gt;
tn  = { &amp;quot;tswana&amp;quot; },&lt;br /&gt;
tnk = { &amp;quot;kwamera&amp;quot; },&lt;br /&gt;
tnq = { &amp;quot;taïno&amp;quot;, &amp;quot;taïnos&amp;quot;, page = &amp;quot;Taïno (langue)&amp;quot; },&lt;br /&gt;
to  = { &amp;quot;tongien&amp;quot; },&lt;br /&gt;
tob = { &amp;quot;toba&amp;quot;, &amp;quot;qom&amp;quot;, page = &amp;quot;Toba (langue)&amp;quot; },&lt;br /&gt;
toj = { &amp;quot;tojolabal&amp;quot; },&lt;br /&gt;
tpi = { &amp;quot;tok pisin&amp;quot; },&lt;br /&gt;
tpm = { &amp;quot;tampulma&amp;quot;, &amp;quot;tamprusi&amp;quot; },&lt;br /&gt;
tpn = { &amp;quot;tupinambá&amp;quot;, &amp;quot;tupinamba&amp;quot;, page = &amp;quot;Tupinambá (langue)&amp;quot; },&lt;br /&gt;
tr  = { &amp;quot;turc&amp;quot; },&lt;br /&gt;
trk = { &amp;quot;langues turciques&amp;quot; },&lt;br /&gt;
trs = { &amp;quot;trique de Chicahuaxtla&amp;quot;, &amp;quot;triqui de Chicahuaxtla&amp;quot; },&lt;br /&gt;
tru = { &amp;quot;touroyo&amp;quot;, &amp;quot;turoyo&amp;quot; },&lt;br /&gt;
trv = { &amp;quot;seediq&amp;quot; },&lt;br /&gt;
trw = { &amp;quot;torwali&amp;quot; },&lt;br /&gt;
ts  = { &amp;quot;tsonga&amp;quot;, page = &amp;quot;Tsonga (langue)&amp;quot; },&lt;br /&gt;
tsd = { &amp;quot;tsakonien&amp;quot;, &amp;quot;tsaconien&amp;quot; },&lt;br /&gt;
tse = { &amp;quot;langue des signes tunisienne&amp;quot;, signe = true },&lt;br /&gt;
tsi = { &amp;quot;tsimshian&amp;quot; },&lt;br /&gt;
tsm = { &amp;quot;langue des signes turque&amp;quot;, signe = true },&lt;br /&gt;
tsq = { &amp;quot;langue des signes thaï&amp;quot;, signe = true },&lt;br /&gt;
tss = { &amp;quot;langue des signes taïwanaise&amp;quot;, signe = true },&lt;br /&gt;
tsu = { &amp;quot;tsou&amp;quot;, page = &amp;quot;Tsou (langue)&amp;quot; },&lt;br /&gt;
tsy = { &amp;quot;langue des signes de Tebul&amp;quot;, signe = true },&lt;br /&gt;
tsz = { &amp;quot;purépecha&amp;quot;, &amp;quot;p&#039;urhépecha&amp;quot;, &amp;quot;tarasque&amp;quot; },&lt;br /&gt;
tt  = { &amp;quot;tatar&amp;quot; },&lt;br /&gt;
[&amp;quot;tt-Cyrl&amp;quot;]  = { &amp;quot;tatar en écriture cyrillique&amp;quot;, page = &amp;quot;Tatar&amp;quot; },&lt;br /&gt;
[&amp;quot;tt-Latn&amp;quot;]  = { &amp;quot;tatar en écriture latine&amp;quot;, page = &amp;quot;Tatar&amp;quot; },&lt;br /&gt;
ttq = { &amp;quot;tawellemmet&amp;quot; },&lt;br /&gt;
[&amp;quot;ttq-Latn&amp;quot;] = { &amp;quot;tawellemmet en écriture latine&amp;quot;, page = &amp;quot;Tawellemet&amp;quot; },&lt;br /&gt;
[&amp;quot;ttq-Tfng&amp;quot;] = { &amp;quot;tawellemmet en écriture tifinagh&amp;quot;, page = &amp;quot;Tawellemet&amp;quot; },&lt;br /&gt;
tts = { &amp;quot;isan&amp;quot; , page = &amp;quot;Isan (langue)&amp;quot; },&lt;br /&gt;
ttt = { &amp;quot;tat&amp;quot; },&lt;br /&gt;
tum = { &amp;quot;tumbuka&amp;quot;, page = &amp;quot;Tumbuka (langue)&amp;quot; },&lt;br /&gt;
tun = { &amp;quot;tunica&amp;quot;, page = &amp;quot;Tunica (langue)&amp;quot; },&lt;br /&gt;
tus = { &amp;quot;tuscarora&amp;quot;, page = &amp;quot;Tuscarora (langue)&amp;quot; },&lt;br /&gt;
tut = { &amp;quot;langues altaïques&amp;quot; },&lt;br /&gt;
tuw = { &amp;quot;langues toungouses&amp;quot; },&lt;br /&gt;
tuz = { &amp;quot;tchourama&amp;quot; },&lt;br /&gt;
tvl = { &amp;quot;tuvaluan&amp;quot; },&lt;br /&gt;
tw  = { &amp;quot;twi&amp;quot; },&lt;br /&gt;
twa = { &amp;quot;twana&amp;quot;, &amp;quot;skokomish&amp;quot; },&lt;br /&gt;
twm = { &amp;quot;monba&amp;quot;, page = &amp;quot;Monba (langue)&amp;quot; },&lt;br /&gt;
twq = { &amp;quot;tasawaq&amp;quot;, page = &amp;quot;Tasawaq (langue)&amp;quot; },&lt;br /&gt;
txb = { &amp;quot;koutchéen&amp;quot;, &amp;quot;tokharien b&amp;quot;, &amp;quot;tokharien occidental&amp;quot; },&lt;br /&gt;
txg = { &amp;quot;tangoute&amp;quot; },&lt;br /&gt;
ty  = { &amp;quot;tahitien&amp;quot; },&lt;br /&gt;
tyv = { &amp;quot;touvain&amp;quot; },&lt;br /&gt;
tza = { &amp;quot;langue des signes tanzanienne&amp;quot;, signe = true },&lt;br /&gt;
tzl = { &amp;quot;talossien&amp;quot;, page = &amp;quot;Talossa#La langue&amp;quot; },&lt;br /&gt;
tzm = { &amp;quot;tamazight du Maroc central&amp;quot;, &amp;quot;braber&amp;quot; },&lt;br /&gt;
tzo = { &amp;quot;tzotzil&amp;quot; },&lt;br /&gt;
-- u&lt;br /&gt;
uba = { &amp;quot;ubang&amp;quot; },&lt;br /&gt;
ude = { &amp;quot;oudihé&amp;quot; },&lt;br /&gt;
udm = { &amp;quot;oudmourte&amp;quot; },&lt;br /&gt;
udu = { &amp;quot;uduk&amp;quot;, page = &amp;quot;Uduk (langue)&amp;quot; },&lt;br /&gt;
ug  = { &amp;quot;ouïghour&amp;quot;, rtl = true },&lt;br /&gt;
[&amp;quot;ug-Arab&amp;quot;]  = { &amp;quot;ouïghour en écriture arabe&amp;quot;, page = &amp;quot;Ouïghour&amp;quot;, rtl = true },&lt;br /&gt;
[&amp;quot;ug-Latn&amp;quot;]  = { &amp;quot;ouïghour en écriture latine&amp;quot;, page = &amp;quot;Ouïghour&amp;quot; },&lt;br /&gt;
uga = { &amp;quot;ougaritique&amp;quot; },&lt;br /&gt;
ugn = { &amp;quot;langue des signes ougandaise&amp;quot;, signe = true },&lt;br /&gt;
ugy = { &amp;quot;langue des signes uruguayenne&amp;quot;, signe = true },&lt;br /&gt;
uhn = { &amp;quot;damal&amp;quot; , page = &amp;quot;Damal (langue)&amp;quot; },&lt;br /&gt;
uk  = { &amp;quot;ukrainien&amp;quot; },&lt;br /&gt;
ukl = { &amp;quot;langue des signes ukrainienne&amp;quot;, signe = true },&lt;br /&gt;
ukp = { &amp;quot;ukpe-bayobiri&amp;quot; },&lt;br /&gt;
uks = { &amp;quot;langue des signes urubú-kaapor&amp;quot;, &amp;quot;langue des signes urubu-kaapor&amp;quot;, signe = true },&lt;br /&gt;
ulc = { &amp;quot;oultche&amp;quot; },&lt;br /&gt;
uli = { &amp;quot;ulithi&amp;quot;, page = &amp;quot;Ulithi (langue)&amp;quot;, signe = true },&lt;br /&gt;
uma = { &amp;quot;umatilla&amp;quot;, page = &amp;quot;Umatilla (langue)&amp;quot; },&lt;br /&gt;
und = { &amp;quot;langue indéterminée&amp;quot;, page = &amp;quot;&amp;quot; },&lt;br /&gt;
ur  = { &amp;quot;ourdou&amp;quot;, rtl = true },&lt;br /&gt;
uve = { &amp;quot;fagauvea&amp;quot; },&lt;br /&gt;
uz  = { &amp;quot;ouzbek&amp;quot; },&lt;br /&gt;
[&amp;quot;uz-Cyrl&amp;quot;]  = { &amp;quot;ouzbek en écriture cyrillique&amp;quot;, page = &amp;quot;Ouzbek&amp;quot; },&lt;br /&gt;
[&amp;quot;uz-Latn&amp;quot;]  = { &amp;quot;ouzbek en écriture latine&amp;quot;, page = &amp;quot;Ouzbek&amp;quot; },&lt;br /&gt;
-- v&lt;br /&gt;
ve  = { &amp;quot;venda&amp;quot;, page = &amp;quot;Venda (langue)&amp;quot; },&lt;br /&gt;
vec = { &amp;quot;vénitien&amp;quot; },&lt;br /&gt;
vep = { &amp;quot;vepse&amp;quot; },&lt;br /&gt;
ver = { &amp;quot;mom jango&amp;quot; },&lt;br /&gt;
vgt = { &amp;quot;langue des signes flamande&amp;quot;, signe = true },&lt;br /&gt;
vi  = { &amp;quot;vietnamien&amp;quot; },&lt;br /&gt;
vin = { &amp;quot;vinza&amp;quot;, page = &amp;quot;Langues rwanda-rundi&amp;quot; },&lt;br /&gt;
vls = { &amp;quot;flamand occidental&amp;quot; },&lt;br /&gt;
vmf = { &amp;quot;francique oriental&amp;quot; },&lt;br /&gt;
vmw = { &amp;quot;makua&amp;quot;, page = &amp;quot;Makua (langue)&amp;quot; },&lt;br /&gt;
vo  = { &amp;quot;volapük&amp;quot; },&lt;br /&gt;
vot = { &amp;quot;vote&amp;quot;, page = &amp;quot;Vote (langue)&amp;quot; },&lt;br /&gt;
vro = { &amp;quot;võro&amp;quot;, &amp;quot;fiu-vro&amp;quot; },&lt;br /&gt;
vsi = { &amp;quot;langue des signes moldave&amp;quot;, signe = true },&lt;br /&gt;
vsl = { &amp;quot;langue des signes vénézuélienne&amp;quot;, signe = true },&lt;br /&gt;
vsv = { &amp;quot;langue des signes valencienne&amp;quot;, signe = true },&lt;br /&gt;
vut = { &amp;quot;vute&amp;quot;, &amp;quot;vútè&amp;quot;, page = &amp;quot;Vute (langue)&amp;quot; },&lt;br /&gt;
-- w&lt;br /&gt;
wa  = { &amp;quot;wallon&amp;quot; },&lt;br /&gt;
war = { &amp;quot;waray-waray&amp;quot; },&lt;br /&gt;
was = { &amp;quot;washo&amp;quot; },&lt;br /&gt;
way = { &amp;quot;wayana&amp;quot;, page = &amp;quot;Wayana (langue)&amp;quot; },&lt;br /&gt;
wbi = { &amp;quot;vwanji&amp;quot; },&lt;br /&gt;
wca = { &amp;quot;yanomam&amp;quot; },&lt;br /&gt;
wci = { &amp;quot;waci&amp;quot;, page = &amp;quot;Waci (langue)&amp;quot; },&lt;br /&gt;
wen = { &amp;quot;sorabe&amp;quot; },&lt;br /&gt;
wes = { &amp;quot;pidgin camerounais&amp;quot; },&lt;br /&gt;
win = { &amp;quot;winnebago&amp;quot;, page = &amp;quot;Winnebago (langue)&amp;quot; },&lt;br /&gt;
wlm = { &amp;quot;moyen gallois&amp;quot; },&lt;br /&gt;
wls = { &amp;quot;wallisien&amp;quot; },&lt;br /&gt;
wo  = { &amp;quot;wolof&amp;quot;, page = &amp;quot;Wolof (langue)&amp;quot; },&lt;br /&gt;
woe = { &amp;quot;woléaïen&amp;quot; },&lt;br /&gt;
wuu = { &amp;quot;wu&amp;quot;, page = &amp;quot;Wu (langue)&amp;quot; },&lt;br /&gt;
wwa = { &amp;quot;waama&amp;quot;, page = &amp;quot;Waama (langue)&amp;quot; },&lt;br /&gt;
wxa = { &amp;quot;waxiang&amp;quot; },&lt;br /&gt;
wya = { &amp;quot;wendat&amp;quot;, &amp;quot;wyandot&amp;quot;, page = &amp;quot;Wendat (langue)&amp;quot; },&lt;br /&gt;
-- x&lt;br /&gt;
xal = { &amp;quot;kalmouk&amp;quot; },&lt;br /&gt;
xam = { &amp;quot;ǀxam&amp;quot; },&lt;br /&gt;
xbc = { &amp;quot;bactrien&amp;quot; },&lt;br /&gt;
xbm = { &amp;quot;moyen breton&amp;quot; },&lt;br /&gt;
xby = { &amp;quot;butchulla&amp;quot;, &amp;quot;batjala&amp;quot; },&lt;br /&gt;
xcb = { &amp;quot;cambrien&amp;quot; },&lt;br /&gt;
xcg = { &amp;quot;gaulois cisalpin&amp;quot; },&lt;br /&gt;
xcl = { &amp;quot;arménien classique&amp;quot;, &amp;quot;krapar&amp;quot;, &amp;quot;grabar&amp;quot;, &amp;quot;arménien ancien&amp;quot; },&lt;br /&gt;
xcu = { &amp;quot;couronien&amp;quot; },&lt;br /&gt;
xh  = { &amp;quot;xhosa&amp;quot;, page = &amp;quot;Xhosa (langue)&amp;quot; },&lt;br /&gt;
xki = { &amp;quot;langue des signes kényane&amp;quot;, signe = true },&lt;br /&gt;
xku = { &amp;quot;kaamba&amp;quot; },&lt;br /&gt;
xlu = { &amp;quot;louvite&amp;quot; },&lt;br /&gt;
xmf = { &amp;quot;mingrélien&amp;quot;, &amp;quot;mégrélien&amp;quot; },&lt;br /&gt;
xml = { &amp;quot;langue des signes malaisienne&amp;quot;, signe = true },&lt;br /&gt;
xmm = { &amp;quot;malais de Manado&amp;quot;, &amp;quot;manadonais&amp;quot; },&lt;br /&gt;
xms = { &amp;quot;langue des signes marocaine&amp;quot;, signe = true },&lt;br /&gt;
xng = { &amp;quot;moyen mongol&amp;quot; },&lt;br /&gt;
xno = { &amp;quot;anglo-normand&amp;quot;, page = &amp;quot;Anglo-normand (langue)&amp;quot; },&lt;br /&gt;
xpe = { &amp;quot;kpèllé du Liberia&amp;quot;, page = &amp;quot;Kpèllé (langue)&amp;quot; },&lt;br /&gt;
xpp = { &amp;quot;buyeo-baekje&amp;quot;, page = &amp;quot;Baekje (langue)&amp;quot; },&lt;br /&gt;
xpr = { &amp;quot;parthe&amp;quot;, page = &amp;quot;Parthe (langue)&amp;quot; },&lt;br /&gt;
xpy = { &amp;quot;buyeo&amp;quot;, page = &amp;quot;Buyeo (langue)&amp;quot; },&lt;br /&gt;
xsm = { &amp;quot;kassem&amp;quot;, &amp;quot;kasim&amp;quot;, &amp;quot;kasɩm&amp;quot;, page = &amp;quot;Kassem (langue)&amp;quot; },&lt;br /&gt;
xsr = { &amp;quot;Sherpa&amp;quot;, page = &amp;quot;Sherpa (langue)&amp;quot; },&lt;br /&gt;
xsu = { &amp;quot;sanumá&amp;quot; },&lt;br /&gt;
xsy = { &amp;quot;saisiyat&amp;quot;, page = &amp;quot;Saisiyat (langue)&amp;quot; },&lt;br /&gt;
xrb = { &amp;quot;karaboro oriental&amp;quot;, &amp;quot;karaboro est&amp;quot;, &amp;quot;kar&amp;quot; },&lt;br /&gt;
xtc = { &amp;quot;katcha&amp;quot;, &amp;quot;kadugli&amp;quot;, &amp;quot;miri&amp;quot;, page = &amp;quot;Katcha-kadugli-miri&amp;quot; },&lt;br /&gt;
xtg = { &amp;quot;gaulois transalpin&amp;quot;, &amp;quot;gaulois&amp;quot;, page = &amp;quot;Gaulois (langue)&amp;quot; },&lt;br /&gt;
xto = { &amp;quot;agnéen&amp;quot;, &amp;quot;tokharien&amp;quot;, &amp;quot;tokharien a&amp;quot; },&lt;br /&gt;
xug = { &amp;quot;kunigami&amp;quot; },&lt;br /&gt;
-- y&lt;br /&gt;
yad = { &amp;quot;yagua&amp;quot;, page = &amp;quot;Yagua (langue)&amp;quot; },&lt;br /&gt;
yaf = { &amp;quot;yaka&amp;quot;, page = &amp;quot;Yaka (langue)&amp;quot; },&lt;br /&gt;
yag = { &amp;quot;yagan&amp;quot;, &amp;quot;yámana&amp;quot; },&lt;br /&gt;
yah = { &amp;quot;yazgoulami&amp;quot; },&lt;br /&gt;
yai = { &amp;quot;yaghnobi&amp;quot; },&lt;br /&gt;
yak = { &amp;quot;sahaptin yakama&amp;quot;, &amp;quot;yakima&amp;quot;, &amp;quot;yakama&amp;quot;, page = &amp;quot;Sahaptin&amp;quot; },&lt;br /&gt;
yao = { &amp;quot;chiyao&amp;quot;, &amp;quot;yao&amp;quot; },&lt;br /&gt;
yap = { &amp;quot;yap&amp;quot;, page = &amp;quot;Yap (langue)&amp;quot; },&lt;br /&gt;
yaz = { &amp;quot;lokaa&amp;quot;, &amp;quot;yakö&amp;quot; },&lt;br /&gt;
yba = { &amp;quot;yala&amp;quot;, page = &amp;quot;Yala (langue)&amp;quot; },&lt;br /&gt;
ybe = { &amp;quot;yugur occidental&amp;quot; },&lt;br /&gt;
ycr = { &amp;quot;créole de Yilan&amp;quot; },&lt;br /&gt;
yds = { &amp;quot;langue des signes yiddish&amp;quot;, signe = true }, -- obsolète, ne pas utiliser.&lt;br /&gt;
ygs = { &amp;quot;langue des signes yolngu&amp;quot;, &amp;quot;langue des signes yolŋu&amp;quot;, signe = true },&lt;br /&gt;
yhs = { &amp;quot;langue des signes yan-nhangu&amp;quot;, &amp;quot;langue des signes yan-nhaŋu&amp;quot;, signe = true },&lt;br /&gt;
yi  = { &amp;quot;yiddish&amp;quot;, &amp;quot;ji&amp;quot;, rtl = true },&lt;br /&gt;
ykg = { &amp;quot;youkaguir du nord&amp;quot; },&lt;br /&gt;
ykh = { &amp;quot;khamnigan mongol&amp;quot; },&lt;br /&gt;
yns = { &amp;quot;yansi&amp;quot;, page = &amp;quot;Yansi (langue)&amp;quot; },&lt;br /&gt;
yo  = { &amp;quot;yoruba&amp;quot;, page = &amp;quot;Yoruba (langue)&amp;quot; },&lt;br /&gt;
yoi = { &amp;quot;yonaguni&amp;quot;, page = &amp;quot;Yonaguni (langue)&amp;quot; },&lt;br /&gt;
yox = { &amp;quot;yoron&amp;quot; },&lt;br /&gt;
ypk = { &amp;quot;langues yupik&amp;quot; },&lt;br /&gt;
yrl = { &amp;quot;nheengatu&amp;quot; },&lt;br /&gt;
yro = { &amp;quot;yaroamë&amp;quot;, &amp;quot;jawari&amp;quot; },&lt;br /&gt;
yrk = { &amp;quot;nénètse&amp;quot; },&lt;br /&gt;
ysl = { &amp;quot;langue des signes yougoslave&amp;quot;, signe = true },&lt;br /&gt;
yua = { &amp;quot;maya yucatèque&amp;quot; },&lt;br /&gt;
yue = { &amp;quot;cantonais&amp;quot;, &amp;quot;zh-yue&amp;quot; },&lt;br /&gt;
[&amp;quot;yue-jyutping&amp;quot;] = { &amp;quot;romanisation Jyutping du cantonais&amp;quot;, page = &amp;quot;Jyutping&amp;quot; },&lt;br /&gt;
[&amp;quot;yue-Hans&amp;quot;] = { &amp;quot;cantonais en caractères chinois simplifiés&amp;quot;, page = &amp;quot;Cantonais&amp;quot; },&lt;br /&gt;
[&amp;quot;yue-Hant&amp;quot;] = { &amp;quot;cantonais en caractères chinois traditionels&amp;quot;, page = &amp;quot;Cantonais&amp;quot; },&lt;br /&gt;
yuf = { &amp;quot;langues yumanes du Nord&amp;quot;, &amp;quot;walapai&amp;quot;, &amp;quot;yavapai&amp;quot;, &amp;quot;havasupai&amp;quot;, page = &amp;quot;Langues yumanes&amp;quot; },&lt;br /&gt;
yux = { &amp;quot;youkaguir du sud&amp;quot; },&lt;br /&gt;
-- z&lt;br /&gt;
za = { &amp;quot;zhuang&amp;quot;, page = &amp;quot;Zhuang (langue)&amp;quot; },&lt;br /&gt;
zaa = { &amp;quot;zapotèque de la Sierra de Juárez&amp;quot; },&lt;br /&gt;
zai = { &amp;quot;zapotèque de l&#039;Isthme&amp;quot; },&lt;br /&gt;
zap = { &amp;quot;zapotèque&amp;quot;, page = &amp;quot;Langues zapotèques&amp;quot; },&lt;br /&gt;
zaw = { &amp;quot;zapotèque de Mitla&amp;quot; },&lt;br /&gt;
zdj = { &amp;quot;grand comorien&amp;quot; },&lt;br /&gt;
zea = { &amp;quot;zélandais&amp;quot; },&lt;br /&gt;
zga = { &amp;quot;kinga&amp;quot;, page = &amp;quot;Kinga (langue)&amp;quot; },&lt;br /&gt;
zgh = { &amp;quot;amazighe standard marocain&amp;quot; },&lt;br /&gt;
zh  = { &amp;quot;chinois&amp;quot;, &amp;quot;hui&amp;quot;, &amp;quot;chinese&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-Hans&amp;quot;] = { &amp;quot;chinois simplifié&amp;quot;, page = &amp;quot;Sinogramme simplifié&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-Hant&amp;quot;] = { &amp;quot;chinois traditionnel&amp;quot;, page = &amp;quot;Sinogramme traditionnel&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-Latn&amp;quot;] = { &amp;quot;chinois romanisé&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; }, -- avec n’importe quelle méthode de romanisation&lt;br /&gt;
[&amp;quot;zh-Latn-pinyin&amp;quot;]   = { &amp;quot;chinois romanisé avec la méthode Pinyin&amp;quot;, &amp;quot;pinyin&amp;quot;, page = &amp;quot;Hanyu pinyin&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-Latn-wadegile&amp;quot;] = { &amp;quot;chinois romanisé avec la méthode Wade-Giles&amp;quot;, page = &amp;quot;Romanisation Wade-Giles&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-CN&amp;quot;]   = { &amp;quot;chinois de Chine continentale&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-HK&amp;quot;]   = { &amp;quot;chinois de Hong Kong&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-MO&amp;quot;] = { &amp;quot;chinois de Macao&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-MY&amp;quot;] = { &amp;quot;chinois de Malaisie&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-SG&amp;quot;] = { &amp;quot;chinois de Singapour&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
[&amp;quot;zh-TW&amp;quot;] = { &amp;quot;chinois de Taïwan&amp;quot;, page = &amp;quot;Langues chinoises&amp;quot; },&lt;br /&gt;
zib = { &amp;quot;langue des signes zimbabwéenne&amp;quot;, signe = true },&lt;br /&gt;
zim = { &amp;quot;mesmé&amp;quot; },&lt;br /&gt;
zin = { &amp;quot;zinza&amp;quot;, page = &amp;quot;Zinza (langue)&amp;quot; },&lt;br /&gt;
ziw = { &amp;quot;zigula&amp;quot;, page = &amp;quot;Zigula (langue)&amp;quot; },&lt;br /&gt;
zkg = { &amp;quot;goguryeoan&amp;quot; },&lt;br /&gt;
zls = { &amp;quot;langues slaves méridionales&amp;quot; },&lt;br /&gt;
zne = { &amp;quot;zandé&amp;quot;, &amp;quot;zande&amp;quot;, &amp;quot;pazande&amp;quot;, page = &amp;quot;Zandé (langue)&amp;quot; },&lt;br /&gt;
zoc = { &amp;quot;zoque du Chiapas&amp;quot;, page = &amp;quot;Zoque du Chiapas&amp;quot;},&lt;br /&gt;
zoh = { &amp;quot;zoque de Chimalpa&amp;quot; },&lt;br /&gt;
zoq = { &amp;quot;ayapaneco&amp;quot; },&lt;br /&gt;
zor = { &amp;quot;zoque de Rayón&amp;quot;, page = &amp;quot;Zoque du Chiapas&amp;quot; },&lt;br /&gt;
zos = { &amp;quot;zoque de Francisco León&amp;quot;, page = &amp;quot;Zoque du Chiapas&amp;quot; },&lt;br /&gt;
zra = { &amp;quot;gaya&amp;quot;, page = &amp;quot;Gaya (langue)&amp;quot; },&lt;br /&gt;
zsl = { &amp;quot;langue des signes zambienne&amp;quot;, signe = true },&lt;br /&gt;
zsm = { &amp;quot;malaisien&amp;quot;, page = &amp;quot;Malaisien (langue)&amp;quot; },&lt;br /&gt;
ztu = { &amp;quot;zapotèque de Güilá&amp;quot;, &amp;quot;zapotèque de San Pablo Güilá&amp;quot;, &amp;quot;zapotèque de San Dionisio Ocotepec&amp;quot; },&lt;br /&gt;
zu  = { &amp;quot;zoulou&amp;quot; },&lt;br /&gt;
zum = { &amp;quot;kumzari&amp;quot; },&lt;br /&gt;
zun = { &amp;quot;zuñi&amp;quot;, &amp;quot;zuni&amp;quot;, page = &amp;quot;Zuñi (langue)&amp;quot; },&lt;br /&gt;
zxx = { &amp;quot;pas de contenu linguistique (non applicable)&amp;quot;, page = &amp;quot;&amp;quot; },&lt;br /&gt;
zza = { &amp;quot;zazaki&amp;quot; },&lt;br /&gt;
-- noms de modèles utilisés par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;lang:mi&amp;quot;] = { &amp;quot;maori de Nouvelle-Zélande&amp;quot;, invalide = &amp;quot;mi&amp;quot; }, -- nom du modèle:Lang:mi, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;lang:mr&amp;quot;] = { &amp;quot;marathi&amp;quot;, page = &amp;quot;Marathi (langue)&amp;quot;, invalide = &amp;quot;mr&amp;quot; }, -- nom du modèle:Lang:mr, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;lang:pid&amp;quot;] = { &amp;quot;piaroa&amp;quot;, page = &amp;quot;Piaroa (langue)&amp;quot;, invalide = &amp;quot;pid&amp;quot; }, -- nom du modèle:Lang:pid, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;Lang:nb&amp;quot;] = { &amp;quot;bokmål&amp;quot;, invalide = &amp;quot;nb&amp;quot; }, -- nom du modèle:Lang:nb, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;Lang:non&amp;quot;] = { &amp;quot;vieux norrois&amp;quot;, invalide = &amp;quot;non&amp;quot; }, -- nom du modèle:Lang:non, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;Lang:nv&amp;quot;] = { &amp;quot;navajo&amp;quot;, page = &amp;quot;Navajo (langue)&amp;quot;, invalide = &amp;quot;nv&amp;quot; }, -- nom du modèle:Lang:nv, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;Lang:prs&amp;quot;] = { &amp;quot;dari&amp;quot;, invalide = &amp;quot;prs&amp;quot; }, -- nom du modèle:Lang:prs, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
[&amp;quot;Lang:ve&amp;quot;] = { &amp;quot;venda&amp;quot;, page = &amp;quot;Venda (langue)&amp;quot;, invalide = &amp;quot;ve&amp;quot; }, -- nom du modèle:Lang:ve, utilisé par le modèle:Documentation modèle d&#039;indication de langue&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- code pour transformer la liste de code en table plus facilement utilisable par le module:Langue&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local ustringLower = mw.ustring.lower&lt;br /&gt;
&lt;br /&gt;
for k, v in pairs( data ) do&lt;br /&gt;
	local clef = k:lower()&lt;br /&gt;
	p[ clef ] = v&lt;br /&gt;
&lt;br /&gt;
	-- ajout du nom&lt;br /&gt;
	v.nom = v[ 1 ]&lt;br /&gt;
&lt;br /&gt;
	-- ajout du code&lt;br /&gt;
	if v.invalide then&lt;br /&gt;
		v.code = v.invalide&lt;br /&gt;
	else&lt;br /&gt;
		v.code = k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- ajout des alias (en lowercase : le nom, d&#039;éventuels noms supplémentaires)&lt;br /&gt;
	local cible&lt;br /&gt;
	if v.invalide then&lt;br /&gt;
		cible = data[ v.invalide ] or v&lt;br /&gt;
	else&lt;br /&gt;
		cible = v&lt;br /&gt;
	end&lt;br /&gt;
	for i = #v, 1, -1 do -- backward iteration&lt;br /&gt;
		local alias = v[ i ]&lt;br /&gt;
&lt;br /&gt;
		-- préfiltrage pour économiser le mw.ustring.lower() dans la majorité des cas&lt;br /&gt;
		if alias:find( &#039;[^a-z ]&#039; ) then -- attention, ne pas mettre de caractère multibyte dans cette regex&lt;br /&gt;
			alias = ustringLower( alias )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not p[ alias ] then&lt;br /&gt;
			p[ alias ] = cible&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- ces éléments sont supprimés de la table de la langue (d&#039;où la backward iteration)&lt;br /&gt;
		v[ i ] = nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local mwLangOriginal = mw.language.fetchLanguageNames()&lt;br /&gt;
local mwLangFr = mw.language.fetchLanguageNames( &#039;fr&#039; )&lt;br /&gt;
&lt;br /&gt;
p.langueMediaWikiManquantes = {}&lt;br /&gt;
&lt;br /&gt;
for k, v in pairs( mwLangFr ) do&lt;br /&gt;
	if not p[ k ] then&lt;br /&gt;
		p[ k ] = { code = k, nom = v }&lt;br /&gt;
		table.insert( p.langueMediaWikiManquantes, k )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- mwLangOriginal et mwLangFr ont les mêmes keys, du coup on peut traiter les deux dans cette itération&lt;br /&gt;
&lt;br /&gt;
	local nomOriginal = ustringLower( mwLangOriginal[ k ] )&lt;br /&gt;
	if not p[ nomOriginal ] then&lt;br /&gt;
		p[ nomOriginal ] = p[ k ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nomFr = ustringLower( v )&lt;br /&gt;
	if not p[ nomFr ] then&lt;br /&gt;
		p[ nomFr ] = p[ k ]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- -------------------------------------------------------------------------------- --&lt;br /&gt;
--   liste des étiquettes d&#039;écritures (script subtag) s&#039;écrivant de droite à gauche --&lt;br /&gt;
-- -------------------------------------------------------------------------------- --&lt;br /&gt;
p[ &amp;quot;rtl script&amp;quot; ] = {&lt;br /&gt;
	Arab = true,&lt;br /&gt;
	Armi = true,&lt;br /&gt;
	Avst = true,&lt;br /&gt;
	Cprt = true,&lt;br /&gt;
	Hebr = true,&lt;br /&gt;
	Khar = true,&lt;br /&gt;
	Lydi = true,&lt;br /&gt;
	Mand = true,&lt;br /&gt;
	Nkoo = true,&lt;br /&gt;
	Orkh = true,&lt;br /&gt;
	Phli = true,&lt;br /&gt;
	Phlp = true,&lt;br /&gt;
	Phlv = true,&lt;br /&gt;
	Phnx = true,&lt;br /&gt;
	Prti = true,&lt;br /&gt;
	Samr = true,&lt;br /&gt;
	Sarb = true,&lt;br /&gt;
	Syrc = true,&lt;br /&gt;
	Syre = true,&lt;br /&gt;
	Syrj = true,&lt;br /&gt;
	Syrn = true,&lt;br /&gt;
	Thaa = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Math&amp;diff=351</id>
		<title>Module:Math</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Math&amp;diff=351"/>
		<updated>2024-09-20T14:26:27Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « --  This module provides a number of basic mathematical operations.   local z = {}  -- Generate random number function z.random( frame )     local first = tonumber(frame.args[1]) -- if it doesn&amp;#039;t exist it&amp;#039;s NaN, if not a number it&amp;#039;s nil     local second = tonumber(frame.args[2])      if first then -- if NaN or nil, will skip down to final return         if first &amp;lt;= second then -- could match if both nil, but already checked that first is a number in last line... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module provides a number of basic mathematical operations.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local z = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate random number&lt;br /&gt;
function z.random( frame )&lt;br /&gt;
    local first = tonumber(frame.args[1]) -- if it doesn&#039;t exist it&#039;s NaN, if not a number it&#039;s nil&lt;br /&gt;
    local second = tonumber(frame.args[2])&lt;br /&gt;
&lt;br /&gt;
    if first then -- if NaN or nil, will skip down to final return&lt;br /&gt;
        if first &amp;lt;= second then -- could match if both nil, but already checked that first is a number in last line&lt;br /&gt;
            return math.random(first, second)&lt;br /&gt;
        end&lt;br /&gt;
        return math.random(first)&lt;br /&gt;
    end   &lt;br /&gt;
    return math.random()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
order&lt;br /&gt;
&lt;br /&gt;
Determine order of magnitude of a number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
    {{#invoke: Math | order | value }}&lt;br /&gt;
]]&lt;br /&gt;
function z.order(frame)&lt;br /&gt;
    local input_string = (frame.args[1] or frame.args.x or &#039;0&#039;);&lt;br /&gt;
    local input_number;&lt;br /&gt;
    &lt;br /&gt;
    input_number = z._cleanNumber( frame, input_string );&lt;br /&gt;
    if input_number == nil then&lt;br /&gt;
        return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Formatting error: Order of magnitude input appears non-numeric&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
    else&lt;br /&gt;
        return z._order( input_number )&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
function z._order(x)&lt;br /&gt;
    if x == 0 then return 0 end&lt;br /&gt;
    return math.floor(math.log10(math.abs(x)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision&lt;br /&gt;
&lt;br /&gt;
Detemines the precision of a number using the string representation&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
    {{ #invoke: Math | precision | value }}&lt;br /&gt;
]]&lt;br /&gt;
function z.precision( frame )&lt;br /&gt;
    local input_string = (frame.args[1] or frame.args.x or &#039;0&#039;);&lt;br /&gt;
    local trap_fraction = frame.args.check_fraction or false;&lt;br /&gt;
    local input_number;&lt;br /&gt;
    &lt;br /&gt;
    if type( trap_fraction ) == &#039;string&#039; then&lt;br /&gt;
        trap_fraction = trap_fraction:lower();&lt;br /&gt;
        if trap_fraction == &#039;false&#039; or trap_fraction == &#039;0&#039; or&lt;br /&gt;
                trap_fraction == &#039;no&#039; or trap_fraction == &#039;&#039; then&lt;br /&gt;
            trap_fraction = false;&lt;br /&gt;
        else&lt;br /&gt;
            trap_fraction = true;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if trap_fraction then&lt;br /&gt;
        local pos = string.find( input_string, &#039;/&#039;, 1, true );&lt;br /&gt;
        if pos ~= nil then&lt;br /&gt;
            if string.find( input_string, &#039;/&#039;, pos + 1, true ) == nil then&lt;br /&gt;
                local denominator = string.sub( input_string, pos+1, -1 );&lt;br /&gt;
                local denom_value = tonumber( denominator );&lt;br /&gt;
                if denom_value ~= nil then&lt;br /&gt;
                    return math.log10(denom_value);&lt;br /&gt;
                end&lt;br /&gt;
            end                        &lt;br /&gt;
        end&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    input_number, input_string = z._cleanNumber( frame, input_string );&lt;br /&gt;
    if input_string == nil then&lt;br /&gt;
        return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Formatting error: Precision input appears non-numeric&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
    else&lt;br /&gt;
        return z._precision( input_string )&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
function z._precision( x )    &lt;br /&gt;
    x = string.upper( x )&lt;br /&gt;
&lt;br /&gt;
    local decimal = string.find( x, &#039;.&#039;, 1, true )&lt;br /&gt;
    local exponent_pos = string.find( x, &#039;E&#039;, 1, true )&lt;br /&gt;
    local result = 0;&lt;br /&gt;
    &lt;br /&gt;
    if exponent_pos ~= nil then&lt;br /&gt;
        local exponent = string.sub( x, exponent_pos + 1 )&lt;br /&gt;
        x = string.sub( x, 1, exponent_pos - 1 )&lt;br /&gt;
        result = result - tonumber( exponent )&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    if decimal ~= nil then&lt;br /&gt;
        result = result + string.len( x ) - decimal&lt;br /&gt;
        return result&lt;br /&gt;
    end&lt;br /&gt;
        &lt;br /&gt;
    local pos = string.len( x );&lt;br /&gt;
    while x:byte(pos) == string.byte(&#039;0&#039;) do&lt;br /&gt;
        pos = pos - 1&lt;br /&gt;
        result = result - 1&lt;br /&gt;
        if pos &amp;lt;= 0 then&lt;br /&gt;
            return 0&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
max&lt;br /&gt;
&lt;br /&gt;
Finds the maximum argument&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
    {{#invoke:Math| max | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
    {{#invoke:Math| max }}&lt;br /&gt;
&lt;br /&gt;
When used with no arguments, it takes its input from the parent&lt;br /&gt;
frame.  Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
function z.max( frame )&lt;br /&gt;
    local args = frame.args;&lt;br /&gt;
    &lt;br /&gt;
    if args[1] == nil then&lt;br /&gt;
        local parent = frame:getParent();&lt;br /&gt;
        args = parent.args;&lt;br /&gt;
    end&lt;br /&gt;
    local max_value = nil;&lt;br /&gt;
    &lt;br /&gt;
    local i = 1;&lt;br /&gt;
    while args[i] ~= nil do&lt;br /&gt;
        local val = z._cleanNumber( frame, args[i] );&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            if max_value == nil or val &amp;gt; max_value then&lt;br /&gt;
                max_value = val;&lt;br /&gt;
            end&lt;br /&gt;
        end        &lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    return max_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
min &lt;br /&gt;
&lt;br /&gt;
Finds the minimum argument&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
    {{#invoke:Math| min | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
    {{#invoke:Math| min }}&lt;br /&gt;
&lt;br /&gt;
When used with no arguments, it takes its input from the parent&lt;br /&gt;
frame.  Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
function z.min( frame )&lt;br /&gt;
    local args = frame.args;&lt;br /&gt;
    &lt;br /&gt;
    if args[1] == nil then&lt;br /&gt;
        local parent = frame:getParent();&lt;br /&gt;
        args = parent.args;&lt;br /&gt;
    end&lt;br /&gt;
    local min_value = nil;&lt;br /&gt;
    &lt;br /&gt;
    local i = 1;&lt;br /&gt;
    while args[i] ~= nil do&lt;br /&gt;
        local val = z._cleanNumber( frame, args[i] );&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            if min_value == nil or val &amp;lt; min_value then&lt;br /&gt;
                min_value = val;&lt;br /&gt;
            end&lt;br /&gt;
        end        &lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    return min_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
round&lt;br /&gt;
&lt;br /&gt;
Rounds a number to specified precision&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
    {{#invoke:Math | round | value | precision }}&lt;br /&gt;
    &lt;br /&gt;
--]]&lt;br /&gt;
function z.round(frame)&lt;br /&gt;
    local value, precision;&lt;br /&gt;
    &lt;br /&gt;
    value = z._cleanNumber( frame, frame.args[1] or frame.args.value or 0 );&lt;br /&gt;
    precision = z._cleanNumber( frame, frame.args[2] or frame.args.precision or 0 );&lt;br /&gt;
    &lt;br /&gt;
    if value == nil or precision == nil then&lt;br /&gt;
        return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Formatting error: Round input appears non-numeric&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
    else&lt;br /&gt;
        return z._round( value, precision );&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
function z._round( value, precision )&lt;br /&gt;
    local rescale = math.pow( 10, precision );&lt;br /&gt;
    return math.floor( value * rescale + 0.5 ) / rescale;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision_format&lt;br /&gt;
&lt;br /&gt;
Rounds a number to the specified precision and formats according to rules &lt;br /&gt;
originally used for {{template:Rnd}}.  Output is a string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
    {{#invoke: Math | precision_format | number | precision }}&lt;br /&gt;
]]&lt;br /&gt;
function z.precision_format( frame )&lt;br /&gt;
    -- For access to Mediawiki built-in formatter.&lt;br /&gt;
    local lang = mw.getContentLanguage();&lt;br /&gt;
    &lt;br /&gt;
    local value_string, value, precision;&lt;br /&gt;
    value, value_string = z._cleanNumber( frame, frame.args[1] or 0 );&lt;br /&gt;
    precision = z._cleanNumber( frame, frame.args[2] or 0 );&lt;br /&gt;
    &lt;br /&gt;
    -- Check for non-numeric input&lt;br /&gt;
    if value == nil or precision == nil then&lt;br /&gt;
        return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Formatting error: invalid input when rounding&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local current_precision = z._precision( value );&lt;br /&gt;
&lt;br /&gt;
    local order = z._order( value );&lt;br /&gt;
    &lt;br /&gt;
    -- Due to round-off effects it is neccesary to limit the returned precision under&lt;br /&gt;
    -- some circumstances because the terminal digits will be inaccurately reported.&lt;br /&gt;
    if order + precision &amp;gt;= 14 then&lt;br /&gt;
        local orig_precision = z._precision( value_string );&lt;br /&gt;
        if order + orig_precision &amp;gt;= 14 then&lt;br /&gt;
            precision = 13 - order;        &lt;br /&gt;
        end        &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- If rounding off, truncate extra digits&lt;br /&gt;
    if precision &amp;lt; current_precision then&lt;br /&gt;
        value = z._round( value, precision );&lt;br /&gt;
        current_precision = z._precision( value );&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    local formatted_num = lang:formatNum( math.abs(value) );&lt;br /&gt;
    local sign;&lt;br /&gt;
    &lt;br /&gt;
    -- Use proper unary minus sign rather than ASCII default&lt;br /&gt;
    if value &amp;lt; 0 then&lt;br /&gt;
        sign = &#039;−&#039;;&lt;br /&gt;
    else&lt;br /&gt;
        sign = &#039;&#039;;&lt;br /&gt;
    end    &lt;br /&gt;
        &lt;br /&gt;
    -- Handle cases requiring scientific notation&lt;br /&gt;
    if string.find( formatted_num, &#039;E&#039;, 1, true ) ~= nil or math.abs(order) &amp;gt;= 9 then&lt;br /&gt;
        value = value * math.pow( 10, -order );&lt;br /&gt;
        current_precision = current_precision + order;&lt;br /&gt;
        precision = precision + order;&lt;br /&gt;
        formatted_num = lang:formatNum( math.abs(value) );&lt;br /&gt;
    else&lt;br /&gt;
        order = 0;        &lt;br /&gt;
    end&lt;br /&gt;
    formatted_num = sign .. formatted_num;&lt;br /&gt;
    &lt;br /&gt;
    -- Pad with zeros, if needed    &lt;br /&gt;
    if current_precision &amp;lt; precision then&lt;br /&gt;
        local padding;&lt;br /&gt;
        if current_precision &amp;lt;= 0 then&lt;br /&gt;
            if precision &amp;gt; 0 then&lt;br /&gt;
                local zero_sep = lang:formatNum( 1.1 );&lt;br /&gt;
                formatted_num = formatted_num .. zero_sep:sub(2,2);&lt;br /&gt;
&lt;br /&gt;
                padding = precision;&lt;br /&gt;
                if padding &amp;gt; 20 then&lt;br /&gt;
                    padding = 20;&lt;br /&gt;
                end&lt;br /&gt;
                &lt;br /&gt;
                formatted_num = formatted_num .. string.rep( &#039;0&#039;, padding );&lt;br /&gt;
            end            &lt;br /&gt;
        else                   &lt;br /&gt;
            padding = precision - current_precision&lt;br /&gt;
            if padding &amp;gt; 20 then&lt;br /&gt;
                padding = 20;&lt;br /&gt;
            end&lt;br /&gt;
            formatted_num = formatted_num .. string.rep( &#039;0&#039;, padding );&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add exponential notation, if necessary.&lt;br /&gt;
    if order ~= 0 then&lt;br /&gt;
        -- Use proper unary minus sign rather than ASCII default&lt;br /&gt;
        if order &amp;lt; 0 then&lt;br /&gt;
            order = &#039;−&#039; .. lang:formatNum( math.abs(order) );&lt;br /&gt;
        else&lt;br /&gt;
            order = lang:formatNum( order );&lt;br /&gt;
        end    &lt;br /&gt;
        &lt;br /&gt;
        formatted_num = formatted_num .. &#039;&amp;lt;span style=&amp;quot;margin:0 .15em 0 .25em&amp;quot;&amp;gt;×&amp;lt;/span&amp;gt;10&amp;lt;sup&amp;gt;&#039; .. order .. &#039;&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return formatted_num;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that interprets the input numerically.  If the &lt;br /&gt;
input does not appear to be a number, attempts evaluating it as&lt;br /&gt;
a parser functions expression.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function z._cleanNumber( frame, number_string )&lt;br /&gt;
    if number_string == nil or number_string:len() == 0 then&lt;br /&gt;
        return nil, nil;&lt;br /&gt;
    end    &lt;br /&gt;
    &lt;br /&gt;
    -- Attempt basic conversion&lt;br /&gt;
    local number = tonumber( number_string )&lt;br /&gt;
    &lt;br /&gt;
    -- If failed, attempt to evaluate input as an expression&lt;br /&gt;
    if number == nil then        &lt;br /&gt;
        local attempt = frame:preprocess( &#039;{{#expr: &#039; .. number_string .. &#039;}}&#039; );&lt;br /&gt;
        attempt = tonumber( attempt );&lt;br /&gt;
        if attempt ~= nil then&lt;br /&gt;
            number = attempt;&lt;br /&gt;
            number_string = tostring( number );&lt;br /&gt;
        else&lt;br /&gt;
            number = nil;&lt;br /&gt;
            number_string = nil;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
    -- String is valid but may contain padding, clean it.&lt;br /&gt;
        number_string = number_string:match( &amp;quot;^%s*(.-)%s*$&amp;quot; );&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return number, number_string;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return z&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Utilitaire&amp;diff=350</id>
		<title>Module:Utilitaire</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Utilitaire&amp;diff=350"/>
		<updated>2024-09-20T14:26:11Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec «  local utils = {}  --  Nombre d&amp;#039;élément dans un dictionnaire  --  function utils.tablelength(T)   local count = 0   for _ in pairs(T) do count = count + 1 end   return count end   --  Nouveau tableau sans le premier élément  --  function utils.tail(list)     return { select(2, unpack(list)) } end   function utils.tableConcat(t1,t2)     for i=1,#t2 do         t1[#t1+1] = t2[i]     end     return t1 end  -- trouve l’index d’une valeur si présente d... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local utils = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;élément dans un dictionnaire&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function utils.tablelength(T)&lt;br /&gt;
  local count = 0&lt;br /&gt;
  for _ in pairs(T) do count = count + 1 end&lt;br /&gt;
  return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Nouveau tableau sans le premier élément&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function utils.tail(list)&lt;br /&gt;
    return { select(2, unpack(list)) }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function utils.tableConcat(t1,t2)&lt;br /&gt;
    for i=1,#t2 do&lt;br /&gt;
        t1[#t1+1] = t2[i]&lt;br /&gt;
    end&lt;br /&gt;
    return t1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- trouve l’index d’une valeur si présente dans la table (index numérique)&lt;br /&gt;
function utils.table_ifind(t, v)&lt;br /&gt;
	for i, val in ipairs(t) do&lt;br /&gt;
		if v == val then&lt;br /&gt;
			return i&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;
-- trouve l’index d’une valeur si présente dans la table, index numérique ou chaine&lt;br /&gt;
&lt;br /&gt;
function utils.table_find(t, v)&lt;br /&gt;
	for i, val in pairs(t) do&lt;br /&gt;
		if v == val then&lt;br /&gt;
			return i&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;
&lt;br /&gt;
Une classe destinée à servir d&#039;ensemble pour tester rapidement l&#039;appartenance d&#039;un élément à une liste ou un ensemble&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local Set = {} -- the table representing the class, which will double as the metatable for the instances&lt;br /&gt;
Set.__index = Set -- failed table lookups on the instances should fallback to the class table, to get methods&lt;br /&gt;
&lt;br /&gt;
function Set:new(init, o)&lt;br /&gt;
    local obj = o or {} &lt;br /&gt;
    setmetatable(obj, self)&lt;br /&gt;
    &lt;br /&gt;
    obj.value = init&lt;br /&gt;
    obj.prop_set = {}&lt;br /&gt;
    &lt;br /&gt;
    for _, val in pairs(init) do&lt;br /&gt;
    	obj.prop_set[val] = true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Set:is_in(key)&lt;br /&gt;
    return self.prop_set[key] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.Set = Set&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- table.filter({&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;}, function(o, k, i) return o &amp;gt;= &amp;quot;c&amp;quot; end)  --&amp;gt; {&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;}&lt;br /&gt;
--&lt;br /&gt;
-- @FGRibreau - Francois-Guillaume Ribreau&lt;br /&gt;
-- @Redsmin - A full-feature client for Redis http://redsmin.com&lt;br /&gt;
&lt;br /&gt;
-- https://gist.github.com/fnchooft/77779d80d6668e8eeb3043dad215575a&lt;br /&gt;
&lt;br /&gt;
local function filter (t, filterIter)&lt;br /&gt;
  local out = {}&lt;br /&gt;
&lt;br /&gt;
  for k, v in pairs(t) do&lt;br /&gt;
    if filterIter(v, k, t) then out[k] = v end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.filter = filter &lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Programmation fonctionnelle, application d&#039;une fonction sur chaque élément d&#039;un tableau&lt;br /&gt;
	map(f,{a, b, c, ...}) = {f(a), f(b), f(c), ...} &lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function map(func, array)&lt;br /&gt;
  local new_array = {}&lt;br /&gt;
  for i,v in ipairs(array) do&lt;br /&gt;
    new_array[i] = func(v)&lt;br /&gt;
  end&lt;br /&gt;
  return new_array&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.map = map&lt;br /&gt;
&lt;br /&gt;
function utils.formatTableWithLastSep(vector, sep, lastsep)&lt;br /&gt;
	local descr = table.concat(vector, sep, 1, #vector-1)&lt;br /&gt;
	if #vector &amp;gt; 1 then&lt;br /&gt;
		descr = descr .. lastsep .. vector[#vector]&lt;br /&gt;
	else &lt;br /&gt;
		descr = vector[1]&lt;br /&gt;
	end&lt;br /&gt;
	return descr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dump_to_console(val, indent)&lt;br /&gt;
	indent = indent or &amp;quot;&amp;quot;&lt;br /&gt;
	if type(val) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for a, b in pairs(val) do&lt;br /&gt;
			mw.log(indent .. a .. &amp;quot;=&amp;gt;&amp;quot;)&lt;br /&gt;
			dump_to_console(b, indent .. &amp;quot;   &amp;quot;) &lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		mw.log(indent .. tostring(val))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.dump_to_console = dump_to_console&lt;br /&gt;
utils.dump = dump_to_console&lt;br /&gt;
&lt;br /&gt;
-- some functions useful in lua&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function splitStr(val) -- transforme en table les chaînes venant du Wikitexte qui utilisent des virgules de séparatin&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = mw.text.split(val, &amp;quot;,&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.splitStr = splitStr&lt;br /&gt;
&lt;br /&gt;
-- utility : stack manipulation functions&lt;br /&gt;
-- Console tests : &lt;br /&gt;
-- plop = {} ; p.append(plop, &amp;quot;a&amp;quot;) ; p.append(plop, &amp;quot;a&amp;quot;) ; p.push(plop, &amp;quot;b&amp;quot;)  ; p.append(plop, &amp;quot;c&amp;quot;) ; p.push(plop, &amp;quot;a&amp;quot;) ; mw.log(p. dump_to_console(plop)) ; p.shove_off(plop) ; p.pop(plop) ; mw.log(plop)&lt;br /&gt;
&lt;br /&gt;
local function pop(list)&lt;br /&gt;
	local ind=1&lt;br /&gt;
	if list[0] then&lt;br /&gt;
		ind = 0&lt;br /&gt;
	end&lt;br /&gt;
	local elem = list[ind]&lt;br /&gt;
	table.remove(list, ind)&lt;br /&gt;
	return elem, list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.pop = pop&lt;br /&gt;
&lt;br /&gt;
local function push(list, elem)&lt;br /&gt;
	if elem[0] then&lt;br /&gt;
		table.insert(list, 0, elem)&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(list, 1, elem)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.push = push&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
utils.append = function(list, elem)&lt;br /&gt;
	table.insert(list, #list+1, elem)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.shove_off = function(list, elem)&lt;br /&gt;
	table.remove(list, elem, #list+1)&lt;br /&gt;
end&lt;br /&gt;
utils.remove_last = utils.shove_off&lt;br /&gt;
&lt;br /&gt;
return utils&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Coordinates&amp;diff=349</id>
		<title>Module:Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Coordinates&amp;diff=349"/>
		<updated>2024-09-20T14:24:55Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local math_mod = require( &amp;quot;Module:Math&amp;quot; )  local p = {}  local NBSP = &amp;#039;\194\160&amp;#039; -- espace insécable (code UTF-8 sur deux octets)  local i18n = { 	N = &amp;#039;N&amp;#039;, 	Nlong = &amp;#039;nord&amp;#039;, 	W = &amp;#039;O&amp;#039;, 	Wlong = &amp;#039;ouest&amp;#039;, 	E = &amp;#039;E&amp;#039;, 	Elong = &amp;#039;est&amp;#039;, 	S = &amp;#039;S&amp;#039;, 	Slong = &amp;#039;sud&amp;#039;, 	degrees = &amp;#039;°&amp;#039; .. NBSP, 	minutes = &amp;#039;′&amp;#039; .. NBSP, 	seconds = &amp;#039;″&amp;#039; .. NBSP, 	geohackurl = &amp;#039;http://tools.wmflabs.org/geohack/geohack.php?language=fr&amp;#039;, 	tooltip = &amp;#039;Cartes, vues aériennes, etc.&amp;#039;, 	errorcat = &amp;#039;Page... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local math_mod = require( &amp;quot;Module:Math&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local NBSP = &#039;\194\160&#039; -- espace insécable (code UTF-8 sur deux octets)&lt;br /&gt;
&lt;br /&gt;
local i18n = {&lt;br /&gt;
	N = &#039;N&#039;,&lt;br /&gt;
	Nlong = &#039;nord&#039;,&lt;br /&gt;
	W = &#039;O&#039;,&lt;br /&gt;
	Wlong = &#039;ouest&#039;,&lt;br /&gt;
	E = &#039;E&#039;,&lt;br /&gt;
	Elong = &#039;est&#039;,&lt;br /&gt;
	S = &#039;S&#039;,&lt;br /&gt;
	Slong = &#039;sud&#039;,&lt;br /&gt;
	degrees = &#039;°&#039; .. NBSP,&lt;br /&gt;
	minutes = &#039;′&#039; .. NBSP,&lt;br /&gt;
	seconds = &#039;″&#039; .. NBSP,&lt;br /&gt;
	geohackurl = &#039;http://tools.wmflabs.org/geohack/geohack.php?language=fr&#039;,&lt;br /&gt;
	tooltip = &#039;Cartes, vues aériennes, etc.&#039;,&lt;br /&gt;
	errorcat = &#039;Page avec des balises de coordonnées mal formées&#039;,&lt;br /&gt;
	sameaswikidata = &#039;Page avec coordonnées similaires sur Wikidata&#039;,&lt;br /&gt;
	notaswikidata = &#039;Page avec coordonnées différentes sur Wikidata&#039;,&lt;br /&gt;
	nowikidata = &#039;Page sans coordonnées Wikidata&#039;,&lt;br /&gt;
	throughwikidata = &#039;Page géolocalisée par Wikidata&#039;,&lt;br /&gt;
	invalidFormat = &#039;format invalide&#039;,                                          -- &#039;invalid coordinate format&#039;,&lt;br /&gt;
	invalidNSEW = &#039;orientation invalide, devrait être &amp;quot;N&amp;quot;, &amp;quot;S&amp;quot;, &amp;quot;E&amp;quot; or &amp;quot;W&amp;quot;&#039;,    -- &#039;invalid direction should be &amp;quot;N&amp;quot;, &amp;quot;S&amp;quot;, &amp;quot;E&amp;quot; or &amp;quot;W&amp;quot;&#039;,&lt;br /&gt;
	invalidNS = &#039;orientation de latitude invalide, devrait être &amp;quot;N&amp;quot; ou &amp;quot;S&amp;quot;&#039;,    -- &#039;could not find latitude direction (should be N or S)&#039;,&lt;br /&gt;
	invalidEW = &#039;orientation de longitude invalide, devrait être &amp;quot;E&amp;quot; ou &amp;quot;W&amp;quot;&#039;,   -- &#039;could not find longitude direction (should be W or E) &#039;,&lt;br /&gt;
	noCardinalDirection = &#039;orientation cardinale non trouvée&#039;,                  -- &#039;no cardinal direction found in coordinates&#039;,&lt;br /&gt;
	invalidDirection = &#039;direction invalide&#039;,                                    -- &#039;invalid direction&#039;,&lt;br /&gt;
	latitude90 = &#039;latitude &amp;gt; 90&#039;,&lt;br /&gt;
	longitude360 = &#039;longitude &amp;gt; 360&#039;,&lt;br /&gt;
	minSec60 = &#039;minutes ou secondes &amp;gt; 60&#039;,&lt;br /&gt;
	negativeCoode = &#039;en format dms les degrés doivent être positifs&#039;,           -- &#039;dms coordinates should be positive&#039;,&lt;br /&gt;
	dmIntergers = &#039;degrés et minutes doivent être des nombres entiers&#039;,         -- &#039;degrees and minutes should be integers&#039;,&lt;br /&gt;
	tooManyParam = &#039;trop de paramètres pour la latitude ou la longitude&#039;,       -- &#039;too many parameters for coordinates&#039;,&lt;br /&gt;
	coordMissing = &#039;latitude ou longitude absente&#039;,                             -- &#039;latitude or longitude missing&#039;,&lt;br /&gt;
	invalidGlobe = &#039;globe invalide&#039; .. NBSP .. &#039;: &#039;,                            -- &#039;invalid globe:&#039;,&lt;br /&gt;
}&lt;br /&gt;
local coordParse = {&lt;br /&gt;
	NORTH = &#039;N&#039;,&lt;br /&gt;
	NORD = &#039;N&#039;,&lt;br /&gt;
	EAST = &#039;E&#039;,&lt;br /&gt;
	EST = &#039;E&#039;,&lt;br /&gt;
	WEST = &#039;W&#039;,&lt;br /&gt;
	O = &#039;W&#039;,&lt;br /&gt;
	OUEST = &#039;W&#039;,&lt;br /&gt;
	SOUTH = &#039;S&#039;,&lt;br /&gt;
	SUD = &#039;S&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local globedata = 	{&lt;br /&gt;
	--[[ notes:&lt;br /&gt;
		radius in kilometers (especially imprecise for non spheric bodies)&lt;br /&gt;
		defaultdisplay is currently disabled, activate it ?&lt;br /&gt;
	]]--&lt;br /&gt;
	ariel =  {radius = 580, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	callisto =  {radius = 2410, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	ceres =  {radius = 470, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	charon =  {radius = 1214, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	deimos =  {radius = 7, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	dione =  {radius = 560, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	enceladus =  {radius = 255, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	ganymede =  {radius = 2634, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;sur Ganymède&#039;},&lt;br /&gt;
	earth =  {radius = 6371, defaultdisplay = &#039;dms&#039;, trackingcat = &#039;sur Terre&#039;},&lt;br /&gt;
	europa =  {radius = 1561, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	hyperion =  {radius = 140, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	iapetus =  {radius = 725, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	[&#039;io&#039;] =  {radius = 1322, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	jupiter =  {radius = 68911, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	mars =  {radius = 3389.5, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;sur Mars&#039;},&lt;br /&gt;
	mercury =  {radius = 2439.7, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;sur Mercure&#039;},&lt;br /&gt;
	mimas =  {radius = 197, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	miranda =  {radius = 335, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	moon =  {radius = 1736, defaultdisplay = &#039;dec&#039;, trackingcat = &#039;sur la Lune&#039;},&lt;br /&gt;
	neptune =  {radius = 24553, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	oberon =  {radius = 761, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	phoebe =  {radius = 110, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	phobos =  {radius = 11, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	pluto =  {radius = 1185, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	rhea =  {radius = 765, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	saturn =  {radius = 58232, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	titan =  {radius = 2575.5, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	tethys =  {radius = 530, defaultdisplay = &#039;dec west&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	titania =  {radius = 394, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	triton =  {radius = 1353, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	umbriel =  {radius = 584, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	uranus =  {radius = 25266, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;},&lt;br /&gt;
	venus =  {radius = 6051.8, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;sur Vénus&#039;},&lt;br /&gt;
	vesta =  {radius = 260, defaultdisplay = &#039;dec east&#039;, trackingcat = &#039;extraterrestre&#039;}&lt;br /&gt;
}&lt;br /&gt;
globedata[&#039;&#039;] = globedata.earth&lt;br /&gt;
&lt;br /&gt;
local wikidatathreshold = 10 -- si la distance entre coordonnées Wikipédia et Wikidata dépasse ce seuil (en kilomètres), une catégorie de maintenance est ajoutée&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
local default_zoom = 13&lt;br /&gt;
&lt;br /&gt;
local function makecat(cat, sortkey)&lt;br /&gt;
	if type( sortkey ) == &#039;string&#039; then&lt;br /&gt;
		return &#039;[[Category:&#039; .. cat .. &#039;|&#039; .. sortkey .. &#039;]]&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;[[Category:&#039; .. cat .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
--Error handling&lt;br /&gt;
	--[[ Notes:&lt;br /&gt;
	when errors occure a new error message is concatenated to errorstring&lt;br /&gt;
	an error message contains an error category with a sortkey&lt;br /&gt;
	For major errors, it can also display an error message (the error message will the usually be returned and the function terminated)&lt;br /&gt;
	More minor errors do only add a category, so that readers are not bothered with error texts&lt;br /&gt;
	sortkeys:&lt;br /&gt;
		* A: invalid latitude, longitude or direction&lt;br /&gt;
		* B: invalid globe&lt;br /&gt;
		* C: something wrong with other parameters&lt;br /&gt;
		* D: more than one primary coord&lt;br /&gt;
	]]--&lt;br /&gt;
&lt;br /&gt;
local errorstring = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
local function makeerror(args)&lt;br /&gt;
	local errormessage = &#039;&#039;&lt;br /&gt;
	if args.message then&lt;br /&gt;
		errormessage = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt; Coordonnées&#039; .. NBSP .. &#039;: &#039; .. args.message .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local errorcat = &#039;&#039;&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		errorcat = makecat(i18n.errorcat, args.sortkey)&lt;br /&gt;
	end&lt;br /&gt;
	errorstring = errormessage .. errorcat -- reinitializes the string to avoid absurdly long messages&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function showerrors()&lt;br /&gt;
	return errorstring&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Distance computation&lt;br /&gt;
function p._distance(a, b, globe) -- calcule la [[distance orthodromique]] en kilomètres entre deux points du globe&lt;br /&gt;
&lt;br /&gt;
	globe = string.lower(globe or &#039;earth&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- check arguments and converts degreees to radians&lt;br /&gt;
	local latA, latB, longA, longB = a.latitude, b.latitude, a.longitude, b.longitude&lt;br /&gt;
	if (not latA) or (not latB) or (not longA) or (not longB) then return&lt;br /&gt;
		error(&#039;coordinates missing, can\&#039;t compute distance&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if type(latA) ~= &#039;number&#039; or type(latB) ~= &#039;number&#039; or type(longA) ~= &#039;number&#039; or type(longB) ~= &#039;number&#039; then&lt;br /&gt;
		error(&#039;coordinates are not numeric, can\&#039;t compute distance&#039;)&lt;br /&gt;
	end&lt;br /&gt;
		if not globe or not globedata[globe] then&lt;br /&gt;
		return error(&#039;globe: &#039; .. globe .. &#039;is not supported&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- calcul de la distance angulaire en radians&lt;br /&gt;
	local convratio = math.pi / 180 -- convertit en radians&lt;br /&gt;
	latA, latB, longA, longB = convratio * latA, convratio * latB, convratio * longA, convratio * longB&lt;br /&gt;
	local cosangle = math.sin(latA) * math.sin(latB) + math.cos(latA) * math.cos(latB) * math.cos(longB - longA)&lt;br /&gt;
	if cosangle &amp;gt;= 1 then -- may be above one because of rounding errors&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
	local angle = math.acos(cosangle)&lt;br /&gt;
	-- calcul de la distance en km&lt;br /&gt;
	local radius = globedata[globe].radius&lt;br /&gt;
	return radius * angle&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.distance(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	return p._distance(&lt;br /&gt;
		{latitude = tonumber(args.latitude1), longitude = tonumber(args.longitude1)},&lt;br /&gt;
		{latitude = tonumber(args.latitude2), longitude = tonumber(args.longitude2)},&lt;br /&gt;
		args.globe)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function geoHackUrl(decLat, decLong, globe, displayformat, objectname, extraparams)&lt;br /&gt;
	extraparams = extraparams or &#039;&#039;&lt;br /&gt;
	local geohacklatitude, geohacklongitude&lt;br /&gt;
	-- format latitude and longitude for the URL&lt;br /&gt;
	if tonumber(decLat) &amp;lt; 0 then&lt;br /&gt;
		geohacklatitude = tostring(-tonumber(decLat)) .. &#039;_S&#039;&lt;br /&gt;
	else&lt;br /&gt;
		geohacklatitude = decLat .. &#039;_N&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if tonumber(decLong) &amp;lt; 0  then&lt;br /&gt;
		geohacklongitude = tostring(-tonumber(decLong)) .. &#039;_W&#039;&lt;br /&gt;
	elseif globedata[globe].defaultdisplay == &#039;dec west&#039; then&lt;br /&gt;
		geohacklongitude = decLong .. &#039;_W&#039;&lt;br /&gt;
	else&lt;br /&gt;
		geohacklongitude = decLong .. &#039;_E&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- prepares the &#039;paramss=&#039; parameter&lt;br /&gt;
	local geohackparams = geohacklatitude .. &#039;_&#039; .. geohacklongitude .. &#039;_&#039; ..extraparams&lt;br /&gt;
	-- concatenate parameteres for geohack&lt;br /&gt;
	return i18n.geohackurl ..&lt;br /&gt;
		&amp;quot;&amp;amp;pagename=&amp;quot; .. mw.uri.encode(mw.title.getCurrentTitle().prefixedText, &amp;quot;WIKI&amp;quot;) ..&lt;br /&gt;
		&amp;quot;&amp;amp;params=&amp;quot; .. geohackparams ..&lt;br /&gt;
		(objectname and (&amp;quot;&amp;amp;title=&amp;quot; .. mw.uri.encode(objectname)) or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--HTML builder for a geohack link&lt;br /&gt;
local function buildHTML(decLat, decLong, dmsLat, dmsLong, globe, displayformat, displayinline, displaytitle, objectname, extraparams)&lt;br /&gt;
	-- geohack url&lt;br /&gt;
	local url = geoHackUrl(decLat, decLong, globe, displayformat, objectname, extraparams)&lt;br /&gt;
&lt;br /&gt;
	-- displayed coordinates&lt;br /&gt;
	local displaycoords&lt;br /&gt;
	if string.sub(displayformat, 1, 3) == &#039;dec&#039; then&lt;br /&gt;
		displaycoords = p.displaydec(decLat, decLong, displayformat)&lt;br /&gt;
	else&lt;br /&gt;
		displaycoords = {&lt;br /&gt;
			p.displaydmsdimension(dmsLat, displayformat),&lt;br /&gt;
			p.displaydmsdimension(dmsLong, displayformat),&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- build coordinate in h-geo / h-card microformat&lt;br /&gt;
	local globeNode&lt;br /&gt;
	if globe and globe ~= &#039;earth&#039; then&lt;br /&gt;
		globeNode = mw.html.create(&#039;data&#039;)&lt;br /&gt;
			:addClass(&#039;p-globe&#039;)&lt;br /&gt;
			:attr{ value = globe }&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local coordNode = mw.html.create(&#039;&#039;)&lt;br /&gt;
	if objectname then&lt;br /&gt;
		coordNode = mw.html.create(&#039;span&#039;)&lt;br /&gt;
			:addClass(&#039;h-card&#039;)&lt;br /&gt;
			:tag(&#039;data&#039;)&lt;br /&gt;
				:addClass(&#039;p-name&#039;)&lt;br /&gt;
				:attr{ value = objectname }&lt;br /&gt;
				:done()&lt;br /&gt;
	end&lt;br /&gt;
	coordNode&lt;br /&gt;
		:tag(&#039;span&#039;)&lt;br /&gt;
			:addClass(&#039;h-geo&#039;)&lt;br /&gt;
			:addClass(&#039;geo-&#039; .. string.sub(displayformat, 1, 3))&lt;br /&gt;
			:tag(&#039;data&#039;)&lt;br /&gt;
				:addClass(&#039;p-latitude&#039;)&lt;br /&gt;
				:attr{ value = decLat }&lt;br /&gt;
				:wikitext( displaycoords[1] )&lt;br /&gt;
				:done()&lt;br /&gt;
			:wikitext(&amp;quot;, &amp;quot;)&lt;br /&gt;
			:tag(&#039;data&#039;)&lt;br /&gt;
				:addClass(&#039;p-longitude&#039;)&lt;br /&gt;
				:attr{ value = decLong }&lt;br /&gt;
				:wikitext( displaycoords[2] )&lt;br /&gt;
				:done()&lt;br /&gt;
			:node( globeNode )&lt;br /&gt;
			:done()&lt;br /&gt;
&lt;br /&gt;
	-- buid GeoHack link&lt;br /&gt;
	local root = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		:addClass(&#039;plainlinks nourlexpansion&#039;)&lt;br /&gt;
		:attr(&#039;title&#039;, i18n.tooltip)&lt;br /&gt;
		:wikitext(&#039;[&#039; .. url )&lt;br /&gt;
		:node(coordNode)&lt;br /&gt;
		:wikitext(&amp;quot;]&amp;quot;)&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	-- format result depending on args[&amp;quot;display&amp;quot;] (nil, &amp;quot;inline&amp;quot;, &amp;quot;title&amp;quot;, &amp;quot;inline,title&amp;quot;)&lt;br /&gt;
	local inlineText = displayinline and tostring(root) or &#039;&#039;&lt;br /&gt;
	local titleText = &#039;&#039;&lt;br /&gt;
	if displaytitle then&lt;br /&gt;
		local htmlTitle = mw.html.create(&#039;span&#039;)&lt;br /&gt;
			:attr{ id = &#039;coordinates&#039; }&lt;br /&gt;
			:addClass( displayinline and &#039;noprint&#039; or nil )&lt;br /&gt;
			:node( root )&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		titleText = frame:extensionTag( &#039;indicator&#039;, tostring(htmlTitle), { name = &#039;coordinates&#039; } )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return inlineText .. titleText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function zoom( extraparams )&lt;br /&gt;
	local zoomParam = extraparams:match( &#039;%f[%w]zoom: ?(%d+)&#039; )&lt;br /&gt;
	if zoomParam then&lt;br /&gt;
		return zoomParam&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local scale = extraparams:match( &#039;%f[%w]scale: ?(%d+)&#039; )&lt;br /&gt;
	if scale then&lt;br /&gt;
		return math.floor(math.log10( 1 / tonumber( scale ) ) * 3 + 25)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local extraType = extraparams:match( &#039;%f[%w]type: ?(%w+)&#039; )&lt;br /&gt;
	if extraType then&lt;br /&gt;
		local zoomType = {&lt;br /&gt;
			country = 5,&lt;br /&gt;
			state = 6,&lt;br /&gt;
			adm1st = 7,&lt;br /&gt;
			adm2nd = 8,&lt;br /&gt;
			city = 9,&lt;br /&gt;
			isle = 10,&lt;br /&gt;
			mountain = 10,&lt;br /&gt;
			waterbody = 10,&lt;br /&gt;
			airport = 12,&lt;br /&gt;
			landmark = 13,&lt;br /&gt;
		}&lt;br /&gt;
		return zoomType[ extraType ]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--HTML builder for a geohack link&lt;br /&gt;
local function buildMaplinkHTML( decLat, decLong, dmsLat, dmsLong, globe, displayformat, displayinline, displaytitle, objectname, extraparams )&lt;br /&gt;
	-- displayed coordinates&lt;br /&gt;
	local displaycoords&lt;br /&gt;
	if string.sub(displayformat, 1, 3) == &#039;dec&#039; then&lt;br /&gt;
		displaycoords = p.displaydec(decLat, decLong, displayformat)&lt;br /&gt;
	else&lt;br /&gt;
		displaycoords = {&lt;br /&gt;
			p.displaydmsdimension(dmsLat, displayformat),&lt;br /&gt;
			p.displaydmsdimension(dmsLong, displayformat),&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- JSON for maplink&lt;br /&gt;
	local jsonParams = {&lt;br /&gt;
		type = &#039;Feature&#039;,&lt;br /&gt;
		geometry = {&lt;br /&gt;
			type =&#039;Point&#039;,&lt;br /&gt;
			coordinates = {&lt;br /&gt;
				math_mod._round( decLong, 6 ), -- max precision in GeoJSON format&lt;br /&gt;
				math_mod._round( decLat, 6 )&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		properties = {&lt;br /&gt;
			[&#039;marker-color&#039;] = &amp;quot;228b22&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if objectname then&lt;br /&gt;
		jsonParams.properties.title = objectname&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout de geoshape via externaldata&lt;br /&gt;
	local geoshape = extraparams:match( &#039;%f[%w]geoshape: ?(Q%d+)&#039; )&lt;br /&gt;
	if not geoshape and displaytitle and mw.wikibase.getEntity() then&lt;br /&gt;
		geoshape = mw.wikibase.getEntity().id&lt;br /&gt;
	end&lt;br /&gt;
	if geoshape then&lt;br /&gt;
		jsonParams = {&lt;br /&gt;
			jsonParams,&lt;br /&gt;
			{&lt;br /&gt;
				type = &#039;ExternalData&#039;,&lt;br /&gt;
				service = &#039;geoshape&#039;,&lt;br /&gt;
				ids = geoshape,&lt;br /&gt;
				properties = {&lt;br /&gt;
					[&#039;fill-opacity&#039;] = 0.2&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local maplink = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &#039;maplink&#039;,&lt;br /&gt;
		content = mw.text.jsonEncode( jsonParams ),&lt;br /&gt;
		args = {&lt;br /&gt;
			text = displaycoords[1] .. &amp;quot;, &amp;quot; .. displaycoords[2],&lt;br /&gt;
			zoom = zoom( extraparams ) or default_zoom,&lt;br /&gt;
			latitude = decLat,&lt;br /&gt;
			longitude = decLong,&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	-- format result depending on args[&amp;quot;display&amp;quot;] (nil, &amp;quot;inline&amp;quot;, &amp;quot;title&amp;quot;, &amp;quot;inline,title&amp;quot;)&lt;br /&gt;
	local inlineText = displayinline and maplink or &#039;&#039;&lt;br /&gt;
	local titleText = &#039;&#039;&lt;br /&gt;
	if displaytitle then&lt;br /&gt;
		local htmlTitle = mw.html.create(&#039;span&#039;)&lt;br /&gt;
			:attr{ id = &#039;coordinates&#039; }&lt;br /&gt;
			:addClass( displayinline and &#039;noprint&#039; or nil )&lt;br /&gt;
			:wikitext( maplink )&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		titleText = frame:extensionTag( &#039;indicator&#039;, tostring(htmlTitle), { name = &#039;coordinates&#039; } )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return inlineText .. titleText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- dms specific funcions&lt;br /&gt;
&lt;br /&gt;
local function twoDigit( value )&lt;br /&gt;
	if ( value &amp;lt; 10 ) then&lt;br /&gt;
		value = &#039;0&#039; .. lang:formatNum( value )&lt;br /&gt;
	else&lt;br /&gt;
		value = lang:formatNum( value )&lt;br /&gt;
	end&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.displaydmsdimension(valuetable, format) -- formate en latitude ou une longitude dms&lt;br /&gt;
	local str = &#039;&#039;&lt;br /&gt;
	local direction = valuetable.direction&lt;br /&gt;
	local degrees, minutes, seconds = &#039;&#039;, &#039;&#039;, &#039;&#039;&lt;br /&gt;
	local dimension&lt;br /&gt;
&lt;br /&gt;
	if format == &#039;dms long&#039; then&lt;br /&gt;
		direction = i18n[direction .. &#039;long&#039;]&lt;br /&gt;
	else&lt;br /&gt;
		direction = i18n[direction]&lt;br /&gt;
	end&lt;br /&gt;
	degrees = lang:formatNum( valuetable.degrees ) .. i18n.degrees&lt;br /&gt;
&lt;br /&gt;
	if valuetable.minutes then&lt;br /&gt;
		minutes = twoDigit( valuetable.minutes ) .. i18n.minutes&lt;br /&gt;
	end&lt;br /&gt;
	if valuetable.seconds then&lt;br /&gt;
		seconds = twoDigit( valuetable.seconds ) .. i18n.seconds&lt;br /&gt;
	end&lt;br /&gt;
	return degrees .. minutes .. seconds .. direction&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function validdms(coordtable)&lt;br /&gt;
	local direction = coordtable.direction&lt;br /&gt;
	local degrees = coordtable.degrees or 0&lt;br /&gt;
	local minutes = coordtable.minutes or 0&lt;br /&gt;
	local seconds = coordtable.seconds or 0&lt;br /&gt;
	local dimension = coordtable.dimension&lt;br /&gt;
	if not dimension then&lt;br /&gt;
		if direction == &#039;N&#039; or direction == &#039;S&#039; then&lt;br /&gt;
			dimension = &#039;latitude&#039;&lt;br /&gt;
		elseif direction == &#039;E&#039; or direction == &#039;W&#039; then&lt;br /&gt;
			dimension = &#039;longitude&#039;&lt;br /&gt;
		else&lt;br /&gt;
			makeerror({message = i18n.invalidNSEW, sortkey = &#039;A&#039;})&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(degrees) ~= &#039;number&#039; or type(minutes) ~= &#039;number&#039; or type(seconds) ~= &#039;number&#039; then&lt;br /&gt;
		makeerror({message = i18n.invalidFormat, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dimension == &#039;latitude&#039; and direction ~= &#039;N&#039; and direction ~= &#039;S&#039; then&lt;br /&gt;
		makeerror({message = i18n.invalidNS, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	if dimension == &#039;longitude&#039; and direction ~= &#039;W&#039; and direction ~= &#039;E&#039; then&lt;br /&gt;
		makeerror({message = i18n.invalidEW, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dimension == &#039;latitude&#039; and degrees &amp;gt; 90 then&lt;br /&gt;
		makeerror({message = i18n.latitude90, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dimension == &#039;longitude&#039; and degrees &amp;gt; 360 then&lt;br /&gt;
		makeerror({message = i18n.longitude360, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if degrees &amp;lt; 0 or minutes &amp;lt; 0 or seconds &amp;lt; 0 then&lt;br /&gt;
		makeerror({message = i18n.negativeCoode, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if minutes &amp;gt; 60 or seconds &amp;gt; 60 then&lt;br /&gt;
		makeerror({message = i18n.minSec60, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	if (math.floor(degrees) ~= degrees and minutes ~= 0) or (math.floor(minutes) ~= minutes and seconds ~= 0) then&lt;br /&gt;
		makeerror({message = i18n.dmIntergers, sortkey = &#039;A&#039;})&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function builddmsdimension(degrees, minutes, seconds, direction, dimension)&lt;br /&gt;
	-- no error checking, done in function validdms&lt;br /&gt;
	local dimensionobject = {}&lt;br /&gt;
&lt;br /&gt;
	-- direction and dimension (= latitude or longitude)&lt;br /&gt;
	dimensionobject.direction = direction&lt;br /&gt;
	if dimension then&lt;br /&gt;
		dimensionobject.dimension = dimension&lt;br /&gt;
	elseif direction == &#039;N&#039; or direction == &#039;S&#039; then&lt;br /&gt;
		dimensionobject.dimension = &#039;latitude&#039;&lt;br /&gt;
	elseif direction == &#039;E&#039; or direction == &#039;W&#039; then&lt;br /&gt;
		dimensionobject.dimension = &#039;longitude&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- degrees, minutes, seconds&lt;br /&gt;
	dimensionobject.degrees = tonumber(degrees)&lt;br /&gt;
	dimensionobject.minutes = tonumber(minutes)&lt;br /&gt;
	dimensionobject.seconds = tonumber(seconds)&lt;br /&gt;
	if degrees and not dimensionobject.degrees then dimensionobject.degrees = &#039;error&#039; end&lt;br /&gt;
	if minutes and not dimensionobject.minutes then dimensionobject.minutes = &#039;error&#039; end&lt;br /&gt;
	if seconds and not dimensionobject.seconds then dimensionobject.seconds = &#039;error&#039; end&lt;br /&gt;
	return dimensionobject&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._parsedmsstring( str, dimension ) -- prend une séquence et donne des noms aux paramètres&lt;br /&gt;
	-- output table: { latitude=, longitude = , direction =  }&lt;br /&gt;
	if type( str ) ~= &#039;string&#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	str = mw.ustring.gsub( mw.ustring.upper( str ), &#039;%a+&#039;, coordParse )&lt;br /&gt;
	if not tonumber( str ) and not str:find( &#039;/&#039; ) and str:find( &#039;°&#039; ) then&lt;br /&gt;
		local str2 = mw.ustring.gsub( str, &#039;[°″′\&amp;quot;\&#039;\194\160 ]+&#039;, &#039;/&#039; )&lt;br /&gt;
		-- avoid cases were there is degree ans seconds but no minutes&lt;br /&gt;
		if not mw.ustring.find( str, &#039;[″&amp;quot;]&#039; ) or mw.ustring.find( str, &#039;%d[′\&#039;][ \194\160%d]&#039; ) then&lt;br /&gt;
			str = str2&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not tonumber(str) and not string.find(str, &#039;/&#039;) then&lt;br /&gt;
		makeerror({message = i18n.invalidFormat, sortkey = &#039;A&#039;})&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local args = mw.text.split(str, &#039;/&#039;, true)&lt;br /&gt;
	if #args &amp;gt; 4 then&lt;br /&gt;
		makeerror({message = i18n.tooManyParam, sortkey = &#039;A&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	local direction = mw.text.trim(args[#args])&lt;br /&gt;
	table.remove(args)&lt;br /&gt;
	local degrees, minutes, seconds = args[1], args[2], args[3]&lt;br /&gt;
	local dimensionobject = builddmsdimension(degrees, minutes, seconds, direction, dimension)&lt;br /&gt;
	if validdms(dimensionobject) then&lt;br /&gt;
		return dimensionobject&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- decimal specific functions&lt;br /&gt;
function p.displaydec(latitude, longitude, format)&lt;br /&gt;
	local lat = lang:formatNum( latitude )&lt;br /&gt;
	local long = lang:formatNum( longitude )&lt;br /&gt;
&lt;br /&gt;
	if format == &#039;dec west&#039; or  format == &#039;dec east&#039; then&lt;br /&gt;
		local symbolNS, symbolEW = i18n.N, i18n.E&lt;br /&gt;
		if latitude &amp;lt; 0 then&lt;br /&gt;
			symbolNS = i18n.S&lt;br /&gt;
			lat = lang:formatNum( -latitude )&lt;br /&gt;
		end&lt;br /&gt;
		if format == &#039;dec west&#039; then&lt;br /&gt;
			symbolEW = i18n.W&lt;br /&gt;
		end&lt;br /&gt;
		if longitude &amp;lt; 0 then&lt;br /&gt;
			long = lang:formatNum( 360 + longitude )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return { lat .. i18n.degrees .. symbolNS,  long ..  i18n.degrees .. symbolEW }&lt;br /&gt;
&lt;br /&gt;
	else&lt;br /&gt;
		return { lat, long }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function parsedec(dec, coordtype, globe) -- coordtype = latitude or longitude&lt;br /&gt;
	dec = mw.text.trim(dec)&lt;br /&gt;
	if not dec then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if coordtype ~= &#039;latitude&#039; and coordtype ~= &#039;longitude&#039; then&lt;br /&gt;
		makeerror({&#039;invalid coord type&#039;, sortkey = &amp;quot;A&amp;quot;})&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local numdec = tonumber(dec) -- numeric value, kept separated as it looses significant zeros&lt;br /&gt;
	if not numdec then -- tries the decimal + direction format&lt;br /&gt;
		dec = mw.ustring.gsub( mw.ustring.upper( dec ), &#039;%a+&#039;, coordParse )&lt;br /&gt;
		local direction = mw.ustring.sub(dec, mw.ustring.len(dec), mw.ustring.len(dec))&lt;br /&gt;
		dec = mw.ustring.sub(dec, 1, mw.ustring.len(dec)-2) -- removes the /N at the end&lt;br /&gt;
		if not dec or not tonumber(dec) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		if direction == &#039;N&#039; or direction == &#039;E&#039; or direction == &#039;W&#039; and globedata[globe].defaultdisplay == &#039;dec west&#039; then&lt;br /&gt;
			numdec = tonumber( dec )&lt;br /&gt;
		elseif direction == &#039;W&#039; or direction == &#039;S&#039; then&lt;br /&gt;
			dec = &#039;-&#039; .. dec&lt;br /&gt;
			numdec = tonumber( dec )&lt;br /&gt;
		else&lt;br /&gt;
			if coordtype == &#039;latitude&#039; then&lt;br /&gt;
				makeerror({message = i18n.invalidNS, sortkey = &#039;A&#039;})&lt;br /&gt;
			else&lt;br /&gt;
				makeerror({message = i18n.invalidEW, sortkey = &#039;A&#039;})&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if coordtype == &#039;latitude&#039; and math.abs(numdec) &amp;gt; 90 then&lt;br /&gt;
		makeerror({message = i18n.latitude90 , sortkey = &#039;A&#039;})&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if coordtype == &#039;longitude&#039; and math.abs(numdec) &amp;gt; 360 then&lt;br /&gt;
		makeerror({message = i18n.longitude360 , sortkey = &#039;A&#039;})&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return dec&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- dms/dec conversion functions&lt;br /&gt;
local function convertprecision(precision) -- converts a decimal precision like &amp;quot;2&amp;quot; into &amp;quot;dm&amp;quot;&lt;br /&gt;
	if precision &amp;gt;= 3 then&lt;br /&gt;
		return &#039;dms&#039;&lt;br /&gt;
	elseif precision &amp;gt;=1 then&lt;br /&gt;
		return &#039;dm&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;d&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function determinedmsprec(decs) -- returns the most precision for a dec2dms conversion, depending on the most precise value in the decs table&lt;br /&gt;
	local precision = 0&lt;br /&gt;
	for d, val in ipairs(decs) do&lt;br /&gt;
		precision = math.max(precision, math_mod._precision(val))&lt;br /&gt;
	end&lt;br /&gt;
	return convertprecision(precision)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dec2dms_d(dec)&lt;br /&gt;
	local degrees = math_mod._round( dec, 0 )&lt;br /&gt;
	return degrees&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dec2dms_dm(dec)&lt;br /&gt;
	dec = math_mod._round( dec * 60, 0 )&lt;br /&gt;
	local minutes = dec % 60&lt;br /&gt;
	dec = math.floor( (dec - minutes) / 60 )&lt;br /&gt;
	local degrees = dec % 360&lt;br /&gt;
	return degrees, minutes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dec2dms_dms(dec)&lt;br /&gt;
	dec = math_mod._round( dec * 60 * 60, 0 )&lt;br /&gt;
	local seconds = dec % 60&lt;br /&gt;
	dec = math.floor( (dec - seconds) / 60 )&lt;br /&gt;
	local minutes = dec % 60&lt;br /&gt;
	dec = math.floor( (dec - minutes) / 60 )&lt;br /&gt;
	local degrees = dec % 360&lt;br /&gt;
	return degrees, minutes, seconds&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._dec2dms(dec, coordtype, precision, globe) -- coordtype: latitude or longitude&lt;br /&gt;
	local degrees, minutes, seconds&lt;br /&gt;
&lt;br /&gt;
	-- vérification du globe&lt;br /&gt;
	if not ( globe and globedata[ globe ] ) then&lt;br /&gt;
		globe = &#039;earth&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- precision&lt;br /&gt;
	if not precision or precision == &#039;&#039; then&lt;br /&gt;
		precision = determinedmsprec({dec})&lt;br /&gt;
	end&lt;br /&gt;
	if precision ~= &#039;d&#039; and precision ~= &#039;dm&#039; and precision ~= &#039;dms&#039; then&lt;br /&gt;
		return makeerror({sortkey = &#039;C&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	local dec = tonumber(dec)&lt;br /&gt;
&lt;br /&gt;
	-- direction&lt;br /&gt;
	local direction&lt;br /&gt;
	if coordtype == &#039;latitude&#039; then&lt;br /&gt;
		if dec &amp;lt; 0 then&lt;br /&gt;
			direction = &#039;S&#039;&lt;br /&gt;
		else&lt;br /&gt;
			direction = &#039;N&#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif coordtype == &#039;longitude&#039; then&lt;br /&gt;
		if dec &amp;lt; 0 or globedata[globe].defaultdisplay == &#039;dec west&#039; then&lt;br /&gt;
			direction = &#039;W&#039;&lt;br /&gt;
		else&lt;br /&gt;
			direction = &#039;E&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- conversion&lt;br /&gt;
	dec = math.abs(dec) -- les coordonnées en dms sont toujours positives&lt;br /&gt;
	if precision == &#039;dms&#039; then&lt;br /&gt;
		degrees, minutes, seconds = dec2dms_dms(dec)&lt;br /&gt;
	elseif precision == &#039;dm&#039; then&lt;br /&gt;
		degrees, minutes = dec2dms_dm(dec)&lt;br /&gt;
	else&lt;br /&gt;
		degrees = dec2dms_d(dec)&lt;br /&gt;
	end&lt;br /&gt;
	return builddmsdimension(degrees, minutes, seconds, direction)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dec2dms(frame) -- legacy function somewhat cumbersome syntax&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local dec = args[1]&lt;br /&gt;
	if not tonumber(dec) then&lt;br /&gt;
		makeerror({message = i18n.invalidFormat, sortkey = &#039;A&#039;})&lt;br /&gt;
		return showerrors()&lt;br /&gt;
	end&lt;br /&gt;
	local dirpositive = string.lower(args[2] or &#039;&#039;)&lt;br /&gt;
	local dirnegative = string.lower(args[3] or &#039;&#039;)&lt;br /&gt;
	local precision = string.lower(args[4] or &#039;&#039;)&lt;br /&gt;
	local displayformat, coordtype&lt;br /&gt;
&lt;br /&gt;
	if dirpositive == &#039;n&#039; or dirpositive == &#039;nord&#039; then&lt;br /&gt;
		coordtype = &#039;latitude&#039;&lt;br /&gt;
	else&lt;br /&gt;
		coordtype = &#039;longitude&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if dirpositive == &#039;nord&#039; or dirpositive == &#039;est&#039; or dirnegative == &#039;ouest&#039; or dirnegative == &#039;sud&#039; then&lt;br /&gt;
		displayformat = &#039;dms long&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local coordobject = p._dec2dms(dec, coordtype, precision)&lt;br /&gt;
	if coordobject then&lt;br /&gt;
		return p.displaydmsdimension(coordobject, displayformat) .. showerrors()&lt;br /&gt;
	else&lt;br /&gt;
		return showerrors()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p._dms2dec(dmsobject) -- transforme une table degré minute secondes en nombre décimal&lt;br /&gt;
	local direction, degrees, minutes, seconds = dmsobject.direction, dmsobject.degrees, dmsobject.minutes, dmsobject.seconds&lt;br /&gt;
	local factor = 0&lt;br /&gt;
	local precision = 0&lt;br /&gt;
	if not minutes then minutes = 0 end&lt;br /&gt;
	if not seconds then seconds = 0 end&lt;br /&gt;
&lt;br /&gt;
	if direction == &amp;quot;N&amp;quot; or direction == &amp;quot;E&amp;quot; then&lt;br /&gt;
		factor = 1&lt;br /&gt;
	elseif direction == &amp;quot;W&amp;quot; or direction == &amp;quot;S&amp;quot; then&lt;br /&gt;
		factor = -1&lt;br /&gt;
	elseif not direction then&lt;br /&gt;
		makeerror({message = i18n.noCardinalDirection, sortkey = &#039;A&#039;})&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		makeerror({message = i18n.invalidDirection, sortkey = &#039;A&#039;})&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dmsobject.seconds then -- vérifie la précision des données initiales&lt;br /&gt;
		precision = 5 + math.max( math_mod._precision(tostring(seconds), 0 ) ) -- passage par des strings assez tarabiscoté ?&lt;br /&gt;
	elseif dmsobject.minutes then&lt;br /&gt;
		precision = 3 + math.max( math_mod._precision(tostring(minutes), 0 ) )&lt;br /&gt;
	else&lt;br /&gt;
		precision = math.max( math_mod._precision(tostring(degrees), 0 ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local decimal = factor * (degrees+(minutes+seconds/60)/60)&lt;br /&gt;
	return math_mod._round(decimal, precision)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dms2dec(frame) -- legacy function, somewhat bizarre syntax&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	if tonumber(args[1]) then&lt;br /&gt;
		return args[1] -- coordonnées déjà en décimal&lt;br /&gt;
	elseif not args[2] then&lt;br /&gt;
		local dmsobject = p._parsedmsstring(args[1])&lt;br /&gt;
		if dmsobject then&lt;br /&gt;
			return p._dms2dec(dmsobject) -- coordonnées sous la fore 23/22/N&lt;br /&gt;
		else&lt;br /&gt;
			local coordType&lt;br /&gt;
			if args[1]:match( &#039;[NS]&#039; ) then&lt;br /&gt;
				coordType = &#039;latitude&#039;&lt;br /&gt;
			elseif args[1]:match( &#039;[EWO]&#039;) then&lt;br /&gt;
				coordType = &#039;longitude&#039;&lt;br /&gt;
			end&lt;br /&gt;
			if coordType then&lt;br /&gt;
				local result = parsedec( args[1],  coordType, args.globe or &#039;earth&#039; )&lt;br /&gt;
				if result then&lt;br /&gt;
					return result&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return showerrors()&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return p._dms2dec({direction = args[1], degrees = tonumber(args[2]), minutes = tonumber(args[3]), seconds = tonumber(args[4])})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Wikidata&lt;br /&gt;
local function convertwikidataprecision(precision) -- converts a decima like &amp;quot;0.1&amp;quot; into &amp;quot;dm&amp;quot;&lt;br /&gt;
	if precision &amp;lt; 0.016 then&lt;br /&gt;
		return &#039;dms&#039;&lt;br /&gt;
	elseif precision &amp;lt; 1 then&lt;br /&gt;
		return &#039;dm&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;d&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wikidatacoords(query)&lt;br /&gt;
	query = query or {property = &#039;p625&#039;}&lt;br /&gt;
	query.formatting = &#039;raw&#039;&lt;br /&gt;
	local wd = require(&#039;Module:Wikidata&#039;)&lt;br /&gt;
	local claim = wd.getClaims(query)&lt;br /&gt;
	if claim and claim[1] then -- redundant but more robust in case of a change in the code of Module:Wikidata&lt;br /&gt;
		local coords = wd.formatSnak(claim[1].mainsnak) -- todo: check for special values&lt;br /&gt;
		-- Wikidata does not handle correctly +West longitudes&lt;br /&gt;
		if globedata[ coords.globe ] and globedata[ coords.globe ].defaultdisplay == &#039;dec west&#039; then&lt;br /&gt;
			coords.longitude = math.abs( coords.longitude )&lt;br /&gt;
		end&lt;br /&gt;
		return coords.latitude, coords.longitude, coords.globe or &#039;earth&#039;, convertwikidataprecision(coords.precision or .001)&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function wikidatacat(globe)&lt;br /&gt;
	--catbase= Article géolocalisé sur Terre&lt;br /&gt;
	local entitycat = mw.wikibase.getEntity()&lt;br /&gt;
&lt;br /&gt;
	local basecat = &#039;Article géolocalisé&#039;&lt;br /&gt;
	local finalcat = {}&lt;br /&gt;
	--BADGES&lt;br /&gt;
	if entitycat then&lt;br /&gt;
		--BADGES&lt;br /&gt;
	   	for i, badgeId in ipairs( entitycat.sitelinks[&#039;frwiki&#039;].badges ) do&lt;br /&gt;
			if badgeId == &#039;Q17437796&#039;  then&lt;br /&gt;
				basecat = string.gsub(basecat, &amp;quot;Article géolocalisé&amp;quot;, &amp;quot;Article de qualité géolocalisé&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			if badgeId == &#039;Q17437798&#039;  then&lt;br /&gt;
				basecat = string.gsub(basecat, &amp;quot;Article géolocalisé&amp;quot;, &amp;quot;Bon article géolocalisé&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if globe == &#039;earth&#039;  then&lt;br /&gt;
		if entitycat and entitycat.claims  then&lt;br /&gt;
			local country = entitycat.claims[&#039;P17&#039;]&lt;br /&gt;
			if not country then&lt;br /&gt;
				--pas pays à récupérer&lt;br /&gt;
				basecat = basecat .. &#039; sur Terre&#039;&lt;br /&gt;
				table.insert(finalcat, basecat)&lt;br /&gt;
			else&lt;br /&gt;
				--parfois plusieurs pays&lt;br /&gt;
				for i, paysId in ipairs( country ) do&lt;br /&gt;
					--on fait confiance au label wikidata&lt;br /&gt;
					local gdataone, qid&lt;br /&gt;
&lt;br /&gt;
					if paysId.mainsnak.snaktype == &#039;value&#039; then&lt;br /&gt;
						qid = paysId.mainsnak.datavalue.value[&#039;numeric-id&#039;]&lt;br /&gt;
						gdataone = mw.loadData(&amp;quot;Module:Drapeau/Data&amp;quot;).data[qid]&lt;br /&gt;
					else&lt;br /&gt;
						--Bir Tawil n&#039;a pas de pays connu&lt;br /&gt;
						qid = &#039;?&#039;&lt;br /&gt;
					end&lt;br /&gt;
					if gdataone ~= nil then&lt;br /&gt;
						local genre = mw.loadData(&amp;quot;Module:Drapeau/Domaine&amp;quot;).genre&lt;br /&gt;
						local prep = genre[gdataone[&#039;genre&#039;]][&#039;en&#039;] or &#039;en &#039;&lt;br /&gt;
						local thecat = basecat .. &#039; &#039;..prep ..mw.wikibase.label(&#039;Q&#039;.. qid)&lt;br /&gt;
						if mw.title.new(&#039;category:&#039;..thecat).exists then&lt;br /&gt;
							table.insert(finalcat, thecat)&lt;br /&gt;
						else&lt;br /&gt;
							--Dommage!&lt;br /&gt;
							mw.log(thecat .. &#039; à créer&#039;)&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						--pas d&#039;id?&lt;br /&gt;
						mw.log(qid .. &#039; à paramétrer&#039;)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if #finalcat == 0 then&lt;br /&gt;
					--pas pays à récupérer&lt;br /&gt;
					basecat = basecat .. &#039; sur Terre&#039;&lt;br /&gt;
					table.insert(finalcat, basecat)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			--pas wikidata&lt;br /&gt;
			basecat = basecat .. &#039; sur Terre&#039;&lt;br /&gt;
			table.insert(finalcat, basecat)&lt;br /&gt;
		end&lt;br /&gt;
	elseif globedata[globe] then&lt;br /&gt;
		basecat = basecat .. &#039; &#039; .. globedata[globe].trackingcat&lt;br /&gt;
		table.insert(finalcat, basecat)&lt;br /&gt;
	else&lt;br /&gt;
		basecat = basecat .. &#039; extraterrestre&#039;&lt;br /&gt;
		table.insert(finalcat, basecat)&lt;br /&gt;
	end&lt;br /&gt;
	return finalcat&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
 -- main function for displaying coordinates&lt;br /&gt;
function p._coord(args)&lt;br /&gt;
&lt;br /&gt;
	-- I declare variable&lt;br /&gt;
	local displayformat = args.format -- string: one of: &#039;dms&#039;, &#039;dms long&#039;, &#039;dec&#039;, &#039;dec east&#039; and &#039;dec west&#039;&lt;br /&gt;
	local displayplace = string.lower(args.display or &#039;inline&#039;) --string: one of &#039;inline&#039;, &#039;title&#039; or &#039;inline,title&#039;&lt;br /&gt;
	local displayinline = string.find(displayplace, &#039;inline&#039;) and true or false&lt;br /&gt;
	local displaytitle = string.find(displayplace, &#039;title&#039;) and true or false&lt;br /&gt;
	local objectname = (args.name ~= &#039;&#039;) and args.name -- string: name of the title displayed in geohack&lt;br /&gt;
	local notes = (&#039; &#039; and args.notes) or &#039;&#039; -- string: notes to de displayed after coordinates&lt;br /&gt;
	local wikidata = args.wikidata -- string: set to &amp;quot;true&amp;quot; if needed&lt;br /&gt;
	local wikidataquery = args.wikidataquery -- table: see [[Module:Wikidata]] see function wikidatacoords&lt;br /&gt;
	local dmslatitude, dmslongitude -- table (when created)&lt;br /&gt;
	local extraparams = args.extraparams or &#039;&#039; -- string (legacy, corresponds to geohackparams)&lt;br /&gt;
 	local trackingstring = &#039;&#039; -- tracking cats except error cats (already in errorstring)&lt;br /&gt;
 	local rawlat, rawlong = args.latitude, args.longitude&lt;br /&gt;
 	if rawlat == &#039;&#039; then rawlat = nil end&lt;br /&gt;
 	if rawlong == &#039;&#039; then rawlong = nil end&lt;br /&gt;
 	local globe = string.lower( args.globe or extraparams:match(&#039;globe:(%a+)&#039;) or &#039;&#039; ) -- string: see the globedata table for accepted values&lt;br /&gt;
	local latitude, longitude, precision, dmslatitude, dmslongitude -- latitude and longitude in decimal / dmslatitude and dmslongitude: tables withdms coords&lt;br /&gt;
	local maplink = true -- use maplink whenever it is possible&lt;br /&gt;
	local savegeodata = nil&lt;br /&gt;
	if args.geodata ~= nil and args.geodata ~= &#039;&#039; then&lt;br /&gt;
		savegeodata = require(&#039;Module:Yesno&#039;)(args.geodata)&lt;br /&gt;
	end&lt;br /&gt;
	if savegeodata == nil then -- args.geodata non renseigné ou valeur non reconnue&lt;br /&gt;
		savegeodata = (displaytitle and mw.title.getCurrentTitle():inNamespaces(0, 14, 100))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- II extract coordinates from Wikitext&lt;br /&gt;
	if (rawlat or rawlong) then&lt;br /&gt;
		if (not rawlat) or (not rawlong) then -- if latitude is provided so should be longitude&lt;br /&gt;
			makeerror({message = i18n.coordMissing, sortkey = &#039;A&#039;})&lt;br /&gt;
			return showerrors()&lt;br /&gt;
		end&lt;br /&gt;
		latitude = parsedec(rawlat, &#039;latitude&#039;, globe)&lt;br /&gt;
&lt;br /&gt;
		if latitude then -- if latitude is decimal&lt;br /&gt;
			longitude = parsedec(rawlong, &#039;longitude&#039;, globe) -- so should be longitude&lt;br /&gt;
			precision = determinedmsprec({latitude, longitude}) -- before conversion from string to number for trailing zeros&lt;br /&gt;
			if not latitude or not longitude then&lt;br /&gt;
				if errorstring == &#039;&#039; then&lt;br /&gt;
					makeerror({message = i18n.invalidFormat, sortkey = &#039;A&#039;})&lt;br /&gt;
				end&lt;br /&gt;
				return showerrors()&lt;br /&gt;
			end&lt;br /&gt;
			dmslatitude, dmslongitude = p._dec2dms(latitude, &#039;latitude&#039;, precision), p._dec2dms(longitude, &#039;longitude&#039;, precision, globe)&lt;br /&gt;
			latitude, longitude = tonumber(latitude), tonumber(longitude)&lt;br /&gt;
		else -- if latitude is not decimal try to parse it as a dms string&lt;br /&gt;
			dmslatitude, dmslongitude = p._parsedmsstring(args.latitude, &#039;latitude&#039;), p._parsedmsstring(args.longitude, &#039;longitude&#039;)&lt;br /&gt;
			if not dmslatitude or not dmslongitude then&lt;br /&gt;
				return showerrors()&lt;br /&gt;
			end&lt;br /&gt;
			latitude, longitude = p._dms2dec(dmslatitude), p._dms2dec(dmslongitude)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- III extract coordinate data from Wikidata and compare them to local data&lt;br /&gt;
	local wikidatalatitude, wikidatalongitude, wikidataglobe, wikidataprecision&lt;br /&gt;
	if wikidata == &#039;true&#039; then&lt;br /&gt;
		wikidatalatitude, wikidatalongitude, wikidataglobe, wikidataprecision = wikidatacoords(wikidataquery)&lt;br /&gt;
&lt;br /&gt;
		if wikidatalatitude and latitude and longitude then&lt;br /&gt;
			local maxdistance = tonumber(args.maxdistance) or wikidatathreshold&lt;br /&gt;
			if p._distance({latitude = latitude, longitude = longitude}, {latitude = wikidatalatitude, longitude = wikidatalongitude}, wikidataglobe) &amp;lt; maxdistance then&lt;br /&gt;
				trackingstring = trackingstring .. makecat(i18n.sameaswikidata)&lt;br /&gt;
					else&lt;br /&gt;
				trackingstring = trackingstring .. makecat(i18n.notaswikidata)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if wikidatalatitude and not latitude then&lt;br /&gt;
			latitude, longitude, globe, precision = wikidatalatitude, wikidatalongitude, wikidataglobe, wikidataprecision&lt;br /&gt;
			dmslatitude, dmslongitude = p._dec2dms(latitude, &#039;latitude&#039;, precision), p._dec2dms(longitude, &#039;longitude&#039;, precision, globe)&lt;br /&gt;
			trackingstring = trackingstring .. makecat(i18n.throughwikidata)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if latitude and not wikidatalatitude then&lt;br /&gt;
			if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
				trackingstring = trackingstring .. makecat(i18n.nowikidata)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- exit if stil no latitude or no longitude&lt;br /&gt;
	if not latitude and not longitude then&lt;br /&gt;
		return nil -- ne rien ajouter ici pour que l&#039;appel à cette fonction retourne bien nil en l&#039;absence de données&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- IV best guesses for missing parameters&lt;br /&gt;
&lt;br /&gt;
	--- globe&lt;br /&gt;
	if globe == &#039;&#039; then&lt;br /&gt;
		globe = &#039;earth&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if not globedata[globe] then&lt;br /&gt;
		makeerror({message = i18n.invalidGlobe .. globe})&lt;br /&gt;
		globe = &#039;earth&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if globe ~= &#039;earth&#039; then&lt;br /&gt;
		extraparams = extraparams .. &#039;_globe:&#039; .. globe -- pas de problème si le globe est en double&lt;br /&gt;
		maplink = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--- diplayformat&lt;br /&gt;
	if not displayformat or displayformat == &#039;&#039; then&lt;br /&gt;
		displayformat = globedata[globe].defaultdisplay&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- displayinline/displaytitle&lt;br /&gt;
	if not displayinline and not displaytitle then&lt;br /&gt;
		displayinline = true&lt;br /&gt;
		if displayplace ~= &#039;&#039; then&lt;br /&gt;
			makeerror({sortkey = &#039;C&#039;}) --error if display not empty, but not a major error, continue&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if displaytitle and mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		--local cattoappend = globedata[globe].trackingcat&lt;br /&gt;
		--Récupération des badges&lt;br /&gt;
		local cats = wikidatacat(globe)&lt;br /&gt;
		for i, cat in ipairs( cats ) do&lt;br /&gt;
			trackingstring = trackingstring .. makecat(cat)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- V geodata&lt;br /&gt;
	local geodata = &#039;&#039;&lt;br /&gt;
	if savegeodata and latitude and longitude then&lt;br /&gt;
		local latstring, longstring = tostring(latitude), tostring(longitude)&lt;br /&gt;
		local primary = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local geodataparams = {[1] = latstring, [2] = longstring, [3] = extraparams}&lt;br /&gt;
		if displaytitle then&lt;br /&gt;
			geodataparams[4] = &#039;primary&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if objectname then&lt;br /&gt;
			geodataparams.name = objectname&lt;br /&gt;
		end&lt;br /&gt;
		geodata = frame:callParserFunction(&#039;#coordinates&#039;, geodataparams)&lt;br /&gt;
		if string.find(geodata, &#039;error&#039;) then -- the only error that has not been caught yet is primary key&lt;br /&gt;
			geodata = &#039;&#039;&lt;br /&gt;
			makeerror({sortkey=&#039;D&#039;})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
-- VI final output&lt;br /&gt;
	local mainstring = &#039;&#039;&lt;br /&gt;
	if maplink then&lt;br /&gt;
		mainstring = buildMaplinkHTML(latitude, longitude, dmslatitude, dmslongitude, globe, displayformat, displayinline, displaytitle, objectname, extraparams)&lt;br /&gt;
	else&lt;br /&gt;
		mainstring = buildHTML(latitude, longitude, dmslatitude, dmslongitude, globe, displayformat, displayinline, displaytitle, objectname, extraparams)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mainstring .. notes .. trackingstring .. geodata .. showerrors()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.coord(frame) -- parses the strange parameters of Template:Coord before sending them to p.coord&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local numericargs = {}&lt;br /&gt;
	for i, j in ipairs(args) do&lt;br /&gt;
		args[i] = mw.text.trim(j)&lt;br /&gt;
		if args[i] ~= &#039;&#039; then&lt;br /&gt;
			table.insert(numericargs, args[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #numericargs %2 == 1 then -- if the number of args is odd, the last one provides formatting parameters&lt;br /&gt;
		args.extraparams = numericargs[#numericargs]&lt;br /&gt;
		if #numericargs == 1 and tonumber(numericargs[1]) then&lt;br /&gt;
			makeerror({message = i18n.coordMissing, sortkey = &#039;A&#039;})&lt;br /&gt;
			return showerrors()&lt;br /&gt;
		end&lt;br /&gt;
		table.remove(numericargs)&lt;br /&gt;
	end&lt;br /&gt;
	for i, j in ipairs(numericargs) do&lt;br /&gt;
		if i &amp;lt;= (#numericargs / 2) then&lt;br /&gt;
			if not args.latitude then&lt;br /&gt;
				args.latitude = j&lt;br /&gt;
			else&lt;br /&gt;
				args.latitude =	args.latitude .. &#039;/&#039; .. j&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if not args.longitude then&lt;br /&gt;
				args.longitude = j&lt;br /&gt;
			else&lt;br /&gt;
				args.longitude = args.longitude .. &#039;/&#039; .. j&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if string.find(args.latitude or &#039;&#039;, &#039;E&#039;) or string.find(args.latitude or &#039;&#039;, &#039;W&#039;) then&lt;br /&gt;
		args.latitude, args.longitude = args.longitude, args.latitude&lt;br /&gt;
	end&lt;br /&gt;
	return p._coord(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.Coord(frame)&lt;br /&gt;
	return p.coord(frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.latitude(frame) -- helper function pour infobox, à déprécier&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local latitude  = frame.args[1]&lt;br /&gt;
	if latitude and mw.text.trim(latitude) ~= &#039;&#039; then&lt;br /&gt;
		return latitude&lt;br /&gt;
	elseif frame.args[&#039;wikidata&#039;] == &#039;true&#039; then&lt;br /&gt;
		local lat, long = wikidatacoords()&lt;br /&gt;
		return lat&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
function p.longitude(frame) -- helper function pour infobox, à déprécier&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local longitude = frame.args[1]&lt;br /&gt;
	if longitude and mw.text.trim(longitude) ~= &#039;&#039; then&lt;br /&gt;
		return longitude&lt;br /&gt;
	elseif frame.args[&#039;wikidata&#039;] == &#039;true&#039; then&lt;br /&gt;
		local lat, long = wikidatacoords()&lt;br /&gt;
		return long&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Langue&amp;diff=348</id>
		<title>Module:Langue</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Langue&amp;diff=348"/>
		<updated>2024-09-20T14:24:40Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- luacheck: globals mw, no max line length  local Langue = { }  local dataLangue = mw.loadData( &amp;#039;Module:Langue/Data&amp;#039; )  -- attention, plusieurs modules cherchent « class=&amp;quot;error&amp;quot; » pour détecter si ce module a retourné une erreur -- pour trouver ces codes, on peut rechercher dans le namespace Module : insource:Langue insource:/(find|match)\([^)]+error/ local langErrorMess = &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;langue non reconnue : %s&amp;lt;/span&amp;gt;&amp;#039;  -- premierParametre renvoie le... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- luacheck: globals mw, no max line length&lt;br /&gt;
&lt;br /&gt;
local Langue = { }&lt;br /&gt;
&lt;br /&gt;
local dataLangue = mw.loadData( &#039;Module:Langue/Data&#039; )&lt;br /&gt;
&lt;br /&gt;
-- attention, plusieurs modules cherchent « class=&amp;quot;error&amp;quot; » pour détecter si ce module a retourné une erreur&lt;br /&gt;
-- pour trouver ces codes, on peut rechercher dans le namespace Module : insource:Langue insource:/(find|match)\([^)]+error/&lt;br /&gt;
local langErrorMess = &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;langue non reconnue : %s&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
-- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été passé au module par invoke, directement au modèle,&lt;br /&gt;
-- ou à l&#039;intérieur d&#039;un module sous forme de string dans un tableau ou directement de string.&lt;br /&gt;
-- Si aucun de ces arguments ne contient de chaine, la fonction renvoie nil.&lt;br /&gt;
-- Si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscules.&lt;br /&gt;
local function premierParametre( frame, lowerCase )&lt;br /&gt;
	local arg&lt;br /&gt;
	if type( frame ) == &#039;table&#039; then&lt;br /&gt;
		arg = ( frame.getParent and ( frame.args[1] or frame:getParent().args[1] ) ) or frame[1]&lt;br /&gt;
	elseif type( frame ) == &#039;string&#039; then&lt;br /&gt;
		arg = frame&lt;br /&gt;
	end&lt;br /&gt;
	if type( arg ) ~= &#039;string&#039; then&lt;br /&gt;
		arg = nil&lt;br /&gt;
	end&lt;br /&gt;
	if arg and lowerCase then&lt;br /&gt;
		arg = mw.ustring.lower( mw.text.trim( arg ) )&lt;br /&gt;
	end&lt;br /&gt;
	return arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- determinationCode retourne une table contenant le code de langue principal et la liste des subcodes&lt;br /&gt;
-- si le code de langue principal n&#039;est pas reconnu, retourne nil.&lt;br /&gt;
function Langue.determinationCode( langue )&lt;br /&gt;
	if type( langue ) == &#039;string&#039; and langue ~= &#039;&#039; then&lt;br /&gt;
		local tabCode = mw.text.split( langue, &#039;-&#039; )&lt;br /&gt;
		local tabLangue = dataLangue[ mw.ustring.lower( tabCode[1] ) ]&lt;br /&gt;
		if tabLangue and tabLangue.code then&lt;br /&gt;
			tabCode[1] = tabLangue.code&lt;br /&gt;
			if tabLangue.invalide then&lt;br /&gt;
				tabCode.invalide=true&lt;br /&gt;
			end&lt;br /&gt;
			return tabCode&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Code langue&lt;br /&gt;
-- Paramètre :&lt;br /&gt;
--     1  : nom de langue.&lt;br /&gt;
function Langue.codeLangue( frame )&lt;br /&gt;
	local arg = premierParametre( frame, true )&lt;br /&gt;
	local tabCode = Langue.determinationCode( arg )&lt;br /&gt;
	return ( tabCode and table.concat( tabCode, &#039;-&#039; ) ) or arg or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Code langue 2&lt;br /&gt;
-- Paramètre :&lt;br /&gt;
--     1  : nom de langue.&lt;br /&gt;
function Langue.codeLangue2( frame )&lt;br /&gt;
	local arg = premierParametre( frame, true )&lt;br /&gt;
	local tabCode = Langue.determinationCode( arg )&lt;br /&gt;
	return ( tabCode and table.concat( tabCode, &#039;-&#039; ) ) or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Direction langue&lt;br /&gt;
-- Paramètre :&lt;br /&gt;
--     1  : nom de langue ou code IETF.&lt;br /&gt;
function Langue.directionLangue( frame )&lt;br /&gt;
	local arg = premierParametre( frame, true )&lt;br /&gt;
	if type( arg ) ~= &#039;string&#039; or arg == &#039;&#039; then&lt;br /&gt;
		return &#039;ltr&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- séparation du code de langue en code principal et les différents subcodes.&lt;br /&gt;
	local tabCode = Langue.determinationCode( arg )&lt;br /&gt;
	if tabCode then&lt;br /&gt;
		-- on essaye de savoir si la direction est de droite à gauche&lt;br /&gt;
		local codeScript = tabCode[2]&lt;br /&gt;
		if codeScript and string.len( codeScript ) == 4 and dataLangue[ &#039;rtl script&#039; ] then&lt;br /&gt;
			-- il y a un subcode d&#039;écriture, c&#039;est lui qui est pris en compte&lt;br /&gt;
			codeScript = string.upper( string.sub( codeScript, 1, 1 ) ) .. string.sub( codeScript, 2 )&lt;br /&gt;
			if dataLangue[ &#039;rtl script&#039; ][ codeScript ] then&lt;br /&gt;
				return &#039;rtl&#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- il n&#039;y a pas de subcode d&#039;écriture, on prend en compte le code de langue principal.&lt;br /&gt;
			local tabLangue = dataLangue[ tabCode[1] ]&lt;br /&gt;
			if tabLangue and tabLangue.rtl then&lt;br /&gt;
				return &#039;rtl&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- la langue n&#039;est pas écrite de droite à gauche, donc ltr.&lt;br /&gt;
	return &#039;ltr&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function getDataLangue( frame )&lt;br /&gt;
	-- Obtenir le code de la langue&lt;br /&gt;
	local codeLangue = premierParametre( frame, true )&lt;br /&gt;
	-- Si le paramètre est incorrect, retourner un message d&#039;erreur&lt;br /&gt;
	if type( codeLangue ) ~= &#039;string&#039; or codeLangue == &#039;&#039; then&lt;br /&gt;
		return nil, &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;langue non précisée&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Obtenir le tableau contenant les informations sur la langue&lt;br /&gt;
	local tabLangue = dataLangue[ codeLangue ]&lt;br /&gt;
	-- Si le code étendu n&#039;est pas trouvé, chercher à nouveau avec le code racine&lt;br /&gt;
	if not tabLangue then&lt;br /&gt;
		tabLangue = dataLangue[ mw.ustring.match( codeLangue, &#039;^(%a-)%-&#039; ) ]&lt;br /&gt;
	end&lt;br /&gt;
	-- Si on n&#039;a toujours rien trouvé, retourner un message d&#039;erreur&lt;br /&gt;
	if not tabLangue then&lt;br /&gt;
		return nil, langErrorMess:format( codeLangue )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tabLangue&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fonction fournissant un wikilien vers l&#039;article&lt;br /&gt;
-- traitant d&#039;une langue à partir de son code.&lt;br /&gt;
-- Voir Modèle:Lien langue&lt;br /&gt;
-- Paramètre :&lt;br /&gt;
--     1  : code IETF de langue.&lt;br /&gt;
function Langue.lienLangue( frame )&lt;br /&gt;
	local tabLangue, erreur = getDataLangue( frame )&lt;br /&gt;
	if not tabLangue then&lt;br /&gt;
		return erreur&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Créer un lien pour la langue depuis le tableau&lt;br /&gt;
	if type( tabLangue.page ) == &#039;string&#039; then&lt;br /&gt;
		if tabLangue.page ~= &#039;&#039; then&lt;br /&gt;
			return &#039;[[&#039; .. tabLangue.page .. &#039;|&#039; .. tabLangue.nom .. &#039;]]&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return tabLangue.nom&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;[[&#039; .. tabLangue.nom .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fonction permettant de récupérer le nom d&#039;une langue à partir de son code.&lt;br /&gt;
-- Voir Modèle:Nom langue&lt;br /&gt;
-- Paramètre :&lt;br /&gt;
--     1  : code IETF de langue.&lt;br /&gt;
-- Retourne :&lt;br /&gt;
--     Le nom de la langue, un message d&#039;erreur sinon.&lt;br /&gt;
function Langue.nomLangue( frame )&lt;br /&gt;
	local tabLangue, erreur = getDataLangue( frame )&lt;br /&gt;
	if not tabLangue then&lt;br /&gt;
		return erreur&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Extraire le nom de la langue depuis le tableau&lt;br /&gt;
	return tabLangue.nom&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fonction permettant de récupérer le nom de l&#039;article&lt;br /&gt;
-- portant sur une langue à partir de son code.&lt;br /&gt;
-- Voir Modèle:Article langue&lt;br /&gt;
-- Paramètre :&lt;br /&gt;
--     1  : code IETF de langue.&lt;br /&gt;
-- Retourne :&lt;br /&gt;
--     Le nom de l&#039;article portant sur la langue&lt;br /&gt;
--     si le code est trouvé, un message d&#039;erreur sinon.&lt;br /&gt;
function Langue.articleLangue( frame )&lt;br /&gt;
	local tabLangue, erreur = getDataLangue( frame )&lt;br /&gt;
	if not tabLangue then&lt;br /&gt;
		return erreur&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Extraire le titre de l&#039;article depuis le tableau&lt;br /&gt;
	if type( tabLangue.page ) == &#039;string&#039; and tabLangue.page ~= &#039;&#039; then&lt;br /&gt;
		return tabLangue.page&lt;br /&gt;
	else&lt;br /&gt;
		return tabLangue.nom&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Langue&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : code IETF de langue ;&lt;br /&gt;
--    texte ou 2 : texte dans cette langue ;&lt;br /&gt;
--    trans : translittération du texte ;&lt;br /&gt;
--    dir : direction de la langue (obsolète : peut être en paramètre 1, avec code en 2 et texte en 3).&lt;br /&gt;
function Langue.langue( frame )&lt;br /&gt;
	local args = ( frame.getParent and frame:getParent().args ) or frame         -- préparation pour appel par modèle ou direct.&lt;br /&gt;
	local code = mw.ustring.lower( mw.text.trim( args[1] or &#039;&#039; ) )&lt;br /&gt;
	local texte = args.texte or &#039;&#039;&lt;br /&gt;
	if texte == &#039;&#039; then&lt;br /&gt;
		texte = args[2] or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local dir = args.dir&lt;br /&gt;
	local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true }&lt;br /&gt;
	local categorisation = namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] and not args.nocat&lt;br /&gt;
&lt;br /&gt;
	-- Décalage des paramètres si code contient la direction du texte (obsolète mais toujours possible).&lt;br /&gt;
	if code == &#039;ltr&#039; or code == &#039;rtl&#039; then&lt;br /&gt;
		dir = code&lt;br /&gt;
		code = mw.ustring.lower( mw.text.trim( args[2] ) or &#039;&#039; )&lt;br /&gt;
		texte = args[3] or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local codeArg = code&lt;br /&gt;
&lt;br /&gt;
	-- sortie immédiate s&#039;il n&#039;y a pas de texte&lt;br /&gt;
	if texte == &#039;&#039; then&lt;br /&gt;
		if categorisation then&lt;br /&gt;
			return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;erreur du modèle [[modèle:Langue|{{langue}}]] : texte absent&amp;lt;/span&amp;gt;[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Langue]]&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- récursion si texte contient des blocs&lt;br /&gt;
	if texte:match(&#039;\n *\n&#039;) or texte:match(&#039;\n[*#:]&#039;) then&lt;br /&gt;
		-- les parenthèses permettent d&#039;éliminer la seconde valeur retournée par gsub (nombre de remplacements)&lt;br /&gt;
		return ( texte:gsub(&lt;br /&gt;
			&#039;(\n?[*#:]?%s*)([^\n]+)&#039;,&lt;br /&gt;
			function ( init, ligne )&lt;br /&gt;
				return init .. Langue.langue{ code, ligne }&lt;br /&gt;
			end&lt;br /&gt;
		) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Si la langue est reconnue, la valeur de la table est prise en compte (permet de corriger les noms de langue en toutes lettres).&lt;br /&gt;
	local tabCode = Langue.determinationCode( code )&lt;br /&gt;
	local tabLangue&lt;br /&gt;
	if tabCode then&lt;br /&gt;
		code = table.concat( tabCode, &#039;-&#039; )&lt;br /&gt;
		tabLangue = dataLangue[ tabCode[1] ]&lt;br /&gt;
&lt;br /&gt;
		local codeScript = tabCode[2]&lt;br /&gt;
		-- Si codeScript est bien un style d&#039;écriture (len = 4) on applique sa direction&lt;br /&gt;
		if codeScript and  string.len( codeScript ) == 4 and dataLangue[ &#039;rtl script&#039; ] then&lt;br /&gt;
			-- formatage type Latn correspondant au fromat dans dataLangue[ &#039;rtl script&#039; ]&lt;br /&gt;
			codeScript = string.upper( string.sub(  codeScript, 1, 1 ) ) .. string.sub(  codeScript, 2 )&lt;br /&gt;
			tabLangue = { code = tabLangue.code,&lt;br /&gt;
				rtl = dataLangue[ &#039;rtl script&#039; ][ codeScript ],&lt;br /&gt;
				invalide = tabLangue.invalide&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Préparation du rendu de direction du texte.&lt;br /&gt;
	dir = dir and dir:lower()&lt;br /&gt;
	if dir ~= &#039;ltr&#039; and dir ~= &#039;rtl&#039; then&lt;br /&gt;
		dir = ( tabLangue and tabLangue.rtl and &#039;rtl&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Compilation du texte à retourner.&lt;br /&gt;
	local html = mw.html.create( &#039;&#039; )&lt;br /&gt;
	if code == &#039;&#039; then&lt;br /&gt;
		html:wikitext( texte )&lt;br /&gt;
	else&lt;br /&gt;
		local span = mw.html.create( &#039;span&#039; )&lt;br /&gt;
				:addClass( &#039;lang-&#039; .. code )&lt;br /&gt;
				:attr( &#039;lang&#039;, code )&lt;br /&gt;
				:attr( &#039;dir&#039;, dir )&lt;br /&gt;
				:wikitext( texte )&lt;br /&gt;
&lt;br /&gt;
		if args.class and args.class ~= &#039;&#039; then&lt;br /&gt;
			span:addClass( args.class )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		html:node( span )&lt;br /&gt;
&lt;br /&gt;
		-- Translittération.&lt;br /&gt;
		if ( args.trans or &#039;&#039; ) ~= &#039;&#039; then&lt;br /&gt;
			local trans = args.trans:gsub( &amp;quot;^&#039;&#039;%f[^&#039;](.+)%f[&#039;]&#039;&#039;$&amp;quot;, &amp;quot;%1&amp;quot; )&lt;br /&gt;
			html:wikitext( &amp;quot; (&#039;&#039;&amp;quot; )&lt;br /&gt;
				:tag( &#039;span&#039; )&lt;br /&gt;
					:addClass( &#039;transcription lang-&#039; .. code )&lt;br /&gt;
					:attr( &#039;lang&#039;, code .. &#039;-Latn&#039; )&lt;br /&gt;
					:attr( &#039;dir&#039;, &#039;ltr&#039; )&lt;br /&gt;
					:wikitext( trans )&lt;br /&gt;
					:done()&lt;br /&gt;
				:wikitext( &amp;quot;&#039;&#039;)&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Ajout de la catégorie Page avec code de langue invalide si le code langue non reconnu ou invalide.&lt;br /&gt;
	if categorisation and ( type( tabLangue ) ~= &#039;table&#039; or tabCode.invalide ) then&lt;br /&gt;
		local erreur = string.format( langErrorMess, codeArg )&lt;br /&gt;
		if codeArg == &#039;&#039; then&lt;br /&gt;
			erreur = &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;langue non précisée&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		html:wikitext( &#039;[[Catégorie:Page avec code de langue invalide|Langue]] &#039; .. erreur )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Alias nom de fonction&lt;br /&gt;
Langue.lang = Langue.langue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Indication de langue&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : nom de langue ;&lt;br /&gt;
--    2 : code IETF ;&lt;br /&gt;
--    texte : texte dans cette langue ;&lt;br /&gt;
--    dir : direction de la langue.&lt;br /&gt;
function Langue.indicationDeLangue( frame )&lt;br /&gt;
	local args = ( frame.getParent and frame:getParent().args ) or frame&lt;br /&gt;
	local nomLangue = mw.text.trim( args[1] or &#039;&#039; )&lt;br /&gt;
	local code = mw.text.trim( args[2] or &#039;&#039; )&lt;br /&gt;
	local texte = args.texte&lt;br /&gt;
	local dir = args.dir&lt;br /&gt;
&lt;br /&gt;
	-- Cas où le premier et/ou le deuxième paramètre est vide.&lt;br /&gt;
	if code == &#039;&#039; and nomLangue == &#039;&#039; then&lt;br /&gt;
		return texte&lt;br /&gt;
	elseif nomLangue == &#039;&#039; then&lt;br /&gt;
		nomLangue = dataLangue[ mw.ustring.lower( code ) ]&lt;br /&gt;
		nomLangue = (nomLangue and nomLangue.nom or &#039;???&#039;)&lt;br /&gt;
	elseif code == &#039;&#039; then&lt;br /&gt;
		code = dataLangue[ nomLangue ]&lt;br /&gt;
		code = ( code and code.code or &#039;&#039; )&lt;br /&gt;
		if code == &#039;&#039; then&lt;br /&gt;
			return texte&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Gestion du texte.&lt;br /&gt;
	if texte and texte ~= &#039;&#039; then&lt;br /&gt;
		texte = &#039;\194\160&#039; .. Langue.lang{ code, dir = dir, texte = texte }&lt;br /&gt;
	else&lt;br /&gt;
		texte = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- Compilation de l&#039;indicateur de langue et du texte.&lt;br /&gt;
	local html = mw.html.create()&lt;br /&gt;
	html:tag( &#039;abbr&#039; )&lt;br /&gt;
			:addClass( &#039;abbr&#039; )&lt;br /&gt;
			:addClass( &#039;indicateur-langue&#039; )&lt;br /&gt;
			:attr( &#039;title&#039;, &#039;Langue : &#039; .. nomLangue )&lt;br /&gt;
			:wikitext( &#039;(&#039; .. code .. &#039;)&#039; )&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext( texte )&lt;br /&gt;
&lt;br /&gt;
	return tostring( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Mul&lt;br /&gt;
-- Paramètres : codes IETF ou noms de langue, en nombre indéfini (string ou nil uniquement).&lt;br /&gt;
function Langue.indicationMultilingue( frame )&lt;br /&gt;
	local args = (frame.getParent and frame:getParent().args) or frame&lt;br /&gt;
	local listeNom = { }&lt;br /&gt;
	local listeCode = { }&lt;br /&gt;
&lt;br /&gt;
	-- Valeur par défaut du premier paramètre = &#039;mul&#039;.&lt;br /&gt;
	local code = mw.text.trim( args[1] or &#039;&#039; )&lt;br /&gt;
	if code == &#039;&#039; then&lt;br /&gt;
		code = &#039;mul&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local maxLang = tonumber(args.maxLang) or nil&lt;br /&gt;
&lt;br /&gt;
	if not args[2] and not dataLangue[ mw.ustring.lower( code ) ] then&lt;br /&gt;
		local split = mw.text.split( code, &#039;[+,;:/ .]+&#039; )&lt;br /&gt;
		if #split &amp;gt; 1 then&lt;br /&gt;
			split.maxLang = maxLang&lt;br /&gt;
			return Langue.indicationMultilingue( split )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Ajout des noms et codes de langue de chaque paramètre dans listeNom et ListeCode.&lt;br /&gt;
	local i = 1&lt;br /&gt;
	repeat&lt;br /&gt;
		code = mw.ustring.lower( code )&lt;br /&gt;
		local tabLangue = dataLangue[ code ]&lt;br /&gt;
		if not tabLangue then&lt;br /&gt;
			code = mw.text.split( code, &#039;-&#039; )[1]&lt;br /&gt;
			tabLangue = dataLangue[ code ]&lt;br /&gt;
		end&lt;br /&gt;
		if type( tabLangue ) == &#039;table&#039; then&lt;br /&gt;
			table.insert( listeNom, tabLangue.nom )&lt;br /&gt;
			table.insert( listeCode, tabLangue.code )&lt;br /&gt;
		else&lt;br /&gt;
			table.insert( listeNom, &#039;???&#039; )&lt;br /&gt;
			local erreur = string.format( langErrorMess, code )&lt;br /&gt;
			table.insert( listeCode, erreur )&lt;br /&gt;
		end&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		code = mw.text.trim( args[i] or &#039;&#039; )&lt;br /&gt;
	until code == &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Préparation et renvoi du texte.&lt;br /&gt;
	local n = #listeCode&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if maxLang and n &amp;gt; maxLang then&lt;br /&gt;
		listeCode = {&#039;mul&#039;}&lt;br /&gt;
	end&lt;br /&gt;
	local plusieurs = ( n &amp;gt; 1 )&lt;br /&gt;
&lt;br /&gt;
	local html = mw.html.create( &#039;abbr&#039; )&lt;br /&gt;
		:addClass( &#039;abbr&#039; )&lt;br /&gt;
		:addClass( &#039;indicateur-langue&#039; )&lt;br /&gt;
		:attr( &#039;title&#039;, &#039;Langue&#039; .. ( plusieurs and &#039;s&#039; or &#039;&#039; ) .. &#039; : &#039; .. mw.text.listToText( listeNom ) )&lt;br /&gt;
		:wikitext( &#039;(&#039; .. table.concat( listeCode, &#039;\194\160+\194\160&#039; ) .. &#039;)&#039; )&lt;br /&gt;
&lt;br /&gt;
	return tostring( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Langue avec nom&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : code IETF de langue ;&lt;br /&gt;
--    texte ou 2 : texte dans cette langue ;&lt;br /&gt;
--    trans : translittération du texte ;&lt;br /&gt;
--    dir : direction de la langue.&lt;br /&gt;
function Langue.langueAvecNom( frame )&lt;br /&gt;
	local args = ( frame.getParent and frame:getParent().args ) or frame&lt;br /&gt;
	local code = mw.ustring.lower( mw.text.trim( args [1] or &#039;&#039;) )&lt;br /&gt;
	local texte = args.texte or args[2] or &#039;&#039;&lt;br /&gt;
	local trans = args.trans&lt;br /&gt;
	local dir = args.dir&lt;br /&gt;
&lt;br /&gt;
	-- Détection de la direction du texte.&lt;br /&gt;
	if code == &#039;ltr&#039; or code == &#039;rtl&#039; then&lt;br /&gt;
		dir = code&lt;br /&gt;
		code = mw.ustring.lower( mw.text.trim( args[2] ) )&lt;br /&gt;
		texte = args[3] or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Définition du nom de la langue en français.&lt;br /&gt;
	local nom = Langue.lienLangue{ code }&lt;br /&gt;
&lt;br /&gt;
	if texte ~= &#039;&#039; then&lt;br /&gt;
		texte = &#039; &#039; .. Langue.lang{ code, dir = dir, texte = texte, trans = trans }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nom .. &#039; :&#039; .. texte&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- latinOnly détermine si la chaine fournie contient uniquement des caractères latin (étendu, unicode &amp;lt; 880)&lt;br /&gt;
function Langue.nonLatin( frame )&lt;br /&gt;
	local texte = premierParametre( frame )&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint( texte ) do&lt;br /&gt;
		if codepoint &amp;gt; 879 and not (                  --  &amp;gt; 036F&lt;br /&gt;
			codepoint &amp;gt; 7423 and codepoint &amp;lt; 7936 or  -- suppléments phonétique, diacritiques et latin  (1D00 à 1EFF)&lt;br /&gt;
			codepoint &amp;gt; 8191 and codepoint &amp;lt; 11392 or -- espace, indices, monaies et symboles divers (2000 à 2C7F)&lt;br /&gt;
			codepoint &amp;gt; 42783 and codepoint &amp;lt; 43008   -- latin étendu D  (A720 à A7FF)&lt;br /&gt;
		) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- erreurModuleData affiche un message d&#039;erreur si le Module:Langue/Data n&#039;a pas été chargé correctement,&lt;br /&gt;
-- pour la page de discussion de la base de données et ceux qui veulent surveiller cette page.&lt;br /&gt;
function Langue.erreurModuleData()&lt;br /&gt;
	if type( dataLangue ) ~= &#039;table&#039; then&lt;br /&gt;
		local message = [[&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Le chargement du module Langue/Data génère une erreur.&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Cette erreur doit être corrigée au plus vite car des milliers de pages ne s&#039;affichent pas correctement.&amp;lt;/span&amp;gt;&lt;br /&gt;
]]&lt;br /&gt;
		return message&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- tableauLangues génère un tableau triable de la liste des langues disponible dans Module:langue/Data.&lt;br /&gt;
function Langue.tableauLangues()&lt;br /&gt;
	local tableau = { }&lt;br /&gt;
	local entete = [[{| class=&amp;quot;wikitable alternance sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=col|Alias&lt;br /&gt;
!scope=col|Code IETF&lt;br /&gt;
!scope=col|Nom principal&lt;br /&gt;
!scope=col|Titre de l&#039;article&amp;lt;br&amp;gt;(si différent du nom)&lt;br /&gt;
!scope=col|Lien vers l&#039;article&lt;br /&gt;
!scope=col|RTL&lt;br /&gt;
!scope=col|Invalide]]&lt;br /&gt;
&lt;br /&gt;
	local ligneTab, ligneSrt&lt;br /&gt;
	for k, v in pairs( dataLangue ) do&lt;br /&gt;
		if v.code then&lt;br /&gt;
			ligneTab = {&lt;br /&gt;
				k,&lt;br /&gt;
				v.code,&lt;br /&gt;
				v.nom,&lt;br /&gt;
				v.page or &#039;&#039;,&lt;br /&gt;
				Langue.lienLangue(v.code),&lt;br /&gt;
				v.rtl and &#039;[[Fichier:Yes check.svg|15px|oui|lien=]]&#039; or &#039;&#039;,&lt;br /&gt;
				v.invalide and &#039;[[Fichier:Yes check.svg|15px|oui|lien=]]&#039; or &#039;&#039;,&lt;br /&gt;
			}&lt;br /&gt;
			ligneSrt = table.concat( ligneTab, &#039;\n|&#039; )&lt;br /&gt;
			table.insert( tableau, ligneSrt )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort( tableau )&lt;br /&gt;
	table.insert( tableau, 1, entete )&lt;br /&gt;
	table.insert( tableau, &#039;}&#039; )&lt;br /&gt;
&lt;br /&gt;
	return table.concat( tableau, &#039;\n|-\n|&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- listeCodeAlias génère une liste ; les langues sont de la forme : * code : alias1, alias2&lt;br /&gt;
function Langue.listeCodeAlias()&lt;br /&gt;
	local languesTab, listeCodesAlias = { }, { }&lt;br /&gt;
	local code, alias, codeAlias&lt;br /&gt;
	for k, v in pairs( dataLangue ) do&lt;br /&gt;
		-- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias&lt;br /&gt;
		code = v.code&lt;br /&gt;
		if code and not v.invalide then&lt;br /&gt;
			languesTab[code] = languesTab[code] or { }&lt;br /&gt;
			if k ~= mw.ustring.lower( code ) then&lt;br /&gt;
				table.insert( languesTab[code], k )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs( languesTab ) do&lt;br /&gt;
		-- transformation en un table séquence, avec pour valeur une chaine correspondant à une ligne de la liste&lt;br /&gt;
		alias = table.concat( v, &#039;, &#039; )&lt;br /&gt;
		if alias == &#039;&#039; then&lt;br /&gt;
			codeAlias = &#039;* &amp;lt;code&amp;gt;&#039; .. k .. &#039;&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			codeAlias = &#039;* &amp;lt;code&amp;gt;&#039; .. k .. &#039;&amp;lt;/code&amp;gt; : &#039; .. alias&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( listeCodesAlias, codeAlias )&lt;br /&gt;
	end&lt;br /&gt;
	table.sort( listeCodesAlias )&lt;br /&gt;
&lt;br /&gt;
	return table.concat( listeCodesAlias, &#039;\n&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- listeAliasCode génère une liste ; les langues sont de la forme :  * alias : code&lt;br /&gt;
function Langue.listeAliasCode()&lt;br /&gt;
	local languesTab = { }&lt;br /&gt;
	local code&lt;br /&gt;
	for k, v in pairs( dataLangue ) do&lt;br /&gt;
		-- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias&lt;br /&gt;
		code = v.code&lt;br /&gt;
		if code and k ~= code and not v.invalide then&lt;br /&gt;
			table.insert( languesTab, &#039;* &#039; .. k .. &#039; = &#039; .. code )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort( languesTab )&lt;br /&gt;
&lt;br /&gt;
	return table.concat( languesTab, &#039;\n&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Langue&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/parser&amp;diff=347</id>
		<title>Module:Wikidata/Chemin/parser</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/parser&amp;diff=347"/>
		<updated>2024-09-20T14:24:23Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local tool = require(&amp;quot;Module:Utilitaire&amp;quot;) local path = require &amp;quot;Module:Wikidata/Chemin/Path&amp;quot; local parser = require &amp;quot;Module:FParser&amp;quot;  local pparser = {}  --[[  grammar :   letter                  ::= &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot;                           | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot;                           | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot;                           | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; | &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot;... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local tool = require(&amp;quot;Module:Utilitaire&amp;quot;)&lt;br /&gt;
local path = require &amp;quot;Module:Wikidata/Chemin/Path&amp;quot;&lt;br /&gt;
local parser = require &amp;quot;Module:FParser&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local pparser = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
grammar : &lt;br /&gt;
&lt;br /&gt;
letter                  ::= &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot;&lt;br /&gt;
                          | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot;&lt;br /&gt;
                          | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot;&lt;br /&gt;
                          | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; | &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot;&lt;br /&gt;
                          | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot;&lt;br /&gt;
                          | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot;&lt;br /&gt;
                          | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot;&lt;br /&gt;
                          | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
digit                   ::= &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
space                   ::= &amp;quot; &amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
Pid                     ::= &amp;quot;P&amp;quot; , digit, { digit } ;&lt;br /&gt;
Pname                   ::= letter, { letter | digit | space | &amp;quot;&#039;&amp;quot; } ;&lt;br /&gt;
&lt;br /&gt;
PathFirstLevel          ::= pathFirstAlternative&lt;br /&gt;
&lt;br /&gt;
-- Rules specific to allow to start from a statement instead of an item on the highest level of a path, variant of PathAlternative and PathSequence&lt;br /&gt;
&lt;br /&gt;
pathFirstAlternative   ::= PathFirstSequence ( &#039;|&#039; PathFirstSequence )*&lt;br /&gt;
PathFirstSequence &lt;br /&gt;
                        ::= (&#039;&amp;gt;&#039; PathQualifier | PathEltOrInverse ) ( &#039;/&#039; PathEltOrInverse | &#039;^&#039; PathElt )*&lt;br /&gt;
&lt;br /&gt;
Path			::= PathAlternative&lt;br /&gt;
PathAlternative 	::= 	PathSequence ( &#039;|&#039; PathSequence )*&lt;br /&gt;
PathSequence		::= 	PathEltOrInverse ( &#039;/&#039; PathEltOrInverse | &#039;^&#039; PathElt )*&lt;br /&gt;
PathElt			::= 	PathPrimary PathMod?&lt;br /&gt;
PathEltOrInverse	::= 	PathElt | &#039;^&#039; PathElt&lt;br /&gt;
PathMod			::= 	( &#039;*&#039; | &#039;?&#039; | &#039;+&#039; | &#039;{&#039; ( Integer ( &#039;,&#039; ( &#039;}&#039; | Integer &#039;}&#039; ) | &#039;}&#039; ) ) )&lt;br /&gt;
PathPrimary		::= ( Prop | &#039;a&#039; | &#039;(&#039; Path &#039;)&#039; &lt;br /&gt;
                            | ( Prop | &#039;!&#039; PathNegatedPropertySet ) &#039;&amp;gt;&#039; PathQualifier&lt;br /&gt;
                            | &#039;!&#039; PathNegatedPropertySet )&lt;br /&gt;
PathQualifier           ::= ( Prop | &#039;!&#039; PathNegatedPropertySet | PathPropertySet )&lt;br /&gt;
                    &lt;br /&gt;
Prop                    ::= IRIref | Pid | Pname&lt;br /&gt;
&lt;br /&gt;
rules 95 and 96 in https://www.w3.org/TR/2013/REC-sparql11-query-20130321/#rPathNegatedPropertySet&lt;br /&gt;
&lt;br /&gt;
PathNegatedPropertySet  ::=  	PathOneInPropertySet | &#039;(&#039; ( PathOneInPropertySet ( &#039;|&#039; PathOneInPropertySet )* )? &#039;)&#039;&lt;br /&gt;
PathOneInPropertySet    ::=  	iri | &#039;a&#039; | &#039;^&#039; ( iri | &#039;a&#039; ) &lt;br /&gt;
&lt;br /&gt;
PathPropertySet         ::=   &#039;(&#039; Path ( &#039;|&#039; Path )+ &#039;)&#039;&lt;br /&gt;
&lt;br /&gt;
For information, SPARQL property path grammar :&lt;br /&gt;
&lt;br /&gt;
https://www.w3.org/TR/sparql11-property-paths/#path-syntax&lt;br /&gt;
&lt;br /&gt;
TriplesSameSubjectPath  ::=   	VarOrTerm PropertyListNotEmptyPath | TriplesNode PropertyListPath&lt;br /&gt;
PropertyListPath        ::= 	PropertyListNotEmpty?&lt;br /&gt;
PropertyListNotEmptyPath::= 	( VerbPath | VerbSimple ) ObjectList ( &#039;;&#039; ( ( VerbPath | VerbSimple ) ObjectList )? )*&lt;br /&gt;
VerbPath 	        ::= 	Path&lt;br /&gt;
VerbSimple 	        ::= 	Var&lt;br /&gt;
Path 	                ::= 	PathAlternative&lt;br /&gt;
PathAlternative         ::= 	PathSequence ( &#039;|&#039; PathSequence )*&lt;br /&gt;
PathSequence            ::=	PathEltOrInverse ( &#039;/&#039; PathEltOrInverse | &#039;^&#039; PathElt )*&lt;br /&gt;
PathElt                 ::= 	PathPrimary PathMod?&lt;br /&gt;
PathEltOrInverse        ::= 	PathElt | &#039;^&#039; PathElt&lt;br /&gt;
PathMod                 ::= 	( &#039;*&#039; | &#039;?&#039; | &#039;+&#039; | &#039;{&#039; ( Integer ( &#039;,&#039; ( &#039;}&#039; | Integer &#039;}&#039; ) | &#039;}&#039; ) ) )&lt;br /&gt;
PathPrimary             ::= 	( IRIref | &#039;a&#039; | &#039;(&#039; Path &#039;)&#039; ) &lt;br /&gt;
&lt;br /&gt;
--]] &lt;br /&gt;
&lt;br /&gt;
local lexer = parser.lexer&lt;br /&gt;
&lt;br /&gt;
local chain = parser.chain&lt;br /&gt;
local alternative = parser.alternative&lt;br /&gt;
local plus = parser.plus&lt;br /&gt;
local idop = parser.idop&lt;br /&gt;
local nary_op_parser = parser.nary_op_parser&lt;br /&gt;
local lex_char = lexer.lex_char&lt;br /&gt;
local parse_epsilon = lexer.lex_epsilon&lt;br /&gt;
local lex_integer = lexer.lex_integer&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
-- grammar base lexer functions&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local lex_pid = function(state)&lt;br /&gt;
	local res = lexer.lex_regex(state, &amp;quot;P[0-9]+&amp;quot;)&lt;br /&gt;
	if res then res.type=&amp;quot;Pid&amp;quot; return res end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lex_sparql_prefix = function(state)&lt;br /&gt;
	local res = lexer.lex_regex(state, &amp;quot;[a-z_]*&amp;quot;)&lt;br /&gt;
	if res then res.type=&amp;quot;prefix&amp;quot; return res end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lex_property_name = function(state)&lt;br /&gt;
	local res = lexer.lex_regex(state, &amp;quot;[a-zA-Z][a-z A-Z&#039;-]*&amp;quot;)&lt;br /&gt;
	if res then res.type=&amp;quot;Plabel&amp;quot; return res end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- PathElt 	 ::= 	PathPrimary PathMod?&lt;br /&gt;
-- PathMod 	 ::= 	( &#039;*&#039; | &#039;?&#039; | &#039;+&#039; | &#039;{&#039; ( Integer ( &#039;,&#039; ( &#039;}&#039; | Integer &#039;}&#039; ) | &#039;}&#039; ) ) )&lt;br /&gt;
&lt;br /&gt;
function pparser.pathElt(state)&lt;br /&gt;
	local node&lt;br /&gt;
	local prime_node&lt;br /&gt;
	&lt;br /&gt;
	local min_bound = nil&lt;br /&gt;
	local max_bound = nil&lt;br /&gt;
	&lt;br /&gt;
	local function create_node(type)&lt;br /&gt;
		return idop(&lt;br /&gt;
			function(state)&lt;br /&gt;
				node = type:create(prime_node, min_bound, max_bound)&lt;br /&gt;
			end&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local res = chain{&lt;br /&gt;
		pparser.pathPrimary,&lt;br /&gt;
		idop(function(state) prime_node = state.node end),&lt;br /&gt;
		alternative{&lt;br /&gt;
			chain{&lt;br /&gt;
				lex_char(&amp;quot;*&amp;quot;),&lt;br /&gt;
				create_node(path.StarNode)&lt;br /&gt;
			},&lt;br /&gt;
		    chain{&lt;br /&gt;
				lex_char(&amp;quot;+&amp;quot;),&lt;br /&gt;
				create_node(path.PlusNode)&lt;br /&gt;
			},&lt;br /&gt;
		    chain{&lt;br /&gt;
				lex_char(&amp;quot;?&amp;quot;),&lt;br /&gt;
				create_node(path.MaybeNode)&lt;br /&gt;
			},&lt;br /&gt;
		    chain{&lt;br /&gt;
				lex_char(&amp;quot;^&amp;quot;),&lt;br /&gt;
				create_node(path.InverseNode)&lt;br /&gt;
			},&lt;br /&gt;
		    chain{&lt;br /&gt;
				lex_char(&amp;quot;{&amp;quot;),&lt;br /&gt;
				lex_integer,&lt;br /&gt;
				idop(function(state) min_bound = tonumber(state.lexed) end),&lt;br /&gt;
				alternative{&lt;br /&gt;
					chain{&lt;br /&gt;
						lex_char(&amp;quot;,&amp;quot;), &lt;br /&gt;
						lex_integer,&lt;br /&gt;
						idop(function(state) max_bound = tonumber(state.lexed) end)&lt;br /&gt;
					},&lt;br /&gt;
					chain{&lt;br /&gt;
						parse_epsilon, &lt;br /&gt;
						idop(function(state) max_bound = nil end)&lt;br /&gt;
					}&lt;br /&gt;
				},&lt;br /&gt;
				create_node(path.BetweenNode, min_bound, max_bound),&lt;br /&gt;
				lex_char(&amp;quot;}&amp;quot;),&lt;br /&gt;
			},&lt;br /&gt;
			chain{&lt;br /&gt;
				parse_epsilon,&lt;br /&gt;
				idop(function(state) node = prime_node end)&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}(state)&lt;br /&gt;
&lt;br /&gt;
	if res then&lt;br /&gt;
		res.node = node&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- PathEltOrInverse 	 ::= 	PathElt | &#039;^&#039; PathElt&lt;br /&gt;
pparser.pathEltOrInverse = function(state)&lt;br /&gt;
	return alternative{&lt;br /&gt;
		pparser.pathElt,&lt;br /&gt;
		chain{&lt;br /&gt;
			lex_char(&amp;quot;^&amp;quot;),&lt;br /&gt;
			pparser.pathElt,&lt;br /&gt;
			function(state)&lt;br /&gt;
				state.node = path.InverseNode(state.node)&lt;br /&gt;
				return state&lt;br /&gt;
			end&lt;br /&gt;
		}&lt;br /&gt;
	}(state)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
&lt;br /&gt;
Tests :&lt;br /&gt;
&lt;br /&gt;
plop=p.parse(&amp;quot;P31&amp;quot;,p.pathElt) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop)&lt;br /&gt;
yes&lt;br /&gt;
property=&amp;gt;&lt;br /&gt;
   P31&lt;br /&gt;
&lt;br /&gt;
plop=p.parse(&amp;quot;P31&amp;gt;P279&amp;quot;, p.pathElt) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop) &lt;br /&gt;
yes&lt;br /&gt;
property=&amp;gt;&lt;br /&gt;
   P279&lt;br /&gt;
node=&amp;gt;&lt;br /&gt;
   P31&lt;br /&gt;
&lt;br /&gt;
plop=p.parse(&amp;quot;P31{1,6}&amp;quot;,p.pathElt) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plop=p.parse(&amp;quot;(P31|P17&amp;gt;P31)&amp;quot;,p.pathElt) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop) &lt;br /&gt;
yes&lt;br /&gt;
nodes=&amp;gt;&lt;br /&gt;
   1=&amp;gt;&lt;br /&gt;
      property=&amp;gt;&lt;br /&gt;
         P31&lt;br /&gt;
   2=&amp;gt;&lt;br /&gt;
      property=&amp;gt;&lt;br /&gt;
         P31&lt;br /&gt;
      node=&amp;gt;&lt;br /&gt;
         P17&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pparser.pathSequence = nary_op_parser(&lt;br /&gt;
	pparser.pathEltOrInverse,&lt;br /&gt;
	alternative{&lt;br /&gt;
		chain{&lt;br /&gt;
			lexer.lex_char(&amp;quot;/&amp;quot;), &lt;br /&gt;
			pparser.pathEltOrInverse,&lt;br /&gt;
		},&lt;br /&gt;
		chain{&lt;br /&gt;
			lexer.lex_char(&amp;quot;\^&amp;quot;), &lt;br /&gt;
			pparser.pathElt,&lt;br /&gt;
			function(state) &lt;br /&gt;
				state.node = path.InverseNode:create(state.node) &lt;br /&gt;
				return state&lt;br /&gt;
			end&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	function(acc) return path.SequenceNode:create(acc) end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests:&lt;br /&gt;
&lt;br /&gt;
plop=p.parse(&amp;quot;P31/P31+&amp;quot;,p.pathSequence) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop) &lt;br /&gt;
yes&lt;br /&gt;
nodes=&amp;gt;&lt;br /&gt;
   1=&amp;gt;&lt;br /&gt;
      property=&amp;gt;&lt;br /&gt;
         P31&lt;br /&gt;
   2=&amp;gt;&lt;br /&gt;
      node=&amp;gt;&lt;br /&gt;
         property=&amp;gt;&lt;br /&gt;
            P31&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- PathAlternative 	 ::= 	PathSequence ( &#039;|&#039; PathSequence )*&lt;br /&gt;
&lt;br /&gt;
pparser.pathAlternative = nary_op_parser(&lt;br /&gt;
	pparser.pathSequence,&lt;br /&gt;
	chain{&lt;br /&gt;
		lex_char(&amp;quot;[|]&amp;quot;), &lt;br /&gt;
		pparser.pathSequence&lt;br /&gt;
	},&lt;br /&gt;
	function(acc) return path.AlternativeNode:create(acc) end&lt;br /&gt;
)&lt;br /&gt;
	&lt;br /&gt;
--[[&lt;br /&gt;
plop=p.parse(&amp;quot;P31|P17/P279+&amp;quot;,p.pathAlternative) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop) &lt;br /&gt;
yes&lt;br /&gt;
nodes=&amp;gt;&lt;br /&gt;
   1=&amp;gt;&lt;br /&gt;
      property=&amp;gt;&lt;br /&gt;
         P31&lt;br /&gt;
   2=&amp;gt;&lt;br /&gt;
      nodes=&amp;gt;&lt;br /&gt;
         1=&amp;gt;&lt;br /&gt;
            property=&amp;gt;&lt;br /&gt;
               P17&lt;br /&gt;
         2=&amp;gt;&lt;br /&gt;
            node=&amp;gt;&lt;br /&gt;
               property=&amp;gt;&lt;br /&gt;
                  P279&lt;br /&gt;
                  &lt;br /&gt;
plop=p.parse(&amp;quot;P31|P17&amp;gt;P31/P279+&amp;quot;,p.pathAlternative) ; t = require &amp;quot;Module:Tools&amp;quot; ; t.dump_to_console(plop) &lt;br /&gt;
yes&lt;br /&gt;
nodes=&amp;gt;&lt;br /&gt;
   1=&amp;gt;&lt;br /&gt;
      property=&amp;gt;&lt;br /&gt;
         P31&lt;br /&gt;
   2=&amp;gt;&lt;br /&gt;
      nodes=&amp;gt;&lt;br /&gt;
         1=&amp;gt;&lt;br /&gt;
            property=&amp;gt;&lt;br /&gt;
               P31&lt;br /&gt;
            node=&amp;gt;&lt;br /&gt;
               P17&lt;br /&gt;
         2=&amp;gt;&lt;br /&gt;
            node=&amp;gt;&lt;br /&gt;
               property=&amp;gt;&lt;br /&gt;
                  P279&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- PathSequence 	 ::= 	PathEltOrInverse ( &#039;/&#039; PathEltOrInverse | &#039;^&#039; PathElt )* &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local instance = function()&lt;br /&gt;
	-- P31/P279*&lt;br /&gt;
	return path.SequenceNode:create(&lt;br /&gt;
		{&lt;br /&gt;
			path.PropertyNode:create(&amp;quot;P31&amp;quot;),&lt;br /&gt;
			path.StarNode:create(path.PropertyNode:create(&amp;quot;P279&amp;quot;))&lt;br /&gt;
		}&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- PathPrimary 	 ::= ( Prop | &#039;!&#039;  NegatedPropertySet ) ( &#039;&amp;gt;&#039; ( Prop | &#039;!&#039;  NegatedPropertySet ) ) ? | &#039;a&#039; | &#039;(&#039; Path &#039;)&#039; &lt;br /&gt;
&lt;br /&gt;
pparser.pathPrimary = function(state)&lt;br /&gt;
	local node&lt;br /&gt;
	&lt;br /&gt;
	local res = alternative{&lt;br /&gt;
		chain{&lt;br /&gt;
			lex_char(&#039;a&#039;), &lt;br /&gt;
			lex_char(&#039; &#039;),&lt;br /&gt;
			idop(function(state) node = instance() end)&lt;br /&gt;
		},&lt;br /&gt;
		chain{&lt;br /&gt;
			chain{&lt;br /&gt;
				alternative{&lt;br /&gt;
					pparser.prop, &lt;br /&gt;
					chain {lex_char(&#039;!&#039;), pparser.negatedPropertySet}&lt;br /&gt;
				},&lt;br /&gt;
				idop(function(state) node = state.node end)&lt;br /&gt;
			},&lt;br /&gt;
			alternative{&lt;br /&gt;
				chain{&lt;br /&gt;
					pparser.pathQualifier,&lt;br /&gt;
					idop(&lt;br /&gt;
						function(state) &lt;br /&gt;
							node = path.QualifiedStatementNode:create(&lt;br /&gt;
								node,&lt;br /&gt;
								state.node&lt;br /&gt;
							)&lt;br /&gt;
						end&lt;br /&gt;
					)&lt;br /&gt;
				},&lt;br /&gt;
				parse_epsilon&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		chain{&lt;br /&gt;
			lexer.open_parenthesis, &lt;br /&gt;
			pparser.path,&lt;br /&gt;
			idop(&lt;br /&gt;
				function(state) &lt;br /&gt;
					node = state.node &lt;br /&gt;
				end&lt;br /&gt;
			),&lt;br /&gt;
			lexer.close_parenthesis&lt;br /&gt;
		},&lt;br /&gt;
		chain{&lt;br /&gt;
			lexer.lex_char(&#039;!&#039;),&lt;br /&gt;
			pparser.negatedPropertySet,&lt;br /&gt;
			idop(&lt;br /&gt;
				function(state) &lt;br /&gt;
					node = state.node &lt;br /&gt;
				end&lt;br /&gt;
			)&lt;br /&gt;
		}&lt;br /&gt;
	}(state)&lt;br /&gt;
	if res then&lt;br /&gt;
		res.node = node&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests :&lt;br /&gt;
&lt;br /&gt;
p.parse(&amp;quot;a &amp;quot;, p.pathPrimary) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;!P31&amp;quot;, p.pathPrimary) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;!(P31|instance of)&amp;quot;, p.pathPrimary) =&amp;gt; yes&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- stupid function to be eliminated soon (hum)&lt;br /&gt;
local function parsePropAndWrap(wrapper)&lt;br /&gt;
	return 	chain{ &lt;br /&gt;
				pparser.prop,&lt;br /&gt;
				function (state) &lt;br /&gt;
					&lt;br /&gt;
					local node = state.node&lt;br /&gt;
					local nodes = {}&lt;br /&gt;
					nodes[1] = {}&lt;br /&gt;
					nodes[1].node = node -- TODO: understand why this is needed instead of just &amp;quot;nodes[1] = node&amp;quot;&lt;br /&gt;
					state.node = wrapper(nodes) &lt;br /&gt;
					return state&lt;br /&gt;
				end&lt;br /&gt;
			}&lt;br /&gt;
end&lt;br /&gt;
		&lt;br /&gt;
pparser.pathPropertySetParser = function(final_node_creator)&lt;br /&gt;
    return function(state)&lt;br /&gt;
    	return chain{&lt;br /&gt;
			lexer.open_parenthesis,&lt;br /&gt;
			alternative{&lt;br /&gt;
				nary_op_parser(&lt;br /&gt;
					pparser.pathOneInPropertySet,&lt;br /&gt;
					chain{&lt;br /&gt;
						lexer.lex_char(&amp;quot;|&amp;quot;),&lt;br /&gt;
						pparser.pathOneInPropertySet&lt;br /&gt;
					},&lt;br /&gt;
					final_node_creator,&lt;br /&gt;
					function (node) &lt;br /&gt;
						&lt;br /&gt;
						local singlenodes = {}&lt;br /&gt;
						singlenodes[1] = node -- mmm&lt;br /&gt;
						-- singlenodes[1].node = node&lt;br /&gt;
						&lt;br /&gt;
						return final_node_creator(singlenodes)&lt;br /&gt;
					end&lt;br /&gt;
				),&lt;br /&gt;
				-- parsePropAndWrap(final_node_creator), -- case for &amp;quot;!(P31)&amp;quot; like patterns, naryopparser or something needs to be fixed to better handle this&lt;br /&gt;
													 -- here the solution for negation is to create a negated set with only one property.&lt;br /&gt;
				chain{&lt;br /&gt;
					parse_epsilon, &lt;br /&gt;
					function(state) &lt;br /&gt;
						state.node = final_node_creator({}) &lt;br /&gt;
						return state &lt;br /&gt;
					end&lt;br /&gt;
				} -- allows emty set (to mimic any qualifer allowed, equiv of «*»)&lt;br /&gt;
			},&lt;br /&gt;
			lexer.close_parenthesis&lt;br /&gt;
    	}(state)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pparser.propOrSetParser = function(creator)&lt;br /&gt;
	return function(state)&lt;br /&gt;
		return alternative{&lt;br /&gt;
			parsePropAndWrap(creator), -- case for the pattern !P31 , in case it’s negated this stills need to be wrapped on a negated set &lt;br /&gt;
			pparser.pathPropertySetParser(function(nodes) return creator(nodes) end),&lt;br /&gt;
		}(state)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- &#039;&amp;gt;&#039; ( Prop | &#039;!&#039;  NegatedPropertySet | PropertySet )&lt;br /&gt;
pparser.pathQualifier = chain{&lt;br /&gt;
	lex_char(&amp;quot;&amp;gt;&amp;quot;),&lt;br /&gt;
	alternative{&lt;br /&gt;
		chain{&lt;br /&gt;
			lex_char(&amp;quot;!&amp;quot;),&lt;br /&gt;
			pparser.propOrSetParser(function(nodes) return path.NegatedPropertySetNode:create(nodes) end)&lt;br /&gt;
		},&lt;br /&gt;
		pparser.propOrSetParser(function(nodes) return path.PropertySetNode:create(nodes) end)&lt;br /&gt;
	},&lt;br /&gt;
	function(state) &lt;br /&gt;
		state.node = path.QualifierSnakNode:create(state.node)&lt;br /&gt;
		return state&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
--[[&lt;br /&gt;
=p.parse(&amp;quot;&amp;gt;!(P31|P31)&amp;quot;,p.pathQualifier)&lt;br /&gt;
=p.parse(&amp;quot;&amp;gt;(P31|P31)&amp;quot;,p.pathQualifier)&lt;br /&gt;
=p.parse(&amp;quot;&amp;gt;P31&amp;quot;,p.pathQualifier)&lt;br /&gt;
=p.parse(&amp;quot;&amp;gt;!P31&amp;quot;,p.pathQualifier)&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- PathNegatedPropertySet	  ::=  	PathOneInPropertySet | &#039;(&#039; ( PathOneInPropertySet ( &#039;|&#039; PathOneInPropertySet )* )? &#039;)&#039;&lt;br /&gt;
&lt;br /&gt;
pparser.negatedPropertySet = pparser.pathPropertySetParser(&lt;br /&gt;
	function(nodes) &lt;br /&gt;
		return path.NegatedPropertySetNode:create(nodes) &lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Tests :&lt;br /&gt;
&lt;br /&gt;
p.parse(&amp;quot;!P31&amp;quot;,p.negatedPropertySet)&lt;br /&gt;
p.parse(&amp;quot;(P31|P32)&amp;quot;,p.negatedPropertySet) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;P31&amp;quot;,p.negatedPropertySet) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;^P31&amp;quot;,p.negatedPropertySet) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;^(P31)&amp;quot;,p.negatedPropertySet) =&amp;gt; nope&lt;br /&gt;
p.parse(&amp;quot;(P31)&amp;quot;,p.negatedPropertySet) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;(^P31)&amp;quot;,p.negatedPropertySet) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;(^P31|a|plop)&amp;quot;,p.negatedPropertySet) =&amp;gt; yes&lt;br /&gt;
&lt;br /&gt;
All good(?)&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- PathOneInPropertySet	  ::=  	iri | &#039;a&#039; | &#039;^&#039; ( iri | &#039;a&#039; ) &lt;br /&gt;
&lt;br /&gt;
pparser.pathOneInPropertySet = function(state)&lt;br /&gt;
	local node = {}&lt;br /&gt;
	&lt;br /&gt;
	local pElement = alternative{&lt;br /&gt;
		chain{&lt;br /&gt;
			lexer.lex_char(&#039;a&#039;),&lt;br /&gt;
			idop(function(state) elem = instance() end)&lt;br /&gt;
		},&lt;br /&gt;
		chain{&lt;br /&gt;
			pparser.prop,&lt;br /&gt;
			idop(function(state) elem = state.node end)&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local res = alternative{&lt;br /&gt;
		chain{&lt;br /&gt;
			lexer.lex_char(&amp;quot;^&amp;quot;),&lt;br /&gt;
			pElement,&lt;br /&gt;
			idop(function(state) node = state.node end)&lt;br /&gt;
		},&lt;br /&gt;
		chain{&lt;br /&gt;
			pElement,&lt;br /&gt;
			idop(function(state) node = path.InverseNode:create(state.node) end)&lt;br /&gt;
		}&lt;br /&gt;
	}(state)&lt;br /&gt;
&lt;br /&gt;
	if res then res.node = node end&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
&lt;br /&gt;
-- Prop ::= IRIref | Pid | Pname&lt;br /&gt;
pparser.prop = function(state)&lt;br /&gt;
	local res = alternative{&lt;br /&gt;
		chain{&lt;br /&gt;
			parser.questionmark(&lt;br /&gt;
				chain{&lt;br /&gt;
					lex_sparql_prefix,&lt;br /&gt;
					lex_char(&amp;quot;:&amp;quot;)&lt;br /&gt;
				}&lt;br /&gt;
			),&lt;br /&gt;
			lex_pid&lt;br /&gt;
		},&lt;br /&gt;
		lex_property_name&lt;br /&gt;
	}(state)&lt;br /&gt;
&lt;br /&gt;
	if res then&lt;br /&gt;
		res.node = path.PropertyNode:create(res.lexed)&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Tests :&lt;br /&gt;
&lt;br /&gt;
p.parse(&amp;quot;a &amp;quot;, p.primary) =&amp;gt; yes&lt;br /&gt;
p.parse(&amp;quot;P31@&amp;quot;, p.prop) =&amp;gt; nope&lt;br /&gt;
p.parse(&amp;quot;P31&amp;quot;, p.prop) =&amp;gt; nope&lt;br /&gt;
p.parse(&amp;quot;P31&amp;gt;P279&amp;quot;, p.prop) =&amp;gt; nope&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- PathFirstSequence      ::= &#039;&amp;gt;&#039; PathQualifier ( &#039;/&#039; PathEltOrInverse | &#039;^&#039; PathElt )* &lt;br /&gt;
pparser.pathFirstSequence = nary_op_parser(&lt;br /&gt;
--	chain{&lt;br /&gt;
		pparser.pathQualifier,&lt;br /&gt;
--		function(state)&lt;br /&gt;
--			state.node = path.QualifierSnakNode:create(state.node)&lt;br /&gt;
--			return state&lt;br /&gt;
--		end&lt;br /&gt;
--	},&lt;br /&gt;
	chain{&lt;br /&gt;
		lex_char(&amp;quot;/&amp;quot;),&lt;br /&gt;
		pparser.pathEltOrInverse&lt;br /&gt;
	},&lt;br /&gt;
	function (acc) &lt;br /&gt;
		return path.SequenceNode:create(acc) &lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
pparser.path = function(state)&lt;br /&gt;
	return pparser.pathAlternative(state)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- PathFirstAlternative   ::= PathFirstSequence ( &#039;|&#039; PathFirstSequence )* | Path&lt;br /&gt;
pparser.pathFirstAlternative = alternative{&lt;br /&gt;
	pparser.path,&lt;br /&gt;
	nary_op_parser(&lt;br /&gt;
		pparser.pathFirstSequence, &lt;br /&gt;
		chain{&lt;br /&gt;
			lex_char(&amp;quot;|&amp;quot;),&lt;br /&gt;
			pparser.pathFirstSequence&lt;br /&gt;
		},&lt;br /&gt;
		function(acc) return path.AlternativeNode:create(acc) end&lt;br /&gt;
	),&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- plop = p.parse_path(&amp;quot;P31/P31/P31&amp;gt;P31/P31&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
pparser.parse_path = function (property_path)&lt;br /&gt;
	local res = parser.parse(property_path, pparser.pathFirstAlternative)&lt;br /&gt;
	assert(res, &amp;quot;parsing returned a nil obj on path : «&amp;quot; .. property_path .. &amp;quot;»&amp;quot;)&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- to test in console&lt;br /&gt;
pparser.parse = parser.parse&lt;br /&gt;
&lt;br /&gt;
return pparser&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Infobox/Fonctions/G%C3%A9olocalisation&amp;diff=346</id>
		<title>Module:Infobox/Fonctions/Géolocalisation</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Infobox/Fonctions/G%C3%A9olocalisation&amp;diff=346"/>
		<updated>2024-09-20T14:23:43Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local localdata = require( &amp;#039;Module:Infobox/Localdata&amp;#039; ) local item = localdata.item local id if item then 	id = item.id end local wd = require &amp;quot;Module:Wikidata&amp;quot; -- Modules chargés si necessaire : -- local countrymodule = require &amp;quot;Module:Country data&amp;quot; -- local coord = require &amp;quot;Module:Coordinates&amp;quot; local p = {}  function p.country() 	local function formatCountry(country) 		if not country then 			return nil 		end 		local countrymodule = require &amp;quot;Module:Country data&amp;quot;... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local localdata = require( &#039;Module:Infobox/Localdata&#039; )&lt;br /&gt;
local item = localdata.item&lt;br /&gt;
local id&lt;br /&gt;
if item then&lt;br /&gt;
	id = item.id&lt;br /&gt;
end&lt;br /&gt;
local wd = require &amp;quot;Module:Wikidata&amp;quot;&lt;br /&gt;
-- Modules chargés si necessaire :&lt;br /&gt;
-- local countrymodule = require &amp;quot;Module:Country data&amp;quot;&lt;br /&gt;
-- local coord = require &amp;quot;Module:Coordinates&amp;quot;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.country()&lt;br /&gt;
	local function formatCountry(country)&lt;br /&gt;
		if not country then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		local countrymodule = require &amp;quot;Module:Country data&amp;quot;&lt;br /&gt;
		local val, success = countrymodule.standarddisplay(country) -- val = nil si country n&#039;est pas reconnu&lt;br /&gt;
		if success then&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return  {&lt;br /&gt;
		type = &#039;mixed&#039;,&lt;br /&gt;
		label = &#039;Pays&#039;,&lt;br /&gt;
		value = function() return formatCountry(localdata[&#039;pays&#039;]) or localdata[&#039;pays&#039;] end,&lt;br /&gt;
		wikidata = {&lt;br /&gt;
			property = &#039;P17&#039;, &lt;br /&gt;
			conjtype = &#039;new line&#039;, &lt;br /&gt;
			displayformat = function(snak) &lt;br /&gt;
				local id = wd.getId(snak) &lt;br /&gt;
				return formatCountry(id) or wd.formatSnak(snak)&lt;br /&gt;
			end&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.coordvalue(moduleparams) -- valeurs des coordonnées, sans mise en infoboîte&lt;br /&gt;
	local coord = require &amp;quot;Module:Coordinates&amp;quot;&lt;br /&gt;
	if not moduleparams then&lt;br /&gt;
		moduleparams = {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function toboolean(val) -- transforme un &amp;quot;-&amp;quot; en false au moment voulu&lt;br /&gt;
		if val == &#039;-&#039; or val == &#039;non&#039; then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- paramètres Wikidata&lt;br /&gt;
	local wikidata = tostring(toboolean(localdata[&#039;wikidata&#039;] or true)) -- doit être string dans Module:Coordinates&lt;br /&gt;
	local maxdistance = moduleparams.maxdistance&lt;br /&gt;
	local wikidataquery = moduleparams.wikidataquery or {property = &#039;P625&#039;}&lt;br /&gt;
	if not wikidataquery.entity then&lt;br /&gt;
		wikidataquery.entity = item&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- paramètres d&#039;affichage&lt;br /&gt;
	local displayformat = localdata[&#039;format coordonnées&#039;], moduleparams.displayformat&lt;br /&gt;
	&lt;br /&gt;
	local displayplace = &#039;&#039;&lt;br /&gt;
	local displayinline = toboolean(localdata[&#039;coords en ligne&#039;] or moduleparams.displayinline or true)&lt;br /&gt;
	-- par défaut : on met dans les coordonnées de l&#039;infobox principale en titre&lt;br /&gt;
	local displaytitle = localdata[&#039;coords en titre&#039;]&lt;br /&gt;
		or moduleparams.displaytitle&lt;br /&gt;
		or (localdata[&#039;infoboxrank&#039;] == &#039;main&#039;)&lt;br /&gt;
	if displayinline and (displayinline ~= &#039;-&#039;) then&lt;br /&gt;
		displayplace = displayplace .. &#039;inline&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if displaytitle and (displaytitle ~= &#039;-&#039;)  then&lt;br /&gt;
		displayplace = displayplace .. &#039;title,&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- données sur géograhiques&lt;br /&gt;
	local globe = localdata[&#039;globe&#039;] or localdata[&#039;planète&#039;] or moduleparams[&#039;globe&#039;] or &#039;earth&#039;&lt;br /&gt;
	local latitude = moduleparams[&#039;latitude&#039;] or localdata[&#039;latitude&#039;]&lt;br /&gt;
	local longitude = moduleparams[&#039;longitude&#039;] or localdata[&#039;longitude&#039;]&lt;br /&gt;
&lt;br /&gt;
	local parameterlist = {&lt;br /&gt;
		latitude = latitude,&lt;br /&gt;
		longitude = longitude,&lt;br /&gt;
		format = displayformat,&lt;br /&gt;
		display= displayplace,&lt;br /&gt;
		globe = globe,&lt;br /&gt;
		wikidata = wikidata,&lt;br /&gt;
		wikidataquery = wikidataquery,&lt;br /&gt;
		maxdistance = maxdistance,&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local val = coord._coord(parameterlist)&lt;br /&gt;
	if (not val) and moduleparams.fallbackquery then -- si pas de valeur, essayer la query de sustitution&lt;br /&gt;
		parameterlist.wikidataquery = moduleparams.fallbackquery&lt;br /&gt;
		parameterlist.wikidataquery.entity = item&lt;br /&gt;
		val = coord._coord(parameterlist)&lt;br /&gt;
	end&lt;br /&gt;
	if val and latitude and longitude and localdata[&#039;référence géolocalisation&#039;] then&lt;br /&gt;
		val = val .. &#039; &#039; .. localdata[&#039;référence géolocalisation&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	if val and not localdata[&#039;latitude&#039;] then&lt;br /&gt;
		val = wd.addLinkBack(val, item, wikidataquery.property)&lt;br /&gt;
	end&lt;br /&gt;
	if displayinline == false then&lt;br /&gt;
		return -- type: external text pour ne pas avoir de ligne vide en infobox&lt;br /&gt;
		{&lt;br /&gt;
		type = &#039;external text&#039;,&lt;br /&gt;
		sortkey = sortkey,&lt;br /&gt;
 		value = val&lt;br /&gt;
 		}&lt;br /&gt;
 	else &lt;br /&gt;
 		return val&lt;br /&gt;
 	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.coordinates(moduleparams)&lt;br /&gt;
	if not moduleparams then&lt;br /&gt;
		moduleparams = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- paramètre coordonnées a la priorité sur &amp;quot;géolocalisation&amp;quot; (=carte)&lt;br /&gt;
	local relevant = localdata[&#039;coordonnées&#039;] or localdata[&#039;géolocalisation&#039;] &lt;br /&gt;
	if relevant == &#039;-&#039; or relevant == &#039;non&#039; or relevant == &#039;pas pertinent&#039; or relevant == &#039;non pertinent&#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- initialise les paramètres avec les valeurs du module d&#039;infobox (moduleparams)&lt;br /&gt;
	return {&lt;br /&gt;
		type = &#039;mixed&#039;,&lt;br /&gt;
		label = &#039;Coordonnées&#039;,&lt;br /&gt;
		maintenancecat = moduleparams.maintenancecat or &#039;Page géolocalisable sans coordonnées paramétrées&#039;,&lt;br /&gt;
		sortkey = moduleparams.sortkey,&lt;br /&gt;
 		value = function (localdata) return p.coordvalue(moduleparams) end&lt;br /&gt;
 	}	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.geoloc(params)&lt;br /&gt;
&lt;br /&gt;
	if not params then&lt;br /&gt;
		params = {}&lt;br /&gt;
	end&lt;br /&gt;
	if (localdata[&#039;géolocalisation&#039;] == &#039;-&#039;) or (localdata[&#039;géolocalisation&#039;] == &#039;pas pertinent&#039;) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return   { &lt;br /&gt;
		type = &#039;map&#039;,&lt;br /&gt;
		latitude = &#039;latitude&#039;,&lt;br /&gt;
		longitude = &#039;longitude&#039;,&lt;br /&gt;
		wikidata = params.wikidata or {{property = &#039;P625&#039;}},&lt;br /&gt;
		entity = item,&lt;br /&gt;
		maps = function() return localdata[&#039;géolocalisation&#039;] or params.defaultmaps or &amp;quot;interactive&amp;quot; end, -- paramètre pour la liste des cartes à utiliser&lt;br /&gt;
		staticmaps = &#039;carte&#039;, -- carte en mode image simple&lt;br /&gt;
		staticmapsWD = {property = &amp;quot;P242&amp;quot;, numval = 1}, -- p&lt;br /&gt;
		width = params.width,&lt;br /&gt;
		pointtype = params.pointtype,&lt;br /&gt;
		maptype = params.maptype,&lt;br /&gt;
		globe = localdata.globe or localdata[&#039;planète&#039;] or params.globe,&lt;br /&gt;
		marker = params.marker,&lt;br /&gt;
		markercolor = params.markercolor,&lt;br /&gt;
		shapecolor = params.shapecolor,&lt;br /&gt;
		default_zoom = localdata[&#039;zoom&#039;] or params.default_zoom,&lt;br /&gt;
		ids = params.ids or id,&lt;br /&gt;
		params = {guessmaps = params.guessmaps} -- = quelles cartes utiliser en l&#039;absence de données fournies dans |gélocalisation&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.locationmap(upright)&lt;br /&gt;
	return {&lt;br /&gt;
		type = &#039;images&#039;,&lt;br /&gt;
		imageparameters =  {&#039;carte&#039;,&#039;imageloc&#039;},&lt;br /&gt;
		sizeparameter = &#039;taille carte&#039;,&lt;br /&gt;
		captionparameter = {&#039;légende carte&#039;,&#039;légende imageloc&#039;},&lt;br /&gt;
		defaultsize = size,&lt;br /&gt;
		defaultupright = upright or &#039;1&#039;,&lt;br /&gt;
		property = &#039;P242&#039;,&lt;br /&gt;
		numval = 1,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.detailedmap(defaultsize)&lt;br /&gt;
	return {&lt;br /&gt;
		type = &#039;images&#039;,&lt;br /&gt;
		imageparameters =  {&#039;carte&#039;},&lt;br /&gt;
		sizeparameter = &#039;taille carte&#039;,&lt;br /&gt;
		captionparameter = {&#039;légende carte&#039;},&lt;br /&gt;
		defaultsize = defaultsize,&lt;br /&gt;
		defaultupright = &#039;1&#039;,&lt;br /&gt;
		property = &#039;P1621&#039;,&lt;br /&gt;
		numval = 1,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Propri%C3%A9t%C3%A9s&amp;diff=345</id>
		<title>Module:Propriétés</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Propri%C3%A9t%C3%A9s&amp;diff=345"/>
		<updated>2024-09-20T14:23:28Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = { 	instance_de= &amp;quot;P31&amp;quot;,     sous_classe_de = &amp;quot;P279&amp;quot;,     prenom = &amp;quot;P735&amp;quot;,     nomdefamille = &amp;quot;P734&amp;quot;,      isbn10 = &amp;quot;P957&amp;quot;,     publie_dans = &amp;quot;P1433&amp;quot;,     langue = &amp;quot;P407&amp;quot;  } -- this module gives solutions to get the Pnumber of a property by its name   -- could be automatized, but for now just defining a muanual mapping   p.p_from_name = { 	[&amp;quot;country&amp;quot;] = 17 ; 	[&amp;quot;gender&amp;quot;] = 21 ;  	[&amp;quot;instance of&amp;quot;] = 31 ; 	 	[&amp;quot;field&amp;quot;] = 101 ;  	[&amp;quot;occupation&amp;quot;] = 106 ; 	 	[&amp;quot;gen... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {&lt;br /&gt;
	instance_de= &amp;quot;P31&amp;quot;,&lt;br /&gt;
    sous_classe_de = &amp;quot;P279&amp;quot;,&lt;br /&gt;
    prenom = &amp;quot;P735&amp;quot;,&lt;br /&gt;
    nomdefamille = &amp;quot;P734&amp;quot;, &lt;br /&gt;
    isbn10 = &amp;quot;P957&amp;quot;,&lt;br /&gt;
    publie_dans = &amp;quot;P1433&amp;quot;,&lt;br /&gt;
    langue = &amp;quot;P407&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
-- this module gives solutions to get the Pnumber of a property by its name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- could be automatized, but for now just defining a muanual mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.p_from_name = {&lt;br /&gt;
	[&amp;quot;country&amp;quot;] = 17 ;&lt;br /&gt;
	[&amp;quot;gender&amp;quot;] = 21 ;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;instance of&amp;quot;] = 31 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;field&amp;quot;] = 101 ; &lt;br /&gt;
	[&amp;quot;occupation&amp;quot;] = 106 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;genre&amp;quot;] = 136 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;named after&amp;quot;] = 138 ;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;preceded by&amp;quot;] = 155;&lt;br /&gt;
	[&amp;quot;succeeded by&amp;quot;] = 156;&lt;br /&gt;
	[&amp;quot;collection&amp;quot;] = 195;	&lt;br /&gt;
	[&amp;quot;subclass of&amp;quot;] = 279 ;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;category&#039;s topic&amp;quot;] = 301;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;list of&amp;quot;] = 360 ; &lt;br /&gt;
	[&amp;quot;part of&amp;quot;] = 361 ;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;commons category&amp;quot;] = 373;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;terminus&amp;quot;] = 559;&lt;br /&gt;
	[&amp;quot;direction&amp;quot;] = 560;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;start date&amp;quot;] = 580 ;&lt;br /&gt;
	[&amp;quot;begin date&amp;quot;] = 580 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;end date&amp;quot;] = 582 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;date&amp;quot;] = 585 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;of&amp;quot;] = 642 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;participant&amp;quot;] = 710 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;edition&amp;quot;] = 747 ;&lt;br /&gt;
	[&amp;quot;edition of&amp;quot;] = 629 ;&lt;br /&gt;
	&lt;br /&gt;
	[&#039;key event&#039;] = 793 ;&lt;br /&gt;
	[&#039;significant event&#039;] = 793 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;topic&#039;s category&amp;quot;] = 910;&lt;br /&gt;
	[&amp;quot;subject&amp;quot;] = 921; -- work subject&lt;br /&gt;
	[&amp;quot;inspired by&amp;quot;] = 941 ;	&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fictional analog of&amp;quot;] = 1074 ;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;statement disputed by&amp;quot;] = 1310 ;&lt;br /&gt;
	[&amp;quot;disputed by&amp;quot;] = 1310 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;of&amp;quot;] = 642 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;history&amp;quot;] = 2184 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;property for this type&amp;quot;] = 1963 ;&lt;br /&gt;
    [&amp;quot;metasubclass of&amp;quot;] = 2445 ;&lt;br /&gt;
    &lt;br /&gt;
	[&amp;quot;number&amp;quot;] = 1114 ;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;union of&amp;quot;] = 2737;&lt;br /&gt;
	[&amp;quot;disjoint union of&amp;quot;] = 2738;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;has part of the type&amp;quot;] = 2670 ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function string_to_propnumber(label)&lt;br /&gt;
	local res = p.p_from_name[label] ;&lt;br /&gt;
	if res ~= nil then&lt;br /&gt;
		return tostring( res) ;&lt;br /&gt;
	else&lt;br /&gt;
		res = mw.wikibase.resolvePropertyId(label)&lt;br /&gt;
		if res then&lt;br /&gt;
			return string.sub(res, 2)&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.numberFromPropertylabel = function(frame)  &lt;br /&gt;
	local label = frame.args[1] ;&lt;br /&gt;
	mw.log(label)&lt;br /&gt;
	return string_to_propnumber(label)&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
-- returns a pid of the form &amp;quot;Pnnn...&amp;quot; where n is a character in &amp;quot;123456789&amp;quot;&lt;br /&gt;
--from either &lt;br /&gt;
--* a number representing a property wikidata number&lt;br /&gt;
--* a string number representing a property wikidata number&lt;br /&gt;
--* a pid of the form &amp;quot;Pnnn&amp;quot;&lt;br /&gt;
--* a &amp;quot;property name&amp;quot; corresponding to a property, where the names are listed in the array p.p_from_name&lt;br /&gt;
-- or &amp;quot;nil&amp;quot; if the id does not match to any of the cases above&lt;br /&gt;
p.normalize = function(input_pid)&lt;br /&gt;
	local input_pid = tostring(input_pid)&lt;br /&gt;
	if mw.ustring.match(input_pid, &amp;quot;P%d+&amp;quot;) then&lt;br /&gt;
		return input_pid&lt;br /&gt;
	elseif mw.ustring.match(input_pid, &amp;quot;%d+&amp;quot;) then&lt;br /&gt;
		return &amp;quot;P&amp;quot; .. input_pid&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;P&amp;quot; .. tostring(string_to_propnumber(input_pid))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- function that takes a string with a set of pids and returns an array of properties&lt;br /&gt;
p.expandPropList = function(plist)&lt;br /&gt;
	local props = mw.text.split(plist,&amp;quot;,&amp;quot;)&lt;br /&gt;
	for ind, val in ipairs(props) do&lt;br /&gt;
		props[ind] = p.normalize(val)&lt;br /&gt;
	end&lt;br /&gt;
	return props&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.datatype(property)&lt;br /&gt;
	if type(property) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		property = mw.wikibase.getEntityObject(p.normalize(property))&lt;br /&gt;
	end&lt;br /&gt;
	return property.datatype&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
-- wikitemplate interface&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.Pid = function(frame)  &lt;br /&gt;
	local label = frame.args[1] ;&lt;br /&gt;
	return p.normalize(label)&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
p.Pdatatype = function(frame)&lt;br /&gt;
	return p.datatype(frame.args[1])&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.of = p.normalize(&amp;quot;of&amp;quot;)&lt;br /&gt;
p.union_of = p.normalize(&amp;quot;union of&amp;quot;)&lt;br /&gt;
p.disjoint_union_of = p.normalize(&amp;quot;disjoint union of&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:TableBuilder&amp;diff=344</id>
		<title>Module:TableBuilder</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:TableBuilder&amp;diff=344"/>
		<updated>2024-09-20T14:23:09Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « --Module appliquant aux fonctions de la librairie Table une inteface fluide.  local meta = {      insert = function ( t, ... )         table.insert( t, ... )         return t     end,          remove = function ( t, ... )         table.remove( t, ... )         return t     end,          sort = function ( t, ... )         table.sort( t, ... )         return t     end,          maxn = function ( t )         return table.maxn( t )     end,          concat = function... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--Module appliquant aux fonctions de la librairie Table une inteface fluide.&lt;br /&gt;
&lt;br /&gt;
local meta = {&lt;br /&gt;
&lt;br /&gt;
    insert = function ( t, ... )&lt;br /&gt;
        table.insert( t, ... )&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    remove = function ( t, ... )&lt;br /&gt;
        table.remove( t, ... )&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    sort = function ( t, ... )&lt;br /&gt;
        table.sort( t, ... )&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    maxn = function ( t )&lt;br /&gt;
        return table.maxn( t )&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    concat = function ( t, ... )&lt;br /&gt;
        return table.concat( t, ... )&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    minsert = function( t, ... )&lt;br /&gt;
        for i = 1, select( &#039;#&#039;, ... ) do&lt;br /&gt;
            local sel = select( i, ... )&lt;br /&gt;
            if sel then&lt;br /&gt;
                t[#t+1] = sel&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    tinsert = function( t, tab, first, last )&lt;br /&gt;
        if type( tab ) == &#039;table&#039; then&lt;br /&gt;
            for i = ( tonumber( first ) or 1 ), ( tonumber( last ) or #tab ) do&lt;br /&gt;
                t[#t+1] = tab[i]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
}   &lt;br /&gt;
&lt;br /&gt;
meta.__index = function ( t, key ) &lt;br /&gt;
    local metafunc = meta[key]&lt;br /&gt;
    if type( metafunc ) == &#039;function&#039; then&lt;br /&gt;
        return function ( ... ) return metafunc( t, ... ) end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
        &lt;br /&gt;
-- fin des fonctions de la meta-table&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local TableBuilder = {&lt;br /&gt;
    new = function( ... )&lt;br /&gt;
        local t = { ... }&lt;br /&gt;
        setmetatable( t, meta )&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
    &lt;br /&gt;
    set = function( t )&lt;br /&gt;
        if type( t ) == &#039;table&#039; then&lt;br /&gt;
            setmetatable( t, meta )&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
    end,&lt;br /&gt;
&lt;br /&gt;
    clone = function ( t )&lt;br /&gt;
        local tableRefs = { }&lt;br /&gt;
        local function recursiveClone( val )&lt;br /&gt;
            if type( val ) == &#039;table&#039; then&lt;br /&gt;
                -- Encode circular references correctly&lt;br /&gt;
                if tableRefs[val] ~= nil then&lt;br /&gt;
                    return tableRefs[val]&lt;br /&gt;
                end&lt;br /&gt;
    &lt;br /&gt;
                local retVal = { }&lt;br /&gt;
                tableRefs[val] = setmetatable( retVal, meta )&lt;br /&gt;
    &lt;br /&gt;
                for key, elt in pairs( val ) do&lt;br /&gt;
                    retVal[key] = recursiveClone( elt )&lt;br /&gt;
                end&lt;br /&gt;
                return retVal&lt;br /&gt;
            else&lt;br /&gt;
                return val&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return recursiveClone( t )&lt;br /&gt;
    end,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return TableBuilder&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Path&amp;diff=343</id>
		<title>Module:Wikidata/Chemin/Path</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Path&amp;diff=343"/>
		<updated>2024-09-20T14:22:12Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local path = {} local propt = require &amp;quot;Module:Propriétés&amp;quot;  path.Node = {}  function path.Node:new (o)   o = o or {}   setmetatable(o, self)   self.__index = self   return o end  path.AlternativeNode = path.Node:new()  function path.AlternativeNode:create(nodes) 	local newinst = {[&amp;quot;nodes&amp;quot;] = nodes} 	setmetatable(newinst, self) 	self.__index = self 	return newinst end  function path.AlternativeNode:type() 	return &amp;quot;alternativenode&amp;quot; end  path.SequenceNode = path.No... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local path = {}&lt;br /&gt;
local propt = require &amp;quot;Module:Propriétés&amp;quot;&lt;br /&gt;
&lt;br /&gt;
path.Node = {}&lt;br /&gt;
&lt;br /&gt;
function path.Node:new (o)&lt;br /&gt;
  o = o or {}&lt;br /&gt;
  setmetatable(o, self)&lt;br /&gt;
  self.__index = self&lt;br /&gt;
  return o&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.AlternativeNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
function path.AlternativeNode:create(nodes)&lt;br /&gt;
	local newinst = {[&amp;quot;nodes&amp;quot;] = nodes}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.AlternativeNode:type()&lt;br /&gt;
	return &amp;quot;alternativenode&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.SequenceNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
function path.SequenceNode:create(nodes)&lt;br /&gt;
	local newinst = {[&amp;quot;nodes&amp;quot;] = nodes}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.SequenceNode:type()&lt;br /&gt;
	return &amp;quot;sequencenode&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.StarNode = path.Node:new()&lt;br /&gt;
function path.StarNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.PlusNode = path.Node:new()&lt;br /&gt;
function path.PlusNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.MaybeNode = path.Node:new()&lt;br /&gt;
function path.MaybeNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.BetweenNode = path.Node:new()&lt;br /&gt;
function path.BetweenNode:create(node, min, max)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;node&amp;quot;] = node, &lt;br /&gt;
		[&amp;quot;min&amp;quot;] = min,&lt;br /&gt;
		[&amp;quot;max&amp;quot;] = max,&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
path.InverseNode = path.Node:new()&lt;br /&gt;
function path.InverseNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.QualifiedStatementNode = path.Node:new()&lt;br /&gt;
function path.QualifiedStatementNode:create(main_prop_node, qual_node)&lt;br /&gt;
	assert(main_prop_node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	assert(qual_node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;property&amp;quot;] = main_prop_node,&lt;br /&gt;
		[&amp;quot;qualifier&amp;quot;] = qual_node&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
path.PseudoPropertyNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
path.PropertyNode = path.PseudoPropertyNode:new()&lt;br /&gt;
&lt;br /&gt;
function path.PropertyNode:create(property)&lt;br /&gt;
	assert(property, &amp;quot;(Prop Node : a property must be provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;property&amp;quot;] = propt.normalize(property)&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.PropertyNode:matches(property_str)&lt;br /&gt;
	return propt.normalize(property_str) == self.property&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- see https://www.w3.org/2009/sparql/docs/property-paths/Overview.xml&lt;br /&gt;
&lt;br /&gt;
path.NegatedPropertySetNode = path.PseudoPropertyNode:new()&lt;br /&gt;
function path.NegatedPropertySetNode:create(negated_nodes)&lt;br /&gt;
	assert(negated_nodes, &amp;quot;NegPSet Node : no nodeset provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;negated_nodes&amp;quot;] = negated_nodes&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	self.props = {}&lt;br /&gt;
	&lt;br /&gt;
	for _, val in pairs(negated_nodes) do&lt;br /&gt;
		self.props[val.node.property] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.NegatedPropertySetNode:inset(pid)&lt;br /&gt;
	return self.props[pid] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.NegatedPropertySetNode:matches(property_str)&lt;br /&gt;
	return not self:inset(propt.normalize(property_str))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.PropertySetNode = path.PseudoPropertyNode:new()&lt;br /&gt;
function path.PropertySetNode:create(nodes)&lt;br /&gt;
	&lt;br /&gt;
	assert(nodes, &amp;quot;PseudoProp Node : no nodes provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;nodes&amp;quot;] = nodes&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	self.props = {}&lt;br /&gt;
	&lt;br /&gt;
	for _, val in pairs(nodes) do&lt;br /&gt;
		self.props[val.node.property] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.PropertySetNode:inset(pid)&lt;br /&gt;
	return self.props[pid] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.PropertySetNode:matches(property_str)&lt;br /&gt;
	return self:inset(propt.normalize(property_str))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
path.QualifierSnakNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
function path.QualifierSnakNode:create(pseudopnode)&lt;br /&gt;
	local newinst = {[&amp;quot;pseudopnode&amp;quot;] = pseudopnode}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.QualifierSnakNode:type()&lt;br /&gt;
	return &amp;quot;qualifiersnaknode&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.QualifierSnakNode:matches(property_str)&lt;br /&gt;
	return self.pseudopnode:matches(property_str)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return path&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Nombre2texte&amp;diff=342</id>
		<title>Module:Nombre2texte</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Nombre2texte&amp;diff=342"/>
		<updated>2024-09-20T14:21:46Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = { }  -- 	ordinal renvoie une chaine correspondant à l&amp;#039;abréviation de l&amp;#039;adjectif ordinal du nombre. 	Paramètres : 		1 = nombre (string ou number)  		2 = true pour avoir première au lieu de premier su nombre = 1 -- function p.ordinal( nombre, feminin ) 	local num = tonumber( nombre ) 	if num == nil then 		return mw.text.trim( tostring( nombre ) or &amp;#039;&amp;#039; ) 	else 		local nom = p.nombre2texte_reel( nombre, nil, &amp;#039;ordinal&amp;#039;, &amp;#039;réformée&amp;#039;, feminin and &amp;#039;fém... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = { }&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	ordinal renvoie une chaine correspondant à l&#039;abréviation de l&#039;adjectif ordinal du nombre.&lt;br /&gt;
	Paramètres :&lt;br /&gt;
		1 = nombre (string ou number) &lt;br /&gt;
		2 = true pour avoir première au lieu de premier su nombre = 1&lt;br /&gt;
--]]&lt;br /&gt;
function p.ordinal( nombre, feminin )&lt;br /&gt;
	local num = tonumber( nombre )&lt;br /&gt;
	if num == nil then&lt;br /&gt;
		return mw.text.trim( tostring( nombre ) or &#039;&#039; )&lt;br /&gt;
	else&lt;br /&gt;
		local nom = p.nombre2texte_reel( nombre, nil, &#039;ordinal&#039;, &#039;réformée&#039;, feminin and &#039;féminin&#039; )&lt;br /&gt;
		local exposant&lt;br /&gt;
		if num == 1 then&lt;br /&gt;
			exposant = (feminin and &#039;re&#039; or &#039;er&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			exposant = &#039;e&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return &#039;&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;&#039; .. nom .. &#039;&amp;quot;&amp;gt;&#039; .. num .. &#039;&amp;lt;sup&amp;gt;&#039; .. exposant .. &#039;&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction de traitement d&#039;une &amp;quot;tranche&amp;quot; de nombres entre 0 et 999.&lt;br /&gt;
  Retourne la forme texturelle (5 → cinq, 46 → quarante six, 432 → quatre cent trente deux…)&lt;br /&gt;
  Les paramètres sont les chiffres, du plus grand au plus petit (centaine, dizaine, unité).&lt;br /&gt;
  La valeur nil signifie &amp;quot;0&amp;quot; (pour n&#039;importe lequel des paramètres)&lt;br /&gt;
  La fonction retourne le texte ou &#039;nil&#039; si la valeur est zéro (pour gérer les 0 millier…)&lt;br /&gt;
  Le paramètre &#039;langue&#039; indique la variante de langue (fr, be, ch ou ch2).&lt;br /&gt;
  Data est la table des données (issue de loadData())&lt;br /&gt;
--]]&lt;br /&gt;
function p.traite_tranche(_c1, _c2, _c3, langue, Data)&lt;br /&gt;
    local c1, c2, c3&lt;br /&gt;
	if (_c1 == nil) then c1 = 0 else c1 = tonumber(_c1) or 0 end&lt;br /&gt;
	if (_c2 == nil) then c2 = 0 else c2 = tonumber(_c2) or 0 end&lt;br /&gt;
	if (_c3 == nil) then c3 = 0 else c3 = tonumber(_c3) or 0 end&lt;br /&gt;
&lt;br /&gt;
	if (c1 == 0 and c2 == 0 and c3 == 0) then&lt;br /&gt;
		return nil -- sil signifie &amp;quot;zéro&amp;quot; (mais à traiter spécialement quand entouré)&lt;br /&gt;
	end&lt;br /&gt;
	local resu = &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	-- on calcule la valeur restante (sans les centaines)&lt;br /&gt;
	local val = 10*c2 + c3&lt;br /&gt;
	-- présence d&#039;une centaine ?&lt;br /&gt;
	if (c1 ~= 0) then&lt;br /&gt;
		if (c1 == 1) then&lt;br /&gt;
			resu = &amp;quot;cent &amp;quot; -- séparateur&lt;br /&gt;
		else&lt;br /&gt;
			-- plusieurs centaines : on ajoute l&#039;unité&lt;br /&gt;
			resu = Data.infcent[c1] .. &amp;quot; cent&amp;quot;&lt;br /&gt;
			-- si pas d&#039;unité 100 prend un &#039;s&#039;&lt;br /&gt;
			if (val == 0) then&lt;br /&gt;
				resu = resu .. &amp;quot;s &amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				resu = resu .. &amp;quot; &amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- reste = 0 ?&lt;br /&gt;
	if (val == 0) then&lt;br /&gt;
		-- on retourne directement la centaine&lt;br /&gt;
		return resu&lt;br /&gt;
	end&lt;br /&gt;
	-- c&#039;est forcément un nombre pré-défini&lt;br /&gt;
	local vvv&lt;br /&gt;
	if (langue == &amp;quot;fr&amp;quot;) then&lt;br /&gt;
		vvv = Data.infcent[val]&lt;br /&gt;
	elseif (langue == &amp;quot;be&amp;quot;) then&lt;br /&gt;
		vvv = Data.infcent_be[val] or Data.infcent[val]&lt;br /&gt;
	elseif (langue == &amp;quot;ch&amp;quot;) then&lt;br /&gt;
		vvv = Data.infcent_ch[val] or Data.infcent_be[val] or Data.infcent[val]&lt;br /&gt;
	else&lt;br /&gt;
		vvv = Data.infcent_ch2[val] or Data.infcent_be[val] or Data.infcent[val]&lt;br /&gt;
	end&lt;br /&gt;
	return resu .. vvv .. &amp;quot; &amp;quot;&lt;br /&gt;
	-- note : cette fonction retourne *toujours* un &amp;quot; &amp;quot; à la fin du terme&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction principale&lt;br /&gt;
  Reçoit en paramètre (premier non nommé) le nombre à traiter.&lt;br /&gt;
  Retourne la forme textuelle de ce nombre.&lt;br /&gt;
--]]&lt;br /&gt;
function p.nombre2texte_reel(pnombre, plangue, ptype, porthographe, pgenre, pmajuscule, pordinal)&lt;br /&gt;
	-- le nombre à convertir (vient toujours du modèle)&lt;br /&gt;
	if (pnombre == nil) then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Il faut un paramètre non nommé numérique.&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local valeur = tonumber(pnombre)&lt;br /&gt;
	if (valeur == nil) then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre doit être un nombre.&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if (valeur ~= math.floor(valeur)) then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Le paramètre doit être un nombre entier.&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- limites&lt;br /&gt;
	if (valeur &amp;lt; -999999999999 or valeur &amp;gt; 999999999999) then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Nombre trop grand ou trop petit.&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on extrait le moins si présent&lt;br /&gt;
	local signe = false&lt;br /&gt;
	if (valeur &amp;lt; 0) then&lt;br /&gt;
		valeur = -valeur&lt;br /&gt;
		signe = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- option : choix de la langue&lt;br /&gt;
	local langue = plangue&lt;br /&gt;
	if (langue == nil) then&lt;br /&gt;
		langue = &amp;quot;fr&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		langue = mw.text.trim(langue)&lt;br /&gt;
	end&lt;br /&gt;
	-- validation des valeurs permises&lt;br /&gt;
	if (langue ~= &amp;quot;fr&amp;quot; and langue ~= &amp;quot;be&amp;quot; and langue ~= &amp;quot;ch&amp;quot; and langue ~= &amp;quot;ch2&amp;quot;) then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Paramètre langue non reconnu (fr, be, ch ou ch2).&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- type de résultat : seule valeur autorisée : &#039;ordinal&#039;&lt;br /&gt;
	local style = ptype&lt;br /&gt;
	if (style ~= nil and style ~= &amp;quot;ordinal&amp;quot;) then&lt;br /&gt;
		style = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- type d&#039;orthographe&lt;br /&gt;
	local ortho = porthographe&lt;br /&gt;
	if (ortho ~= nil and ortho ~= &amp;quot;réformée&amp;quot;) then&lt;br /&gt;
		ortho = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- genre : uniquement pour l&#039;ordinal &amp;quot;premier / première&amp;quot;&lt;br /&gt;
	local genre = pgenre&lt;br /&gt;
	if (genre ~= nil and genre ~= &amp;quot;féminin&amp;quot;) then&lt;br /&gt;
		genre = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- majuscule : mettre une majuscule au premier mot&lt;br /&gt;
	local maj = pmajuscule&lt;br /&gt;
	if (maj ~= nil and maj ~= &amp;quot;oui&amp;quot;) then&lt;br /&gt;
		maj = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- cas (très) simple : 0&lt;br /&gt;
	if (valeur == 0) then&lt;br /&gt;
		if (style == &amp;quot;ordinal&amp;quot;) then&lt;br /&gt;
			if (maj) then&lt;br /&gt;
				return &amp;quot;Zéroième&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return &amp;quot;zéroième&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if (maj) then&lt;br /&gt;
				return &amp;quot;Zéro&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return &amp;quot;zéro&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on charge les données&lt;br /&gt;
	local Data = mw.loadData( &#039;Module:Nombre2texte/Data&#039; )&lt;br /&gt;
&lt;br /&gt;
	-- on traite les autres cas simples : le nombre est pré-codé&lt;br /&gt;
	local val&lt;br /&gt;
	if (langue == &amp;quot;fr&amp;quot;) then&lt;br /&gt;
		val = Data.infcent[valeur]&lt;br /&gt;
	elseif (langue == &amp;quot;be&amp;quot;) then&lt;br /&gt;
		val = Data.infcent_be[valeur] or Data.infcent[valeur]&lt;br /&gt;
	elseif (langue == &amp;quot;ch&amp;quot;) then&lt;br /&gt;
		val = Data.infcent_ch[valeur] or Data.infcent_be[valeur] or Data.infcent[valeur]&lt;br /&gt;
	else&lt;br /&gt;
		val = Data.infcent_ch2[valeur] or Data.infcent_be[valeur] or Data.infcent[valeur]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local res = val or &amp;quot;&amp;quot;&lt;br /&gt;
	if (val == nil) then&lt;br /&gt;
		-- pas de résultat, on fait le &amp;quot;calcul&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		-- on l&#039;éclate en une table des différents caractères&lt;br /&gt;
		local tvaleur = mw.text.split(tostring(valeur), &amp;quot;&amp;quot;)&lt;br /&gt;
		local nb = #tvaleur -- nombre d&#039;éléments&lt;br /&gt;
&lt;br /&gt;
		-- on boucle sur les triplets de chiffres et on stocke le résultat dans une table&lt;br /&gt;
		local tbl = {}&lt;br /&gt;
		while (true) do&lt;br /&gt;
			-- on prend les 3 valeurs concernées&lt;br /&gt;
			local p1 = tvaleur[nb-2]&lt;br /&gt;
			local p2 = tvaleur[nb-1]&lt;br /&gt;
			local p3 = tvaleur[nb]&lt;br /&gt;
			-- si les 3 sont &#039;nil&#039; on a terminé&lt;br /&gt;
			if (p1 == nil and p2 == nil and p3 == nil) then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			-- on calcule la valeur du bloc concerné (rangé dans la table)&lt;br /&gt;
			local tmp = mw.text.trim(p.traite_tranche(p1, p2, p3, langue, Data) or &amp;quot;zéro&amp;quot;)&lt;br /&gt;
			table.insert(tbl, tmp)&lt;br /&gt;
			-- décalage&lt;br /&gt;
			nb = nb - 3&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- on construit le résultat final en combinant les éléments&lt;br /&gt;
		-- et en ajoutant les milliers/millions/...&lt;br /&gt;
		local pos = 1&lt;br /&gt;
		while (tbl[pos] ~= nil) do&lt;br /&gt;
			local el = &amp;quot;&amp;quot;&lt;br /&gt;
			-- on l&#039;ajoute, s&#039;il existe&lt;br /&gt;
			if (tbl[pos] ~= &amp;quot;zéro &amp;quot; and tbl[pos] ~= &amp;quot;zéro&amp;quot;) then&lt;br /&gt;
				if (pos == 1) then&lt;br /&gt;
					-- rang &amp;quot;1&amp;quot;, on ajoute simplement la valeur&lt;br /&gt;
					el = tbl[pos] .. &amp;quot; &amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					-- si la valeur est &amp;quot;un&amp;quot; on ajoute seulement le rang&lt;br /&gt;
					if (tbl[pos] == &amp;quot;un &amp;quot; or tbl[pos] == &amp;quot;un&amp;quot;) then&lt;br /&gt;
						el = Data.sup[pos] .. &amp;quot; &amp;quot;&lt;br /&gt;
					else&lt;br /&gt;
						-- on ajoute X + rang&lt;br /&gt;
						el = tbl[pos] .. &amp;quot; &amp;quot; .. Data.sup[pos]&lt;br /&gt;
						-- le pluriel, sauf pour 1000, et le séparateur&lt;br /&gt;
						if (pos ~= 2) then&lt;br /&gt;
							el = el .. &amp;quot;s &amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							el = el .. &amp;quot; &amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- on insert&lt;br /&gt;
			res = el .. res&lt;br /&gt;
&lt;br /&gt;
			-- on passe au suivant&lt;br /&gt;
			pos = pos + 1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- suppression espaces&lt;br /&gt;
		res = mw.text.trim(res)&lt;br /&gt;
&lt;br /&gt;
	end -- fin (si on n&#039;avait pas trouvé en pré-défini)&lt;br /&gt;
&lt;br /&gt;
	if (style ~= nil) then&lt;br /&gt;
		-- ordinal : on cherche la fin du nombre pour ajouter le &amp;quot;ième&amp;quot; qui convient&lt;br /&gt;
		if (res == &amp;quot;zéro&amp;quot;) then&lt;br /&gt;
			res = &amp;quot;zéroième&amp;quot; -- eurk!&lt;br /&gt;
		elseif (res == &amp;quot;un&amp;quot;) then&lt;br /&gt;
			if (genre == nil) then&lt;br /&gt;
				res = &amp;quot;premier&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				res = &amp;quot;première&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- on sépare du reste le dernier mot&lt;br /&gt;
			local debut, fin = mw.ustring.match(res, &amp;quot;(.-)(%a*)$&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			-- on génère la fin en ordinal&lt;br /&gt;
			local nfin = Data.iemes[fin]&lt;br /&gt;
			if (nfin == nil) then&lt;br /&gt;
				nfin = &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;erreur interne d\&#039;ordinal.&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			res = debut .. nfin&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si orthographe réformée on remplace les espaces par des tirets&lt;br /&gt;
	if (ortho == &amp;quot;réformée&amp;quot;) then&lt;br /&gt;
		res = mw.ustring.gsub(res, &amp;quot;[ ]&amp;quot;, &amp;quot;-&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		-- sinon on remplace les espaces par des insécables&lt;br /&gt;
		res = mw.ustring.gsub(res, &amp;quot;[ ]&amp;quot;, &amp;quot;&amp;amp;#160;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if (style == nil) then&lt;br /&gt;
		-- traitement de signe éventuel (sauf ordinaux)&lt;br /&gt;
		if (signe) then&lt;br /&gt;
			res = &amp;quot;moins&amp;amp;#160;&amp;quot; .. res&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si demandé on passe la première lettre en majuscule&lt;br /&gt;
	if (maj) then&lt;br /&gt;
		local langage = mw.getContentLanguage()&lt;br /&gt;
		res = langage:ucfirst(res)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on retourne&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction principale&lt;br /&gt;
  Reçoit en paramètre (premier non nommé) le nombre à traiter.&lt;br /&gt;
  Retourne la forme textuelle de ce nombre.&lt;br /&gt;
--]]&lt;br /&gt;
function p.nombre2texte(frame)&lt;br /&gt;
	local pframe = frame:getParent()&lt;br /&gt;
&lt;br /&gt;
	return p.nombre2texte_reel(&lt;br /&gt;
		 pframe.args[1] or frame.args[1], -- pas obligé. Pour permettre des exemples, avec priorité au modèle&lt;br /&gt;
		 frame.args[&amp;quot;langue&amp;quot;] or pframe.args[&amp;quot;langue&amp;quot;],&lt;br /&gt;
		 frame.args[&amp;quot;type&amp;quot;] or pframe.args[&amp;quot;type&amp;quot;],&lt;br /&gt;
		 frame.args[&amp;quot;orthographe&amp;quot;] or pframe.args[&amp;quot;orthographe&amp;quot;],&lt;br /&gt;
		 frame.args[&amp;quot;genre&amp;quot;] or pframe.args[&amp;quot;genre&amp;quot;],&lt;br /&gt;
		 frame.args[&amp;quot;majuscule&amp;quot;] or pframe.args[&amp;quot;majuscule&amp;quot;],&lt;br /&gt;
		 frame.args[&amp;quot;ordinal&amp;quot;] or pframe.args[&amp;quot;ordinal&amp;quot;]);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Date_complexe&amp;diff=341</id>
		<title>Module:Date complexe</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Date_complexe&amp;diff=341"/>
		<updated>2024-09-20T14:21:26Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- TODO: améliorer les synergies avec Module:Date (gestion par module:Date de dates sans lien et de &amp;quot;XIe siècle en astronautique&amp;quot;  local datemodule = require &amp;#039;Module:Date&amp;#039; local linguistic -- = require &amp;#039;Module:Linguistique&amp;#039; -- chargé uniquement si nécessaire local roman -- = require &amp;#039;Module:Romain&amp;#039; -- chargé uniquement si nécessaire local p = {}  local numericprecision = { -- convertir les précisions en valeurs numériques = à celles utilisées par Wikida... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- TODO: améliorer les synergies avec Module:Date (gestion par module:Date de dates sans lien et de &amp;quot;XIe siècle en astronautique&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local datemodule = require &#039;Module:Date&#039;&lt;br /&gt;
local linguistic -- = require &#039;Module:Linguistique&#039; -- chargé uniquement si nécessaire&lt;br /&gt;
local roman -- = require &#039;Module:Romain&#039; -- chargé uniquement si nécessaire&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local numericprecision = { -- convertir les précisions en valeurs numériques = à celles utilisées par Wikidata&lt;br /&gt;
	gigayear = 0,&lt;br /&gt;
	megayear = 3,&lt;br /&gt;
	millenium = 6,&lt;br /&gt;
	century = 7,&lt;br /&gt;
	decade = 8,&lt;br /&gt;
	year = 9,&lt;br /&gt;
	month = 10,&lt;br /&gt;
	day = 11,&lt;br /&gt;
	hour = 12,&lt;br /&gt;
	minute = 13,&lt;br /&gt;
	second = 14,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local avJC = &#039;&amp;lt;abbr class=&amp;quot;abbr nowrap&amp;quot; title=&amp;quot;avant Jésus-Christ&amp;quot;&amp;gt; av. J.-C.&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
local function vowelfirst(str)&lt;br /&gt;
	linguistic = linguistic or require &#039;Module:Linguistique&#039;&lt;br /&gt;
	return linguistic.vowelfirst(str)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dateObject(orig, params)&lt;br /&gt;
	--[[ transforme un snak en un nouvel objet utilisable par des fonctions comme p.setprecision&lt;br /&gt;
		{type = &#039;dateobject&#039;, timestamp = str, era = &#039;+&#039; ou &#039;-&#039;, year = number, month = number, day = number, calendar = calendar}&lt;br /&gt;
	]]--&lt;br /&gt;
	if not params then&lt;br /&gt;
		params = {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local newobj = p.splitDate(orig.time, orig.calendarmodel)&lt;br /&gt;
&lt;br /&gt;
	newobj.precision = params.precision or orig.precision&lt;br /&gt;
	newobj.type = &#039;dateobject&#039;&lt;br /&gt;
	return newobj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rangeObject(begin, ending, params)&lt;br /&gt;
	--[[&lt;br /&gt;
		objet comportant un timestamp pour le classement chronologique et deux dateobject (begin et ending)&lt;br /&gt;
	]]--&lt;br /&gt;
	local timestamp&lt;br /&gt;
	if begin then&lt;br /&gt;
		timestamp = begin.timestamp&lt;br /&gt;
	else&lt;br /&gt;
		timestamp = ending.timestamp&lt;br /&gt;
	end&lt;br /&gt;
	return {begin = begin, ending = ending, timestamp = timestamp, type = &#039;rangeobject&#039;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.objectToText(obj, params)&lt;br /&gt;
	if obj.type == &#039;dateobject&#039; then&lt;br /&gt;
		return p.simplestring(obj, params)&lt;br /&gt;
	elseif obj.type == &#039;rangeobject&#039; then&lt;br /&gt;
		return p.daterange(obj.begin, obj.ending, params)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function setprecision(obj, maxprecision)&lt;br /&gt;
	local precision&lt;br /&gt;
	if type(obj) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		precision = tonumber(obj)&lt;br /&gt;
	elseif type(obj) == &amp;quot;number&amp;quot; then&lt;br /&gt;
		precision = obj&lt;br /&gt;
	elseif type(obj) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		precision = tonumber(obj.precision) or numericprecision[obj.precision]&lt;br /&gt;
	end&lt;br /&gt;
	if not precision then&lt;br /&gt;
		precision = 0&lt;br /&gt;
	end&lt;br /&gt;
	-- maxprecision, surtout pour données Wikidata quand on veut afficher avec moins de précision que l&#039;input (par exemple afficher seulement l&#039;année)&lt;br /&gt;
	if maxprecision then&lt;br /&gt;
		maxprecision = tonumber(maxprecision) or numericprecision[maxprecision]&lt;br /&gt;
	end&lt;br /&gt;
	if maxprecision then&lt;br /&gt;
		return math.min(precision, maxprecision)&lt;br /&gt;
	end&lt;br /&gt;
	return precision&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bigDate(year, precision) -- TODO : gestion de la précision&lt;br /&gt;
	local val, unit = 0, &amp;quot;&amp;quot;&lt;br /&gt;
	if year &amp;gt; 999999999 then&lt;br /&gt;
		unit = &amp;quot; [[giga|G]][[Année julienne|a]]&amp;quot;&lt;br /&gt;
		val = year / 1000000000&lt;br /&gt;
	elseif year &amp;gt; 999999 then&lt;br /&gt;
		unit = &amp;quot; [[méga|M]][[Année julienne|a]]&amp;quot;&lt;br /&gt;
		val = year / 1000000&lt;br /&gt;
	end&lt;br /&gt;
	val = mw.getContentLanguage():formatNum(val)&lt;br /&gt;
	return val .. unit&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function milleniumString(millenium, era, hideera)&lt;br /&gt;
	roman = roman or require &#039;Module:Romain&#039;&lt;br /&gt;
	local str = roman.toRoman(millenium) .. &#039;&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; millénaire&#039;&lt;br /&gt;
	if era == &#039;-&#039; and (not hideera) then&lt;br /&gt;
		str = str .. avJC&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function centuryString(century, era, hideera)&lt;br /&gt;
	roman = roman or require &#039;Module:Romain&#039;&lt;br /&gt;
	local str = roman.toRoman(century) .. &#039;&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; siècle&#039;&lt;br /&gt;
	if era == &#039;-&#039; and (not hideera) then&lt;br /&gt;
		str = str .. avJC&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function decadeString(decade, era, hideera)&lt;br /&gt;
	local str = &#039;années &#039; .. decade .. &#039;0&#039;&lt;br /&gt;
	if era == &#039;-&#039; and (not hideera) then&lt;br /&gt;
		str = str .. &#039; av. J.-C.|&#039; .. str .. avJC&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;[[&#039; .. str .. &#039;]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.simplestring(dateobject, displayformat)&lt;br /&gt;
&lt;br /&gt;
	-- transforme un object date ponctuel en texte&lt;br /&gt;
	-- les dates de type ISO devraient passer par Module:Date, mais il faut pouvoir désactiver les liens&lt;br /&gt;
	if type(dateobject) == &#039;string&#039; or type(dateobject) == &#039;nil&#039; then&lt;br /&gt;
		return dateobject&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si le date object comporte déjà le texte souhaité on le retourne&lt;br /&gt;
	if dateobject.string then&lt;br /&gt;
		return dateobject.string&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not dateobject.year) and (not dateobject.month) and dateobject.day then -- si seul le jour est passé, par exemple à cause de removeclutter, le format n&#039;est pas pris en charge par module:Date&lt;br /&gt;
		if displayformat.precision and numericprecision[displayformat.precision] &amp;lt; 11 then&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return tostring(dateobject.day)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local era = dateobject.era&lt;br /&gt;
&lt;br /&gt;
	if not displayformat then&lt;br /&gt;
		displayformat = {}&lt;br /&gt;
	end&lt;br /&gt;
	local linktopic = displayformat.linktopic&lt;br /&gt;
	local nolinks&lt;br /&gt;
	if linktopic == &#039;-&#039; then&lt;br /&gt;
		nolinks = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local str&lt;br /&gt;
	local precision = setprecision(dateobject, displayformat.precision)&lt;br /&gt;
&lt;br /&gt;
	-- formats gérés par ce module&lt;br /&gt;
	local year = tonumber(dateobject.year) or 0&lt;br /&gt;
&lt;br /&gt;
	if year &amp;gt; 999999 then -- grosses dates pour l&#039;astronomie, la paléontologie&lt;br /&gt;
		return bigDate(year, precision)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hideera = displayformat.hideera&lt;br /&gt;
&lt;br /&gt;
	if precision == 6 then&lt;br /&gt;
		local millenium = math.floor((year - 1)/1000) + 1&lt;br /&gt;
		str = milleniumString(millenium, era, hideera)&lt;br /&gt;
	elseif precision == 7 then&lt;br /&gt;
		local century = math.floor((year - 1)/100) + 1&lt;br /&gt;
		str = centuryString(century, era, hideera)&lt;br /&gt;
	elseif precision == 8 then&lt;br /&gt;
		local decade = tostring(math.floor(year/10))&lt;br /&gt;
		str = decadeString(decade, era, hideera)&lt;br /&gt;
	end&lt;br /&gt;
	if str then&lt;br /&gt;
		return str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- formats gérés par Module:Date&lt;br /&gt;
	local year = dateobject.year&lt;br /&gt;
	if year and (era == &#039;-&#039;) then&lt;br /&gt;
		year = 0 - year&lt;br /&gt;
	end&lt;br /&gt;
	local month, day&lt;br /&gt;
&lt;br /&gt;
	if precision &amp;gt; 9 then&lt;br /&gt;
		month = dateobject.month&lt;br /&gt;
		if precision &amp;gt; 10 then&lt;br /&gt;
			day = dateobject.day&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local avJC -- équivalent de hideera pour modeleDate&lt;br /&gt;
	if displayformat.hideera then&lt;br /&gt;
		avJC = &#039;non&#039;&lt;br /&gt;
	end&lt;br /&gt;
	str = datemodule.modeleDate{jour = day, mois = month, annee = year, qualificatif = linktopic, nolinks = nolinks, avJC = avJC, liens = true}&lt;br /&gt;
	return str or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromToNow(datestr, precision) -- retourne &amp;quot;depuis&amp;quot; plutôt que &amp;quot;à partir de&amp;quot; quand ce n&#039;est pas terminé&lt;br /&gt;
	if (precision &amp;gt;= 11) or (precision == 7) or (precision == 6) then -- on dit &amp;quot;depuis le&amp;quot; pour les dates avec jour, les siècles, les millénaires&lt;br /&gt;
		if vowelfirst(datestr) then -- suppose l&#039;absence de lien interne&lt;br /&gt;
			return &amp;quot;depuis l&#039;&amp;quot; .. datestr&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;depuis le &amp;quot; .. datestr&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (precision == 8) then -- on dit &amp;quot;depuis les&amp;quot; pour les décennies (&amp;quot;années ...&amp;quot;)&lt;br /&gt;
		return &amp;quot;depuis les &amp;quot; .. datestr&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;depuis &amp;quot; .. datestr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromdate(d, displayformat) -- retourne &amp;quot;à partir de date&amp;quot; en langage naturel&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local precision = setprecision(d, displayformat.precision)&lt;br /&gt;
	local datestr = p.simplestring(d, displayformat)&lt;br /&gt;
	if displayformat and displayformat.textformat == &#039;minimum&#039; then&lt;br /&gt;
		return datestr -- par exemple pour les classements MH, juste afficher la date de début&lt;br /&gt;
	end&lt;br /&gt;
	if displayformat and displayformat.textformat == &#039;short&#039; then&lt;br /&gt;
		return datestr .. &#039;&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;&#039; -- pour certaines infobox (footballeur par exemple), afficher date de début et un tiret&lt;br /&gt;
	end&lt;br /&gt;
	if p.before(os.date(&amp;quot;!%Y-%m-%dT%TZ&amp;quot;), d) and (displayformat.stilltrue ~= &amp;quot;?&amp;quot;) and (displayformat.stilltrue ~= false) then&lt;br /&gt;
		return fromToNow(datestr, precision)&lt;br /&gt;
	end&lt;br /&gt;
	if (precision &amp;gt;= 11) or (precision == 7) or (precision == 6) then -- on dit &amp;quot;à partir du&amp;quot; pour les dates avec jour, les siècles, les millénaires&lt;br /&gt;
		return &#039;à partir du &#039; .. datestr&lt;br /&gt;
	end&lt;br /&gt;
	if (precision == 10) and (vowelfirst(datemodule.determinationMois(d.month))) then&lt;br /&gt;
		return &amp;quot;à partir d&#039;&amp;quot; .. datestr&lt;br /&gt;
	end&lt;br /&gt;
	if (precision == 8) then -- on dit &amp;quot;à partir des&amp;quot; pour les décennies&lt;br /&gt;
		return &#039;à partir des &#039; .. datestr&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;à partir de &#039; .. datestr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function upto(d, displayformat) -- retourne &amp;quot;jusqu&#039;à date&#039; en langage naturel&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local datestring = p.simplestring(d, displayformat)&lt;br /&gt;
	local precision = setprecision(d, displayformat.precision)&lt;br /&gt;
	if displayformat and displayformat.textformat == &#039;infobox&#039; then&lt;br /&gt;
		return &#039;&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;&#039;.. datestring -- pour certaines infobox (footballeur par exemple), afficher date de début et un tiret&lt;br /&gt;
	end&lt;br /&gt;
	if displayformat and displayformat.textformat == &#039;short&#039; then&lt;br /&gt;
		return&#039;&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;&#039; .. datestring -- pour certaines infobox (footballeur par exemple), afficher date de début et un tiret&lt;br /&gt;
	end&lt;br /&gt;
	if (precision &amp;gt;= 11) or (precision == 7) or (precision == 6) then -- on dit &amp;quot;jusqu&#039;au&amp;quot; pour les dates avec jour, et pour les siècles&lt;br /&gt;
		return &amp;quot;jusqu&#039;au &amp;quot; .. datestring&lt;br /&gt;
	elseif (precision &amp;gt; 9) then&lt;br /&gt;
		return &amp;quot;jusqu&#039;à &amp;quot; .. datestring&lt;br /&gt;
	elseif (precision == 8) then&lt;br /&gt;
		return &amp;quot;jusqu&#039;aux &amp;quot; .. datestring&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;jusqu&#039;en &amp;quot; .. datestring&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromuntillong(startstr, endstr, era, startprecision, endprecision)&lt;br /&gt;
	-- on dit &amp;quot;du 3 au 14 janvier&amp;quot; mais &amp;quot;de septembre à octobre&amp;quot;&lt;br /&gt;
	local longstartstr&lt;br /&gt;
	if startprecision &amp;gt;= 11 then -- &amp;gt;= day&lt;br /&gt;
		longstartstr = &amp;quot;du &amp;quot; .. startstr&lt;br /&gt;
	elseif startprecision == 8 then -- == décennie (&amp;quot;années&amp;quot;)&lt;br /&gt;
		longstartstr = &amp;quot;des &amp;quot; .. startstr&lt;br /&gt;
	else&lt;br /&gt;
		if vowelfirst(startstr) then&lt;br /&gt;
			longstartstr = &amp;quot;d&#039;&amp;quot; .. startstr&lt;br /&gt;
		else&lt;br /&gt;
			longstartstr = &amp;quot;de &amp;quot; .. startstr&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local longendstr&lt;br /&gt;
	if endprecision &amp;gt;= 11 then -- &amp;gt;= day&lt;br /&gt;
		longendstr = &amp;quot; au &amp;quot; .. endstr .. era&lt;br /&gt;
	elseif endprecision == 8 then -- == décennie (&amp;quot;années&amp;quot;)&lt;br /&gt;
		longendstr = &amp;quot; aux &amp;quot; .. endstr .. era&lt;br /&gt;
	else&lt;br /&gt;
		longendstr = &amp;quot; à &amp;quot; .. endstr .. era&lt;br /&gt;
	end&lt;br /&gt;
	return longstartstr .. longendstr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function removeclutter(startpoint, endpoint, precision, displayformat) -- prépare à rendre la date plus jolie : &amp;quot;juin 445 av-JC-juillet 445 av-JC -&amp;gt; juin-juillet 445-av-JC&amp;quot;&lt;br /&gt;
	if (type(startpoint) ~= &#039;table&#039;) or (type(endpoint) ~= &#039;table&#039;) then&lt;br /&gt;
		return startpoint, endpoint, precision, displayformat&lt;br /&gt;
	end&lt;br /&gt;
	local era = endpoint.era&lt;br /&gt;
	local sameera = false&lt;br /&gt;
	if startpoint.era == endpoint.era then&lt;br /&gt;
		sameera = true&lt;br /&gt;
	end&lt;br /&gt;
	if sameera and (endpoint.year == startpoint.year) then&lt;br /&gt;
		startpoint.year = nil&lt;br /&gt;
		if (startpoint.month == endpoint.month) then&lt;br /&gt;
			startpoint.month = nil&lt;br /&gt;
			if (startpoint.day == endpoint.day) then&lt;br /&gt;
				startpoint.day = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return startpoint, endpoint, era, displayformat, sameera&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.between(startpoint, endpoint, displayformat)&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local precision = setprecision(endpoint, displayformat.precision) or 9&lt;br /&gt;
&lt;br /&gt;
	local startpoint = p.simplestring(startpoint, displayformat)&lt;br /&gt;
	local endpoint = p.simplestring(endpoint, displayformat)&lt;br /&gt;
&lt;br /&gt;
	if not (startpoint or endpoint) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not endpoint then&lt;br /&gt;
		if precision &amp;lt;= 10 then&lt;br /&gt;
			return &amp;quot;après &amp;quot; .. startpoint&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;après le &amp;quot; .. startpoint&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not startpoint then&lt;br /&gt;
		if precision &amp;lt;= 10 then&lt;br /&gt;
			return &amp;quot;avant &amp;quot; .. endpoint&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;avant le &amp;quot; .. endpoint&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
 	-- analyse les paramètres pour éviter les redondances&lt;br /&gt;
&lt;br /&gt;
	local startpoint, endpoint, era, displayformat, sameera = removeclutter(startpoint, endpoint, precision, displayformat)&lt;br /&gt;
&lt;br /&gt;
	local startstr, endstr = p.simplestring(startpoint, displayformat), p.simplestring(endpoint, displayformat)&lt;br /&gt;
	displayformat.hideera = true&lt;br /&gt;
&lt;br /&gt;
	if (startstr == &#039;&#039;) or (startstr == endstr) then&lt;br /&gt;
		if (not sameera) then&lt;br /&gt;
			displayformat.hideera = false -- sinon c&#039;est incompréhensible&lt;br /&gt;
			return p.simplestring(endpoint, displayformat)&lt;br /&gt;
		end&lt;br /&gt;
		return endstr&lt;br /&gt;
	end&lt;br /&gt;
	-- pour éviter les tournures répétitives comme &amp;quot;du 13 septembre 2006 au 18 septembre 2006&amp;quot;&lt;br /&gt;
	if era == &amp;quot;-&amp;quot; then&lt;br /&gt;
		era = avJC&lt;br /&gt;
	else&lt;br /&gt;
		era = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if precision &amp;lt;= 10 then&lt;br /&gt;
		return &amp;quot;entre &amp;quot; .. startstr .. &amp;quot; et &amp;quot; .. endstr .. era&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;entre le &amp;quot; .. startstr .. &amp;quot; et le &amp;quot; .. endstr .. era&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromuntil(startpoint, endpoint, displayformat)&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local startprecision = setprecision(startpoint, displayformat.precision)&lt;br /&gt;
	local endprecision = setprecision(endpoint, displayformat.precision)&lt;br /&gt;
&lt;br /&gt;
 	-- analyse les paramètres pour éviter les redondances&lt;br /&gt;
&lt;br /&gt;
	local startpoint, endpoint, era, displayformat, sameera = removeclutter(startpoint, endpoint, endprecision, displayformat)&lt;br /&gt;
&lt;br /&gt;
	local hideera= displayformat.hideera&lt;br /&gt;
	displayformat.hideera = true -- pour les chaînes intermédiaires&lt;br /&gt;
&lt;br /&gt;
	local startstr, endstr = p.simplestring(startpoint, displayformat), p.simplestring(endpoint, displayformat)&lt;br /&gt;
&lt;br /&gt;
	if (startstr == &#039;&#039;) or (startstr == endstr) then&lt;br /&gt;
		displayformat.hideera = hideera -- on va faire une chaîne simple, on reprend donc le format initialement demandé&lt;br /&gt;
		if (not sameera) then&lt;br /&gt;
			displayformat.hideera = false -- sinon c&#039;est incompréhensible&lt;br /&gt;
		end&lt;br /&gt;
		return p.simplestring(endpoint, displayformat)&lt;br /&gt;
	end&lt;br /&gt;
	-- pour éviter les tournures répétitives comme &amp;quot;du 13 septembre 2006 au 18 septembre 2006&amp;quot;&lt;br /&gt;
	local hasStartera = false&lt;br /&gt;
	if era == &#039;-&#039; then&lt;br /&gt;
		era = avJC&lt;br /&gt;
	else&lt;br /&gt;
		era = &#039;&#039;&lt;br /&gt;
		if not (sameera == nil) and not sameera then&lt;br /&gt;
			startstr = startstr .. avJC&lt;br /&gt;
			hasStartera = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if displayformat.textformat == &#039;long&#039; then&lt;br /&gt;
		return fromuntillong(startstr, endstr, era, startprecision, endprecision)&lt;br /&gt;
	elseif (type(startprecision) == &amp;quot;number&amp;quot;) and (startprecision &amp;gt; 9) or (type(endprecision) == &amp;quot;number&amp;quot;) and (endprecision &amp;gt; 9) or hasStartera then -- si les date contiennent des mois ou jours, ou si il y a un era avant, il vaut mieux un espace&lt;br /&gt;
		return startstr .. &#039; -&amp;lt;wbr&amp;gt; &#039; .. endstr .. era&lt;br /&gt;
	else&lt;br /&gt;
		return startstr .. &#039;-&amp;lt;wbr&amp;gt;&#039; .. endstr .. era&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.daterange(startpoint, endpoint, displayformat)&lt;br /&gt;
	local result&lt;br /&gt;
	if startpoint and endpoint then&lt;br /&gt;
		result = fromuntil(startpoint, endpoint, displayformat)&lt;br /&gt;
	elseif startpoint then&lt;br /&gt;
		result = fromdate(startpoint, displayformat)&lt;br /&gt;
	elseif endpoint then&lt;br /&gt;
		result = upto(endpoint, displayformat)&lt;br /&gt;
	else&lt;br /&gt;
		result = nil&lt;br /&gt;
	end&lt;br /&gt;
	if result and displayformat and displayformat.ucfirst and displayformat.ucfirst ~= &#039;-&#039; then&lt;br /&gt;
		linguistic = linguistic or require &#039;Module:Linguistique&#039;&lt;br /&gt;
		result = linguistic.ucfirst(result)&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.duration(start, ending)&lt;br /&gt;
	if (not start) or (not ending) then&lt;br /&gt;
		return nil -- ?&lt;br /&gt;
	end&lt;br /&gt;
	return datemodule.age(start.year, start.month, start.day, ending.year, ending.month, ending.day)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitWDdate(str) -- depuis datavalue.value.time de Wikidata, fonctionnerait aussi en utilisant simplement splitISO&lt;br /&gt;
	local pattern = &amp;quot;(%W)(%d+)%-(%d+)%-(%d+)&amp;quot;&lt;br /&gt;
	local era, year, month, day = str:match(pattern)&lt;br /&gt;
	return era, year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitISO(str)&lt;br /&gt;
	str = mw.text.trim(str)&lt;br /&gt;
	local era, year, month, day&lt;br /&gt;
	era = string.sub(str, 1, 1)&lt;br /&gt;
	if tonumber(era) then&lt;br /&gt;
		era = &#039;+&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local f = string.gmatch(str, &#039;%d+&#039;)&lt;br /&gt;
	year, month, day = f(), f(), f()&lt;br /&gt;
	return era, year, month, day&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
function p.splitDate(orig, calendar)&lt;br /&gt;
	if not orig then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if type(orig) == &#039;table&#039; then&lt;br /&gt;
		return orig&lt;br /&gt;
	end&lt;br /&gt;
	if type(orig) ~= &#039;string&#039; then&lt;br /&gt;
		return error(&amp;quot;bad datatype for date, string expected, got &amp;quot; .. type(orig))&lt;br /&gt;
	end&lt;br /&gt;
	local era, y, m, d = splitWDdate(orig)&lt;br /&gt;
	if not era then&lt;br /&gt;
		era, y, m, d = splitISO(orig)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	y, m, d = tonumber(y or 1), tonumber(m or 1), tonumber(d or 1)&lt;br /&gt;
	return {day = d, month = m, year = y, era = era, type = &#039;dateobject&#039;, calendar = calendar}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.before(a, b) -- return true if b is before a or if at least one of a or b is missing&lt;br /&gt;
	a = p.splitDate(a)&lt;br /&gt;
	b = p.splitDate(b)&lt;br /&gt;
	if (not a) or (not b) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	local order = {&#039;year&#039;, &#039;month&#039;, &#039;day&#039;}&lt;br /&gt;
	if a[&#039;era&#039;] == &#039;+&#039; then&lt;br /&gt;
		if b[&#039;era&#039;] == &#039;+&#039; then&lt;br /&gt;
			for i, j in ipairs(order) do&lt;br /&gt;
				if b[j] &amp;lt; a[j] then&lt;br /&gt;
					return true&lt;br /&gt;
				elseif b[j] &amp;gt; a[j] then&lt;br /&gt;
					return false&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else -- b -&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	else -- a -&lt;br /&gt;
		if b[&#039;era&#039;] == &#039;+&#039; then&lt;br /&gt;
			return false&lt;br /&gt;
		else -- b -&lt;br /&gt;
			for i, j in ipairs(order) do&lt;br /&gt;
				if b[j] &amp;gt; a[j] then&lt;br /&gt;
					return true&lt;br /&gt;
				elseif b[j] &amp;lt; a[j] then&lt;br /&gt;
					return false&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.equal(a, b, precision)&lt;br /&gt;
	a = p.splitDate(a)&lt;br /&gt;
	b = p.splitDate(b)&lt;br /&gt;
&lt;br /&gt;
	if type(precision) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		precision = tonumber(precision) or numericprecision[mw.text.trim(precision)]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not precision then&lt;br /&gt;
		precision = 11 -- day by default ?&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not a) or (not b) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if a.era and b.era and (b.era ~= a.era) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (precision &amp;gt;= 11) then&lt;br /&gt;
		if a.day and b.day and (b.day ~= a.day) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (precision &amp;gt;= 10) then&lt;br /&gt;
		if a.month and b.month and (b.month ~= a.month) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (precision &amp;gt;= 9) then&lt;br /&gt;
		if a.year and b.year and (b.year ~= a.year) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin&amp;diff=340</id>
		<title>Module:Wikidata/Chemin</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin&amp;diff=340"/>
		<updated>2024-09-20T14:20:22Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local datastructure = require &amp;quot;Module:Wikidata/Chemin/Path&amp;quot; local parser = require &amp;quot;Module:Wikidata/Chemin/parser&amp;quot; local results = require &amp;quot;Module:Wikidata/Chemin/Resultat&amp;quot;  local iter = require &amp;quot;Module:Iterateurs&amp;quot; local props = require &amp;quot;Module:Propriétés&amp;quot;  local path = {}  -------------- -- TODO :  --        * Update the &amp;quot;between&amp;quot; path to handle it better epsilon paths --        * Test full path rendering --        *  --------------  -- Definition of a Propert... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local datastructure = require &amp;quot;Module:Wikidata/Chemin/Path&amp;quot;&lt;br /&gt;
local parser = require &amp;quot;Module:Wikidata/Chemin/parser&amp;quot;&lt;br /&gt;
local results = require &amp;quot;Module:Wikidata/Chemin/Resultat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local iter = require &amp;quot;Module:Iterateurs&amp;quot;&lt;br /&gt;
local props = require &amp;quot;Module:Propriétés&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local path = {}&lt;br /&gt;
&lt;br /&gt;
--------------&lt;br /&gt;
-- TODO : &lt;br /&gt;
--        * Update the &amp;quot;between&amp;quot; path to handle it better epsilon paths&lt;br /&gt;
--        * Test full path rendering&lt;br /&gt;
--        * &lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
-- Definition of a PropertyPath class&lt;br /&gt;
&lt;br /&gt;
local PropertyPath = {}&lt;br /&gt;
PropertyPath.__index = PropertyPath&lt;br /&gt;
&lt;br /&gt;
--[[ Datastructure for the paths that will match a path pattern&lt;br /&gt;
A path matching the pattern &amp;quot;subclass of*&amp;quot; will be a chain of statements and snaks nodes.  &lt;br /&gt;
If we got statements of the form (no qualifiers here, just subject with the main statement snak) :&lt;br /&gt;
* &amp;lt;human&amp;gt; &amp;lt;subclass of&amp;gt; &amp;lt;ape&amp;gt;&lt;br /&gt;
* &amp;lt;ape&amp;gt; &amp;lt;subclass of&amp;gt; &amp;lt;mammal&amp;gt;&lt;br /&gt;
* &amp;lt;mammal&amp;gt; &amp;lt;subclass of&amp;gt; &amp;lt;animal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a matching path like &amp;quot;&amp;lt;human&amp;gt; -&amp;gt; &amp;lt;ape&amp;gt; -&amp;gt; &amp;lt;mammal&amp;gt; -&amp;gt; &amp;lt;animal&amp;gt;&amp;quot; will be reprensented by a linked list of &amp;quot;ResultNode&amp;quot; objects. &lt;br /&gt;
A result node object is a mw.wikibase &amp;quot;statement&amp;quot; standard object augmented with a few methods and a link that goes from the statement or snak to the previous node in the path.&lt;br /&gt;
{ &lt;br /&gt;
   &amp;lt;mammal&amp;gt; &amp;lt;subclass of&amp;gt; &amp;lt;animal&amp;gt;&lt;br /&gt;
   &amp;quot;parent&amp;quot; = {&lt;br /&gt;
      &amp;lt;ape&amp;gt; &amp;lt;subclass of&amp;gt; &amp;lt;mammal&amp;gt;&lt;br /&gt;
      &amp;quot;parent&amp;quot; = {&lt;br /&gt;
         &amp;lt;human&amp;gt; &amp;lt;subclass of&amp;gt; &amp;lt;ape&amp;gt;&lt;br /&gt;
         &amp;quot;parent&amp;quot; = EpsilonRNode(&amp;lt;human&amp;gt;, &amp;quot;parent&amp;quot; = nil)&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local ResultNode = results.ResultNode&lt;br /&gt;
local StatementRNode = results.StatementRNode&lt;br /&gt;
local QualifierRNode = results.QualifierRNode&lt;br /&gt;
local EpsilonRNode = results.EpsilonRNode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function iterate_on_snaks(&lt;br /&gt;
	start_rnode, &lt;br /&gt;
	property_filter_criteria, &lt;br /&gt;
	snak_map_iterator,&lt;br /&gt;
	rnode_type)&lt;br /&gt;
    assert(snak_map_iterator)&lt;br /&gt;
	return iter.pair_map(&lt;br /&gt;
    	iter.flatten(&lt;br /&gt;
    		iter.select_vals(&lt;br /&gt;
    			iter.pair_filter(&lt;br /&gt;
    				snak_map_iterator, &lt;br /&gt;
    				property_filter_criteria&lt;br /&gt;
    			)&lt;br /&gt;
    		),&lt;br /&gt;
    		iter.on_vals&lt;br /&gt;
    	),&lt;br /&gt;
    	function(value) return rnode_type:create(value, start_rnode) end&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- creates an iterator that will iterate over all the statements&lt;br /&gt;
-- of a specific property of an item&lt;br /&gt;
&lt;br /&gt;
local function iterate_on_statement(start_rnode, property_filter_criteria)&lt;br /&gt;
	local item = mw.wikibase.getEntity(start_rnode:item_value())&lt;br /&gt;
	return iterate_on_snaks(&lt;br /&gt;
		start_rnode, &lt;br /&gt;
		property_filter_criteria,&lt;br /&gt;
		iter.on_pairs(item.claims),&lt;br /&gt;
		StatementRNode&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function iterate_on_statement_qualifier(statement, qualifier_filter_criteria)&lt;br /&gt;
	if statement.qualifiers then&lt;br /&gt;
		return iterate_on_snaks(&lt;br /&gt;
			statement, &lt;br /&gt;
			 qualifier_filter_criteria,&lt;br /&gt;
			iter.on_pairs(statement.qualifiers),&lt;br /&gt;
			QualifierRNode&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- no qualifier table when the statement has no qualifiers&lt;br /&gt;
		return function() return nil end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local iterate_on_statement_from_property = function(start_rnode, pid)&lt;br /&gt;
    local claims = mw.wikibase.getBestStatements(&lt;br /&gt;
    	start_rnode:item_value(),&lt;br /&gt;
      	props.normalize(pid)&lt;br /&gt;
    ) or {}&lt;br /&gt;
	&lt;br /&gt;
    return iter.pair_map(&lt;br /&gt;
    	iter.pair_filter(iter.on_pairs(claims), function(key, val) return true end),&lt;br /&gt;
    	function(key, value) return StatementRNode:create(value, start_rnode) end&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function iterate_on_star(start_rnode, child_pnode, depth, iterated, max)&lt;br /&gt;
	&lt;br /&gt;
	-- start_rnode : the result node from which we will iterate&lt;br /&gt;
	-- child_pnode : the path within the star operator (for example P31/P31 if our node is (P31/P31)*&lt;br /&gt;
	iterated = iterated or {} -- iterated is the store of already iterated starting points items to avoid infinite loops&lt;br /&gt;
	-- max : the max number of iteration depth to go, nil for no limit&lt;br /&gt;
	&lt;br /&gt;
	depth = depth or 1&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	In pseudo code using a « yield » operator, the algorithm would be&lt;br /&gt;
	&lt;br /&gt;
	algo star(startnode)&lt;br /&gt;
	   for each value v which match child_pnode from startnode&lt;br /&gt;
	      yield v&lt;br /&gt;
	      for each value vchild in star(v)&lt;br /&gt;
	         yield vchild&lt;br /&gt;
	      end for&lt;br /&gt;
	   end &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	But we can’t use a yield operator if the « coroutine » module on lua is not activated. &lt;br /&gt;
	So we must translate this into something more complicated.&lt;br /&gt;
	&lt;br /&gt;
	Luckily the approach to write iterators in term of composition seems to pay off and&lt;br /&gt;
	it seem possible to write code structurally similar to this algorithm thanks to the &lt;br /&gt;
	« flatten » iterator and a recursive closure that creates iterator to handle the&lt;br /&gt;
	recursivity implied by the « star » operator nature.&lt;br /&gt;
&lt;br /&gt;
	--]]&lt;br /&gt;
	&lt;br /&gt;
	function creator()&lt;br /&gt;
		return function(start_rnode)&lt;br /&gt;
			local depth_overflow = not (not max or depth &amp;lt; max)&lt;br /&gt;
			&lt;br /&gt;
			if not iterated[start_rnode:item_value()] and not depth_overflow then&lt;br /&gt;
				iterated[start_rnode:item_value()] = true&lt;br /&gt;
				return iterate_on_star(start_rnode, child_pnode, depth + 1, iterated, max)&lt;br /&gt;
			else&lt;br /&gt;
				return function() end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	return iter.chain(&lt;br /&gt;
		iter.singleton(start_rnode),&lt;br /&gt;
		iter.flatten(&lt;br /&gt;
			child_pnode:iterate(start_rnode), &lt;br /&gt;
			creator()&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local iterate_on_plus = function(start_rnode, child_pnode, max_depth)&lt;br /&gt;
	local first = true&lt;br /&gt;
	iterated = iterated or {}&lt;br /&gt;
	&lt;br /&gt;
	return iter.flatten(&lt;br /&gt;
		child_pnode:iterate(start_rnode),&lt;br /&gt;
		function(rnode)&lt;br /&gt;
			return iterate_on_star(rnode, child_pnode, 1, iterated, max_depth)&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Test :&lt;br /&gt;
p.test(&amp;quot;Q5&amp;quot;, &amp;quot;subclass of+&amp;quot;) -- at the time writing, &amp;quot;Q215627&amp;quot; is the only direct superclass of human. It does not show up, but there is numerous superclass in the result&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
--[[ an iteraton to handle &amp;quot;/&amp;quot; operator sequences, for example « P31/P279* »&lt;br /&gt;
 &amp;quot;creators&amp;quot; is a table of functions that needs to create iterators of child nodes.&lt;br /&gt;
 In our example, the first cretors element will be a function that takes an item object and&lt;br /&gt;
   will return an iterator over P31-statements of this item&lt;br /&gt;
 the second one will create an iterator over the path « P279* » and so on.&lt;br /&gt;
 The resulting iteratior will iterate on each elements of the second iterator starting from each iterator over the second one&lt;br /&gt;
 for each elements in the first one.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function iterate_on_iterator_creators(start_rnode, creators, i)&lt;br /&gt;
	i = i or 1&lt;br /&gt;
	if not(tonumber(i)) then i = 1 end&lt;br /&gt;
	-- main iterator : the iterator that will iterate on the values on this node of the path&lt;br /&gt;
	local main_iterator = creators[i]:iterate(start_rnode)&lt;br /&gt;
	&lt;br /&gt;
	if i &amp;lt; #creators then&lt;br /&gt;
		--trying to initialize the iterator for the next node with a value of the current one, if we can&lt;br /&gt;
		local rnode = main_iterator()&lt;br /&gt;
		&lt;br /&gt;
		while rnode and not(rnode:has_an_item()) do&lt;br /&gt;
			rnode = main_iterator()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- could not initialize the next iterator with a proper item ; returnun the empty iterator function&lt;br /&gt;
		if not rnode then return function() return end end&lt;br /&gt;
		&lt;br /&gt;
		-- we found a proper value to iterate on for the next node in the path&lt;br /&gt;
		&lt;br /&gt;
		-- final iterator : the iterator that will iterate &lt;br /&gt;
		-- on elems that will be returned by each iterations &lt;br /&gt;
		-- on the iterator created by the main client&lt;br /&gt;
		&lt;br /&gt;
		local final_iterator = iterate_on_iterator_creators(rnode, creators, i+1)&lt;br /&gt;
		return function()&lt;br /&gt;
			while final_iterator ~= nil do&lt;br /&gt;
				-- pulling the element from the next node iterator in the sequence&lt;br /&gt;
				local final_elem = final_iterator()&lt;br /&gt;
				if final_elem then&lt;br /&gt;
					return final_elem&lt;br /&gt;
				else&lt;br /&gt;
					-- we pulled the last elem for this value, getting a new value &lt;br /&gt;
					-- for this node path and regenerate the next node iterator to pull new final values&lt;br /&gt;
					&lt;br /&gt;
					local rnode_value = main_iterator()&lt;br /&gt;
					&lt;br /&gt;
					-- return the element pulled from the next node iterator&lt;br /&gt;
					-- if the property has item datatype is not a special value and has the right snaktype&lt;br /&gt;
					-- as we can&#039;t continue path on other kind of values&lt;br /&gt;
					&lt;br /&gt;
					if rnode_value then&lt;br /&gt;
						if rnode_value:has_an_item() then&lt;br /&gt;
							final_iterator = iterate_on_iterator_creators(rnode_value, creators, i+1)&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						--we&#039;re over, no next value for this node to continue the path&lt;br /&gt;
						return&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif i == #creators then&lt;br /&gt;
		return main_iterator&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ JSBach : Q1339 ;&lt;br /&gt;
Testing with :&lt;br /&gt;
test(&amp;quot;Q1339&amp;quot;, &amp;quot;child/child&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
wikidata query equivalent query : &lt;br /&gt;
select ?grandchild where {&lt;br /&gt;
  wd:Q1339 wdt:P40/wdt:P40 ?grandchild&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adam : wd:Q70899 &lt;br /&gt;
test(&amp;quot;Q70899&amp;quot;, &amp;quot;child/child/child&amp;quot;)&lt;br /&gt;
wikidata query equivalent query : &lt;br /&gt;
select ?grandgrandchild where {&lt;br /&gt;
  wd:Q70899 wdt:P40/wdt:P40/wdt:P40 ?grandgrandchild&lt;br /&gt;
}&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local iterate_on_alternatives = function(start_rnode, pnodes)&lt;br /&gt;
	local i=1&lt;br /&gt;
	local current_iter = pnodes[i]:iterate(start_rnode)&lt;br /&gt;
	&lt;br /&gt;
    return function ()&lt;br /&gt;
    	-- loop to go to next iterator if there is empty one in the list&lt;br /&gt;
        while true do&lt;br /&gt;
	        local res = current_iter()&lt;br /&gt;
	        -- res is an iterator itself ; getting its result&lt;br /&gt;
	        if res then&lt;br /&gt;
	        	return res&lt;br /&gt;
	        else&lt;br /&gt;
	        	i = i + 1&lt;br /&gt;
	        	if i &amp;lt;= #pnodes then &lt;br /&gt;
	        		-- following to next iterator and resume loop&lt;br /&gt;
	        		current_iter = pnodes[i]:iterate(start_rnode)&lt;br /&gt;
	        	else&lt;br /&gt;
	        		-- no current iterator : ending&lt;br /&gt;
	        		return nil&lt;br /&gt;
	        	end&lt;br /&gt;
	        end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Adam&#039;s father or mother : no value of course&lt;br /&gt;
p.test(&#039;Q70899&#039;, &amp;quot;P22|P25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
JS Bach&#039;s&lt;br /&gt;
p.test(&amp;quot;Q1339&amp;quot;, &amp;quot;P22|P25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local function iterate_on_nodes_beetween(start_rnode, pnode, min, max)&lt;br /&gt;
	local seq = {}&lt;br /&gt;
	local i  = 1&lt;br /&gt;
&lt;br /&gt;
	while i &amp;lt;= min do&lt;br /&gt;
		table.insert(seq, pnode)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local sequence_obj = {}&lt;br /&gt;
	function sequence_obj:iterate(next_rnode)&lt;br /&gt;
		return iterate_on_iterator_creators(next_rnode, seq, min)&lt;br /&gt;
	end&lt;br /&gt;
	if max then&lt;br /&gt;
		local star_obj = {}&lt;br /&gt;
		function star_obj:iterate(next_rnode)&lt;br /&gt;
			return iterate_on_star(next_rnode, pnode, 1, iterated, max-min)&lt;br /&gt;
		end&lt;br /&gt;
		return iterate_on_iterator_creators(&lt;br /&gt;
			start_rnode,&lt;br /&gt;
			{&lt;br /&gt;
				sequence_obj,&lt;br /&gt;
				star_obj&lt;br /&gt;
			}&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		return sequence_obj:iterate()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function iterate_maybe(start_rnode, pnode)&lt;br /&gt;
	local iterator = pnode:iterate(start_rnode)&lt;br /&gt;
	local self_done = false&lt;br /&gt;
	return function()&lt;br /&gt;
		if not self_done then&lt;br /&gt;
			local val = iterator()&lt;br /&gt;
			if val then return val else&lt;br /&gt;
				self_done = true&lt;br /&gt;
				return start_rnode&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function PropertyPath:new(str)&lt;br /&gt;
    local obj = {[&amp;quot;path&amp;quot;]=str} &lt;br /&gt;
    setmetatable(obj, self)&lt;br /&gt;
    &lt;br /&gt;
    local ast = parser.parse_path(str)&lt;br /&gt;
    assert(ast, &amp;quot;parser did not return a node&amp;quot;)&lt;br /&gt;
    obj.node  = ast&lt;br /&gt;
    &lt;br /&gt;
    return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function entityId(entity)&lt;br /&gt;
	if type(entity) == &#039;string&#039; then&lt;br /&gt;
		return entity&lt;br /&gt;
	end&lt;br /&gt;
	return entity.id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function norm_start_point(start_point)&lt;br /&gt;
	if type(start_point) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return EpsilonRNode:create(start_point)&lt;br /&gt;
	elseif type(start_point) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		if start_point[&amp;quot;claims&amp;quot;] ~= nil then&lt;br /&gt;
			-- assume this is an item or entity object&lt;br /&gt;
			return EpsilonRNode:create(start_point.id)&lt;br /&gt;
		elseif start_point[&amp;quot;is_RNode&amp;quot;] then&lt;br /&gt;
			return start_point&lt;br /&gt;
		elseif start_point[&amp;quot;qualifiers&amp;quot;] or start_point[&amp;quot;mainsnak&amp;quot;] then&lt;br /&gt;
			local itemid = string.gmatch(start_point.id, &amp;quot;^.*[^$]&amp;quot;)() -- extract the item id from the starting statement&lt;br /&gt;
			return StatementRNode:create(start_point, EpsilonRNode:create(itemid))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	mw.logObject(start_point)&lt;br /&gt;
	error(&amp;quot;from function norm_start_point of module PropertyPath : wrong type for start_point&amp;quot;, tostring(start_point)) -- TODO : Log a better error&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function PropertyPath:iterate(start_point)&lt;br /&gt;
	start_point = norm_start_point(start_point)&lt;br /&gt;
	return self.node:iterate(start_point)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local PropertyNode = datastructure.PropertyNode&lt;br /&gt;
local AlternativeNode = datastructure.AlternativeNode&lt;br /&gt;
local SequenceNode = datastructure.SequenceNode&lt;br /&gt;
local QualifiedStatementNode = datastructure.QualifiedStatementNode&lt;br /&gt;
local NegatedPropertySetNode = datastructure.NegatedPropertySetNode&lt;br /&gt;
local PlusNode = datastructure.PlusNode&lt;br /&gt;
local StarNode = datastructure.StarNode&lt;br /&gt;
local BetweenNode = datastructure.BetweenNode&lt;br /&gt;
local MaybeNode = datastructure.MaybeNode&lt;br /&gt;
local QualifierSnakNode = datastructure.QualifierSnakNode&lt;br /&gt;
&lt;br /&gt;
function PropertyNode:iterate(rnode)&lt;br /&gt;
	return iterate_on_statement_from_property(rnode, self.property)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
test(&amp;quot;Q5&amp;quot;, &amp;quot;subclass of&amp;quot;)&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function AlternativeNode:iterate(rnode) &lt;br /&gt;
	return iterate_on_alternatives(rnode, self.nodes)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function NegatedPropertySetNode:iterate(rnode)&lt;br /&gt;
	return iterate_on_statement(rnode,&lt;br /&gt;
		function (property, val) return self:matches(property) end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
test(&amp;quot;Q90, &amp;quot;&amp;quot;!(P150)&amp;quot;)&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function SequenceNode:iterate(rnode) &lt;br /&gt;
	return iterate_on_iterator_creators(rnode, self.nodes)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function QualifiedStatementNode:iterate(rnode)&lt;br /&gt;
	local statement_iterator = iterate_on_statement(&lt;br /&gt;
		rnode,&lt;br /&gt;
		function (key, value)&lt;br /&gt;
			return self.property:matches(key)&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
	local qualifier_iterator_creator = function(statement) &lt;br /&gt;
		return iterate_on_statement_qualifier(&lt;br /&gt;
			statement, &lt;br /&gt;
			function (key, value) return self.qualifier:matches(key) end&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return iter.flatten(statement_iterator, qualifier_iterator_creator)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ to test with :&lt;br /&gt;
p.test(&amp;quot;Q79529&amp;quot;, &amp;quot;union of&amp;gt;of&amp;quot;)&lt;br /&gt;
p.test(&amp;quot;Q105019&amp;quot;,&#039;P22{1,6}&#039;&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function QualifierSnakNode:iterate(statementnode)&lt;br /&gt;
		return iterate_on_statement_qualifier(&lt;br /&gt;
			statementnode, &lt;br /&gt;
			function (key, value) return self:matches(key) end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ to test with :&lt;br /&gt;
for x in p.iterate(&amp;quot;Q79529&amp;quot;, &amp;quot;union of&amp;quot;) do p.test(x, &amp;quot;&amp;gt;of&amp;quot;) end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function StarNode:iterate(rnode)&lt;br /&gt;
	return iterate_on_star(rnode, self.node)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function PlusNode:iterate(rnode)&lt;br /&gt;
	return iterate_on_plus(rnode, self.node)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BetweenNode:iterate(rnode)&lt;br /&gt;
	return iterate_on_nodes_beetween(rnode, self.node, self.min, self.max)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MaybeNode:iterate(rnode)&lt;br /&gt;
	return iterate_maybe(rnode, self.node)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- returns an iterator on the result set of a path from a specific node&lt;br /&gt;
-- ppath acn either be a string representing a path or a compiled path&lt;br /&gt;
function path.iterate(start_node, ppath)&lt;br /&gt;
	if start_node == nil then error(&amp;quot;the start node is mandatory to get result on a path, it is nil&amp;quot;) end&lt;br /&gt;
		&lt;br /&gt;
	if type(ppath) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		return ppath:iterate(start_node)&lt;br /&gt;
	else&lt;br /&gt;
		return path.PropertyPath:new(ppath):iterate(start_node)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- function that return a boolean&lt;br /&gt;
-- true if there is a path matching ppath from start_node that ends with the value &amp;quot;value&amp;quot;&lt;br /&gt;
-- (currently only works if &amp;quot;value&amp;quot; is a Qid string)&lt;br /&gt;
function path.matches(start_node, ppath, value)&lt;br /&gt;
        for val in path.iterate(start_node, ppath) do&lt;br /&gt;
                if val:item_value() == value then&lt;br /&gt;
                       return true&lt;br /&gt;
                end&lt;br /&gt;
        end&lt;br /&gt;
        return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
p.test(&amp;quot;Q5&amp;quot;, &amp;quot;P279&amp;quot;)&lt;br /&gt;
p.test(mw.wikibase.getEntity(&amp;quot;Q5&amp;quot;),  &amp;quot;P279&amp;quot;)&lt;br /&gt;
for x in p.iterate(mw.wikibase.getEntity(&amp;quot;Q5&amp;quot;), &amp;quot;P279&amp;quot;) do p.test(x,  &amp;quot;P279&amp;quot;) end -- test if we can continue iteration of an RNode object&lt;br /&gt;
Complex test : &lt;br /&gt;
p.test(&amp;quot;Q27929033&amp;quot;,&amp;quot;P1552&amp;gt;!()/P31&amp;quot;) =&amp;gt; OK&lt;br /&gt;
p.test(&amp;quot;Q27929033&amp;quot;,&amp;quot;subclass of/P1552&amp;gt;!()/P31&amp;quot;) =&amp;gt; NOK&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
function path.test(start_point, ppath)&lt;br /&gt;
	for x in path.iterate(start_point, ppath) do &lt;br /&gt;
		mw.log(&amp;quot;woot&amp;quot;)&lt;br /&gt;
		if x then&lt;br /&gt;
			mw.log(x:item_value())&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-----------------&lt;br /&gt;
-- fonctions retournant une déclaration ou un snak qualificatif en fonction d’un chemin de propriété&lt;br /&gt;
-- utilisé pour les tris, retourner une clé de tri pour une déclaration choisie par un chemin ou un ensemble de chemins&lt;br /&gt;
&lt;br /&gt;
function path.snak_key_by_path(path)&lt;br /&gt;
	local path_to_key = path.PropertyPath:new(path)&lt;br /&gt;
	return function(claim)&lt;br /&gt;
		return (path_to_key:iterate(claim)())&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- takes several property paths and creates a function that returns &lt;br /&gt;
-- the first value with a match&lt;br /&gt;
&lt;br /&gt;
-- example : local get_key = wd.snak_key_by_paths{&amp;quot;&amp;gt;P80&amp;quot;,&amp;quot;P800|P801&amp;quot;}&lt;br /&gt;
--           get_key(claim)&lt;br /&gt;
-- returns the qualifier value of P80 of the claim if it exists, if not returns the main statement value&lt;br /&gt;
-- of P800 of the main value of the « claim » statement, if not the P801 one&lt;br /&gt;
-- (used in Module:Infobox/fonctions/personne)&lt;br /&gt;
&lt;br /&gt;
-- Note on the example : TODO : would be equivalent to a single path &amp;quot;&amp;gt;P80|P800|P801&amp;quot; but it’s not possible yet&lt;br /&gt;
&lt;br /&gt;
function path.snak_key_by_paths(paths)&lt;br /&gt;
	local paths_to_key = {} &lt;br /&gt;
	for k, pat in ipairs(paths) do&lt;br /&gt;
		paths_to_key[#paths_to_key + 1] = path.PropertyPath:new(pat)&lt;br /&gt;
	end&lt;br /&gt;
	return function(claim)&lt;br /&gt;
		-- returns the first value of the first matching path starting from « claim »&lt;br /&gt;
		for k, path_to_key in ipairs(paths_to_key) do&lt;br /&gt;
			local res = path_to_key:iterate(claim)()&lt;br /&gt;
			if res then return res end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
path.PropertyPath = PropertyPath&lt;br /&gt;
&lt;br /&gt;
return path&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Date/Data&amp;diff=339</id>
		<title>Module:Date/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Date/Data&amp;diff=339"/>
		<updated>2024-09-20T14:20:05Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- base de donnée répertoriant pour différentes thématique  -- les plages de chronologique existant ou qui ont très peu de chance d&amp;#039;exister. local data = { } data[&amp;quot;&amp;quot;] = {  	qualificatif = &amp;quot;&amp;quot;, 	cat = &amp;quot;générique&amp;quot;, 	jour = true, 	mois = { 		aucun = &amp;quot;1761&amp;quot;, 		tous = {&amp;quot;1773&amp;quot;, &amp;quot;2021&amp;quot;},  		seul = {  			&amp;quot;Mars 1058&amp;quot;,  			&amp;quot;Avril 1180&amp;quot;, &amp;quot;Juillet 1185&amp;quot;,  			&amp;quot;Juillet 1224&amp;quot;, &amp;quot;Août 1248&amp;quot;,  			&amp;quot;Mars 1315&amp;quot;, &amp;quot;Janvier 1384&amp;quot;,  			&amp;quot;Janvier 1430&amp;quot;,  			&amp;quot;Février 1514&amp;quot;, &amp;quot;Avril 1... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- base de donnée répertoriant pour différentes thématique &lt;br /&gt;
-- les plages de chronologique existant ou qui ont très peu de chance d&#039;exister.&lt;br /&gt;
local data = { }&lt;br /&gt;
data[&amp;quot;&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;générique&amp;quot;,&lt;br /&gt;
	jour = true,&lt;br /&gt;
	mois = {&lt;br /&gt;
		aucun = &amp;quot;1761&amp;quot;,&lt;br /&gt;
		tous = {&amp;quot;1773&amp;quot;, &amp;quot;2021&amp;quot;}, &lt;br /&gt;
		seul = { &lt;br /&gt;
			&amp;quot;Mars 1058&amp;quot;, &lt;br /&gt;
			&amp;quot;Avril 1180&amp;quot;, &amp;quot;Juillet 1185&amp;quot;, &lt;br /&gt;
			&amp;quot;Juillet 1224&amp;quot;, &amp;quot;Août 1248&amp;quot;, &lt;br /&gt;
			&amp;quot;Mars 1315&amp;quot;, &amp;quot;Janvier 1384&amp;quot;, &lt;br /&gt;
			&amp;quot;Janvier 1430&amp;quot;, &lt;br /&gt;
			&amp;quot;Février 1514&amp;quot;, &amp;quot;Avril 1521&amp;quot;, &amp;quot;Mai 1521&amp;quot;, &amp;quot;Juin 1521&amp;quot;, &amp;quot;Juillet 1558&amp;quot;, &amp;quot;Février 1567&amp;quot;, &amp;quot;Mai 1574&amp;quot;, &amp;quot;Août 1588&amp;quot;,&lt;br /&gt;
			&amp;quot;Octobre 1621&amp;quot;, &amp;quot;Juin 1636&amp;quot;, &amp;quot;Septembre 1649&amp;quot;, &amp;quot;Août 1656&amp;quot;, &amp;quot;Mai 1668&amp;quot;, &amp;quot;Mai 1676&amp;quot;, &amp;quot;Octobre 1698&amp;quot;, &amp;quot;Décembre 1700&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1701&amp;quot;, &amp;quot;Février 1701&amp;quot;, &amp;quot;Mars 1701&amp;quot;, &amp;quot;Avril 1701&amp;quot;, &amp;quot;Mai 1701&amp;quot;, &amp;quot;Juin 1701&amp;quot;, &amp;quot;Mars 1704&amp;quot;, &lt;br /&gt;
			&amp;quot;Juin 1711&amp;quot;, &amp;quot;Décembre 1718&amp;quot;, &amp;quot;Mars 1725&amp;quot;, &amp;quot;Novembre 1728&amp;quot;, &amp;quot;Décembre 1731&amp;quot;, &amp;quot;Mars 1738&amp;quot;, &amp;quot;Décembre 1740&amp;quot;, &amp;quot;Octobre 1741&amp;quot;, &amp;quot;juin 1747&amp;quot;, &amp;quot;Juin 1753&amp;quot;, &amp;quot;Mars 1760&amp;quot;,&lt;br /&gt;
		}, &lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ----------- --&lt;br /&gt;
--    Sport    --&lt;br /&gt;
-- ----------- --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;sport&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en sport&amp;quot;, &lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-sport&amp;quot;,&lt;br /&gt;
	jour = true,&lt;br /&gt;
	mois = { aucun = 2004, tous = {2005, 2016}, },&lt;br /&gt;
	annee = { aucun = 1849, tous = {1850, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en sport&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en athlétisme&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en athlétisme&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;athletisme&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2001, tous = {2002, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en baseball&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en baseball&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;baseball&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1868, tous = {2006, 2014}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en basket-ball&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en basket-ball&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;basket-ball&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1928, tous = {1929, 2021}, seul = {1891, 1892, 1893}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en boxe anglaise&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en boxe anglaise&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;boxe anglaise&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2006, tous = {2009, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en canoë-kayak&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
data[&amp;quot;en combiné nordique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en combiné nordique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;combiné nordique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1878, tous = {1879, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en cricket&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en cyclisme&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en cyclisme&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;cyclisme&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1879, tous = {1880, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en escalade&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en escalade&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;escalade&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2015, tous = {2016},},&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en escrime&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en football&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en football&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;football&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1870, tous = {1871, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en football américain&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en football américain&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;football americain&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2008}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en golf&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en gymnastique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en gymnastique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;gymnastique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1979, tous = {1980, 2018}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en handball&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en handball&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;handball&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1979, tous = {1991, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en hockey sur glace&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en hockey sur glace&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;hockey sur glace&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1899, tous = {1900, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en judo&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en natation&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en natation&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;natation&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2017}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en rink hockey&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en rink hockey&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;rink hockey&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en rugby à XIII&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en rugby à XIII&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;rugby a XIII&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2009, tous = {2010, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en rugby à XV&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en rugby à XV&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;rugby a XV&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1870, tous = {1871, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en ski&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en ski&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;ski&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2006, tous = {2007, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en snooker&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en sport automobile&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en sport automobile&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;sport automobile&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1886, tous = {1894, 2016}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en sports équestres&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en sports équestres&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;sports equestres&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1899, tous = {1971, 2019}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en tennis&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en tennis&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;tennis&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1983, tous = {1998, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en triathlon&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en triathlon&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;sport&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;triathlon&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2015, tous = {2017, 2020}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en volley-ball&amp;quot;] = data[&amp;quot;sport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------- --&lt;br /&gt;
--   Science  --&lt;br /&gt;
-- ---------- --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en science&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en science&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;science&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;_science&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1499, tous = {1500, 2021}, seul = {783, 850}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;science&amp;quot;] = data[&amp;quot;en science&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en astronomie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en astronomie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;science&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;astronomie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1968, tous = {1993, 2022} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en santé et médecine&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en santé et médecine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;science&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;santé et médecine&amp;quot;,&lt;br /&gt;
	annee = { aucun = 999, tous = {1870, 2021} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en santé&amp;quot;] = data[&amp;quot;en santé et médecine&amp;quot;]&lt;br /&gt;
data[&amp;quot;en médecine&amp;quot;] = data[&amp;quot;en santé et médecine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en sociologie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en sociologie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;science&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;sociologie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1850, tous = {1986, 2007},  },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- -------------- --&lt;br /&gt;
--   Thématiques  --&lt;br /&gt;
-- -------------- --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;thématique&amp;quot;] = { qualificatif = &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en aéronautique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en aéronautique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;aeronautique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1898, tous = {1899, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en animation asiatique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en animation asiatique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;animation asiatique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1978, tous = {1979, 2021}, seul = {1945} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en architecture&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en architecture&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;architecture&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1189, tous = {1397, 2021}, },  &lt;br /&gt;
}       -- les pages avant 1190 sont des redirections vers la page annuelle sans qualificatif&lt;br /&gt;
data[&amp;quot;en arts plastiques&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en arts plastiques&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;arts plastiques&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1400, tous = {1499, 2021}, },  &lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en astronautique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en astronautique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;astronautique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1940, tous = {1956, 2025}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en automobile&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en automobile&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;automobile&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2009, tous = {2010, 2014}, seul = {1941, 1948, 1983, 1998, 2005}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en bande dessinée&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en bande dessinée&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;bande dessinée&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1890, tous = {1895, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en catch&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en catch&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;catch&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1997, tous = {2006, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;dans les chemins de fer&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;dans les chemins de fer&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;chemins de fer&amp;quot;,&lt;br /&gt;
	jour = true,&lt;br /&gt;
	annee = { aucun = 1799, tous = {1800, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au cinéma&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au cinéma&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;cinema&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1887, tous = {1888, 2022}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;dans les croisades&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;dans les croisades&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;croisades&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1094, tous = {1095, 1302}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;chez Disney&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;chez Disney&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;disney&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1921, tous = {1922, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en droit&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en droit&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;droit&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1600, tous = {1682, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux échecs&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;aux échecs&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;echecs&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1400, tous = {1782, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en économie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en économie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;economie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1899, tous = {2004, 2015} }&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en fantasy&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en fantasy&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;fantasy&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1920, tous = {1950, 2021}, seul = {1896}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en informatique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en informatique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;informatique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1940, tous = {1962, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en jeu&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en jeu&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;jeu&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1957, tous = {1974, 2020}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au go&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au go&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;jeu de go&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2012} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en jeu vidéo&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en jeu vidéo&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;jeu vidéo&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1957, tous = {1958, 2022} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en littérature&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;en littérature&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;litterature&amp;quot;,&lt;br /&gt;
	annee = {aucun = 1371, tous = {1468, 2022}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en musique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en musique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;musique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1796, tous = {1797, 2022}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en musique classique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en musique classique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;musique classique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1399, tous = {1400, 2022}, seul = {1375}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en numismatique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en numismatique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;numismatique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1930, tous = {1990, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;dans les parcs de loisirs&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;dans les parcs de loisirs&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;parcs de loisirs&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1869, tous = {1870, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en parfumerie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en parfumerie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;parfumerie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2100, seul = {1995, }, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en philosophie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en philosophie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;philosophie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1450, tous = {1849, 2020}, seul = {1327, 1328, 1329}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en photographie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en photographie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;photographie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1785, tous = {1800, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en politique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en politique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;politique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2100, seul = {2015, 2016 ,2019}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à la radio&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;à la radio&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;radio&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2012, tous = {2013, 2020}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en science-fiction&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en science-fiction&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;science-fiction&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1880, tous = {1898, 2022}, seul = {1826, 1828, 1862, 1872}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à la télévision&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;à la télévision&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;television&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1880, tous = {1884, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au théâtre&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au théâtre&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;theâtre&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1500, tous = {1596, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;guerre mondiale&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;(guerre mondiale)&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;thématique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;guerre mondiale&amp;quot;,&lt;br /&gt;
	mois = { &lt;br /&gt;
		aucun = 9999, &lt;br /&gt;
		seul = {&amp;quot;Juillet 1914&amp;quot;, &amp;quot;Août 1914&amp;quot;,&amp;quot;Septembre 1914&amp;quot;, &amp;quot;Octobre 1914&amp;quot;,&amp;quot;Novembre 1914&amp;quot;, &amp;quot;Décembre 1914&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1915&amp;quot;, &amp;quot;Février 1915&amp;quot;, &amp;quot;Mars 1915&amp;quot;, &amp;quot;Avril 1915&amp;quot;, &amp;quot;Mai 1915&amp;quot;, &amp;quot;Juin 1915&amp;quot;,&amp;quot;Juillet 1915&amp;quot;, &amp;quot;Août 1915&amp;quot;,&amp;quot;Septembre 1915&amp;quot;, &amp;quot;Octobre 1915&amp;quot;,&amp;quot;Novembre 1915&amp;quot;, &amp;quot;Décembre 1915&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1916&amp;quot;, &amp;quot;Février 1916&amp;quot;, &amp;quot;Mars 1916&amp;quot;, &amp;quot;Avril 1916&amp;quot;, &amp;quot;Mai 1916&amp;quot;, &amp;quot;Juin 1916&amp;quot;,&amp;quot;Juillet 1916&amp;quot;, &amp;quot;Août 1916&amp;quot;,&amp;quot;Septembre 1916&amp;quot;, &amp;quot;Octobre 1916&amp;quot;,&amp;quot;Novembre 1916&amp;quot;, &amp;quot;Décembre 1916&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1917&amp;quot;, &amp;quot;Février 1917&amp;quot;, &amp;quot;Mars 1917&amp;quot;, &amp;quot;Avril 1917&amp;quot;, &amp;quot;Mai 1917&amp;quot;, &amp;quot;Juin 1917&amp;quot;,&amp;quot;Juillet 1917&amp;quot;, &amp;quot;Août 1917&amp;quot;,&amp;quot;Septembre 1917&amp;quot;, &amp;quot;Octobre 1917&amp;quot;,&amp;quot;Novembre 1917&amp;quot;, &amp;quot;Décembre 1917&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1918&amp;quot;, &amp;quot;Février 1918&amp;quot;, &amp;quot;Mars 1918&amp;quot;, &amp;quot;Avril 1918&amp;quot;, &amp;quot;Mai 1918&amp;quot;, &amp;quot;Juin 1918&amp;quot;,&amp;quot;Juillet 1918&amp;quot;, &amp;quot;Août 1918&amp;quot;,&amp;quot;Septembre 1918&amp;quot;, &amp;quot;Octobre 1918&amp;quot;,&amp;quot;Novembre 1918&amp;quot;, &amp;quot;Décembre 1918&amp;quot;,&lt;br /&gt;
			&amp;quot;Août 1939&amp;quot;,&amp;quot;Septembre 1939&amp;quot;, &amp;quot;Octobre 1939&amp;quot;,&amp;quot;Novembre 1939&amp;quot;, &amp;quot;Décembre 1939&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1940&amp;quot;, &amp;quot;Février 1940&amp;quot;, &amp;quot;Mars 1940&amp;quot;, &amp;quot;Avril 1940&amp;quot;, &amp;quot;Mai 1940&amp;quot;, &amp;quot;Juin 1940&amp;quot;,&amp;quot;Juillet 1940&amp;quot;, &amp;quot;Août 1940&amp;quot;,&amp;quot;Septembre 1940&amp;quot;, &amp;quot;Octobre 1940&amp;quot;,&amp;quot;Novembre 1940&amp;quot;, &amp;quot;Décembre 1940&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1941&amp;quot;, &amp;quot;Février 1941&amp;quot;, &amp;quot;Mars 1941&amp;quot;, &amp;quot;Avril 1941&amp;quot;, &amp;quot;Mai 1941&amp;quot;, &amp;quot;Juin 1941&amp;quot;,&amp;quot;Juillet 1941&amp;quot;, &amp;quot;Août 1941&amp;quot;,&amp;quot;Septembre 1941&amp;quot;, &amp;quot;Octobre 1941&amp;quot;,&amp;quot;Novembre 1941&amp;quot;, &amp;quot;Décembre 1941&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1942&amp;quot;, &amp;quot;Février 1942&amp;quot;, &amp;quot;Mars 1942&amp;quot;, &amp;quot;Avril 1942&amp;quot;, &amp;quot;Mai 1942&amp;quot;, &amp;quot;Juin 1942&amp;quot;,&amp;quot;Juillet 1942&amp;quot;, &amp;quot;Août 1942&amp;quot;,&amp;quot;Septembre 1942&amp;quot;, &amp;quot;Octobre 1942&amp;quot;,&amp;quot;Novembre 1942&amp;quot;, &amp;quot;Décembre 1942&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1943&amp;quot;, &amp;quot;Février 1943&amp;quot;, &amp;quot;Mars 1943&amp;quot;, &amp;quot;Avril 1943&amp;quot;, &amp;quot;Mai 1943&amp;quot;, &amp;quot;Juin 1943&amp;quot;,&amp;quot;Juillet 1943&amp;quot;, &amp;quot;Août 1943&amp;quot;,&amp;quot;Septembre 1943&amp;quot;, &amp;quot;Octobre 1943&amp;quot;,&amp;quot;Novembre 1943&amp;quot;, &amp;quot;Décembre 1943&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1944&amp;quot;, &amp;quot;Février 1941&amp;quot;, &amp;quot;Mars 1944&amp;quot;, &amp;quot;Avril 1944&amp;quot;, &amp;quot;Mai 1944&amp;quot;, &amp;quot;Juin 1944&amp;quot;,&amp;quot;Juillet 1944&amp;quot;, &amp;quot;Août 1944&amp;quot;,&amp;quot;Septembre 1944&amp;quot;, &amp;quot;Octobre 1944&amp;quot;,&amp;quot;Novembre 1944&amp;quot;, &amp;quot;Décembre 1944&amp;quot;,&lt;br /&gt;
			&amp;quot;Janvier 1945&amp;quot;, &amp;quot;Février 1945&amp;quot;, &amp;quot;Mars 1945&amp;quot;, &amp;quot;Avril 1945&amp;quot;, &amp;quot;Mai 1945&amp;quot;, &amp;quot;Juin 1945&amp;quot;,&amp;quot;Juillet 1945&amp;quot;, &amp;quot;Août 1945&amp;quot;,&amp;quot;Septembre 1945&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	annee = { aucun = 9999, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;(guerre mondiale)&amp;quot;] = data[&amp;quot;guerre mondiale&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -------------- --&lt;br /&gt;
--   Géographie   -- &lt;br /&gt;
-- -------------- --&lt;br /&gt;
&lt;br /&gt;
-- Afrique --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;Afrique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;par pays en Afrique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Afrique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2003, tous = {2004, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;par pays en Afrique&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Afrique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Afrique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Afrique &amp;quot;,&lt;br /&gt;
	mois = { aucun = 2004, tous = {2005, 2007}, },&lt;br /&gt;
	annee = { aucun = 2003, tous = {2004, 2021}, seul = {1982}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Afrique du Sud&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Afrique du Sud&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Afrique du Sud&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Algérie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Algérie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Algérie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Angola&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Bénin&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Botswana&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Burkina Faso&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Burundi&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Burundi&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Burundi&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Cameroun&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Cameroun&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Cameroun&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2013}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Cap-Vert&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en République centrafricaine&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en République centrafricaine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Centrafrique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux Comores&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;aux Comores&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Comores&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Congo Brazzaville&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Congo&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en République démocratique du Congo&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en République démocratique du Congo&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Congo, République démocratique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1996, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Congo démocratique&amp;quot;] = data[&amp;quot;en République démocratique du Congo&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Côte d&#039;Ivoire&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Côte d&#039;Ivoire&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Cote d&#039;Ivoire&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Djibouti&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Égypte&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Égypte&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Egypte&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Érythrée&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Éthiopie&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Gabon&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Gabon&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Gabon&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Ghana&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Guinée&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Guinée&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Guinee&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, seul = {1984}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Guinée-Bissau&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Guinée-Bissau&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Guinee-Bissau&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Guinée équatoriale&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Kenya&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Kenya&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Kenya&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Lesotho&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Liberia&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Libye&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Libye&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Libye&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Madagascar&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;à Madagascar&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Madagascar&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Malawi&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Mali&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Mali&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Mali&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2004, tous = {2005, 2013}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Maroc&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Maroc&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Maroc&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1900, tous = {2001, 2012}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à l&#039;Île Maurice&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Mauritanie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Mauritanie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Mauritanie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Mayotte&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Mozambique&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Namibie&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Niger&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Niger&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Niger&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Nigeria&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Nigeria&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Nigeria&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Ouganda&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Ouganda&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Ouganda&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Rwanda&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Rwanda&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Rwanda&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Sahara occidental&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Sénégal&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Sénégal&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Senegal&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux Seychelles&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Sierra Leone&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Somalie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Somalie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Somalie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Soudan&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Soudan&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Soudan&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Soudan du Sud&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Tanzanie&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Tchad&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Tchad&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Tchad&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Togo&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Togo&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Togo&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2010}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Tunisie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Tunisie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Tunisie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Zaïre&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Zaïre&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Zaïre&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1990, tous = {1991}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Zambie&amp;quot;] = data[&amp;quot;Afrique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Zimbabwe&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Zimbabwe&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Afrique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Zimbabwe&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Amérique --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;Amérique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;par pays en Amérique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Amerique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1999, tous = {2000, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;par pays en Amérique&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Amérique&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Argentine&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Argentine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Argentine&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {1945, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à la Barbade&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Belize&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Bolivie&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Brésil&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Brésil&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Bresil&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1920, tous = {2011, 2014}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Canada&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Canada&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	mois = { aucun = 2100, seul = { &amp;quot;Novembre 2005&amp;quot;, &amp;quot;Décembre 2005&amp;quot;, &amp;quot;Janvier 2006&amp;quot;, &amp;quot;Février 2006&amp;quot;}, },&lt;br /&gt;
	annee = { aucun = 1690, tous = {1691, 2021}, seul = {1534}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;Canada&amp;quot;] = data[&amp;quot;au Canada&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Alberta&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Alberta&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Alberta&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1904, tous = {1905, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Colombie-Britannique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Colombie-Britannique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Colombie-Britannique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1870, tous = {1871, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Manitoba&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Manitoba&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Manitoba&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1869, tous = {1870, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Nouveau-Brunswick&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Nouveau-Brunswick&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Nouveau-Brunswick&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1783, tous = {1784, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Nouvelle-Écosse&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Nouvelle-Écosse&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Nouvelle-Ecosse&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1866, tous = {1867, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Nunavut&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Nunavut&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Nunavut&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1998, tous = {1999, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Ontario&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Ontario&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Ontario&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1866, tous = {1867, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Québec&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Québec&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Quebec&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1762, tous = {1866, 2021}, seul = {1710}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Saskatchewan&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Saskatchewan&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Canada&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Saskatchewan&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1904, tous = {1905, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Terre-Neuve-et-Labrador&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;à Terre-Neuve-et-Labrador&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Terre-Neuve-et-Labrador&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1948, tous = {1949, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux Territoires du Nord-Ouest&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;aux Territoires du Nord-Ouest&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Territoires du Nord-Ouest&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1869, tous = {1870, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Yukon&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Yukon&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Canada - Yukon&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1897, tous = {1898, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Chili&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Colombie&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;en Colombie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Colombie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Costa Rica&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;à Cuba&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;à Cuba&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Cuba&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Équateur&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;aux États-Unis&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;aux États-Unis&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Etats-Unis&amp;quot;,&lt;br /&gt;
	mois = { aucun = 2100, seul = {&amp;quot;Janvier 2009&amp;quot;, &amp;quot;Février 2009&amp;quot;, &amp;quot;Mars 2009&amp;quot;, &amp;quot;Avril 2009&amp;quot;, &amp;quot;Mai 2009&amp;quot;, &amp;quot;Juin 2009&amp;quot; }, }, -- les autres mois sont vides ou presque&lt;br /&gt;
	annee = { aucun = 1775, tous = {1776, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Groenland&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Guatemala&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Guyane&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;à Haïti&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Honduras&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Honduras&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Honduras&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Jamaïque&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Mexique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Mexique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Mexique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2004, tous = {2019, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux Nations unies&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;aux Nations unies&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Nations unies&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Nicaragua&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Panama&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Paraguay&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Pérou&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;à Porto Rico&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;à Saint-Pierre-et-Miquelon&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Salvador&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Uruguay&amp;quot;] = data[&amp;quot;Amérique&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Venezuela&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;au Venezuela&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Amérique&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Venezuela&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Asie --&lt;br /&gt;
data[&amp;quot;Asie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;par pays en Asie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Asie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2004, tous = {2005, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;par pays en Asie&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Asie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Asie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Asie &amp;quot;,&lt;br /&gt;
	annee = { aucun = 2004, tous = {2005, 2018}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Afghanistan&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Afghanistan&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Afghanistan&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Bangladesh&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Birmanie&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Bhoutan&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Cambodge&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Chine&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Chine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Chine&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2000, tous = {2005, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Corée&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Corée&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Coree&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Corée du Nord&amp;quot;] = data[&amp;quot;Corée&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Corée du Sud&amp;quot;] = data[&amp;quot;Corée&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Inde&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Inde&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Inde&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1899, tous = {1900, 1963} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Indonésie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Indonésie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Indonesie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Japon&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Japon&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Japon&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Kazakhstan&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Kurdistan&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Kurdistan&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Kurdistan&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Laos&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Laos&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Laos&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2012} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Malaisie&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Népal&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Ouzbékistan&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Pakistan&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Pakistan&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Pakistan&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux Philippines&amp;quot;] ={&lt;br /&gt;
	qualificatif = &amp;quot;aux Philippines&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Philippines&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2007}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Singapour&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Sri Lanka&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Sri Lanka&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Sri Lanka&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Taïwan&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Thaïlande&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Thaïlande&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Thaïlande&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Tibet&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Tibet&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Asie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Tibet&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Timor oriental&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Turkménistan&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Viêt Nam&amp;quot;] = data[&amp;quot;Asie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Europe --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;Europe&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;par pays en Europe&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Europe&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1989, tous = {1999, 2021}, seul = {1976}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;par pays en Europe&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Europe&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Europe&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Europe &amp;quot;,&lt;br /&gt;
	annee = { aucun = 1979, tous = {2004, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
-- Un certain nombre de lien sur l&#039;année 2009 sont des redirections vers &amp;quot;par pays en Europe&amp;quot;&lt;br /&gt;
data[&amp;quot;en Albanie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Albanie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Albanie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2014}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Allemagne&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Allemagne&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Allemagne&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1990, tous = {1991, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Andorre&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
-- data[&amp;quot;en Angleterre&amp;quot;]  -- voir &amp;quot;au Royaume-Uni&amp;quot;&lt;br /&gt;
data[&amp;quot;en Arménie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Autriche&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Autriche&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Autriche&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Belgique&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Belgique&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Belgique&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1811, tous = {1825, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Biélorussie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Bosnie-Herzégovine&amp;quot;] = data[&amp;quot;Europe&amp;quot;] --2009 est une redirection&lt;br /&gt;
data[&amp;quot;en Bosnie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Bulgarie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;dans le Caucase&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;dans le Caucase&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Caucase&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2009, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Chypre&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Croatie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Danemark&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Danemark&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Danemark&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1990, tous = {2008, 2016}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- data[&amp;quot;en Écosse&amp;quot;]  -- voir &amp;quot;au Royaume-Uni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Espagne&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Espagne&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Espagne&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Estonie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Finlande&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en France&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;en France&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;France&amp;quot;,&lt;br /&gt;
	mois = { aucun = 2004, tous = {2008, 2009}, seul = { &amp;quot;Octobre 2004&amp;quot;, &amp;quot;Mai 1968&amp;quot;}, },&lt;br /&gt;
	annee = { aucun = 1536, tous = {1537, 2022}, seul = {1419}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;France&amp;quot;] = data[&amp;quot;en France&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Bretagne&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;en Bretagne&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;France&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;France - Bretagne&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1789, tous = {1893, 2016}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Lorraine&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;en Lorraine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;France&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;France - Lorraine&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1788, tous = {1789, 2020}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;à Paris&amp;quot;] = { &lt;br /&gt;
	qualificatif = &amp;quot;à Paris&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;France&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;France - Paris&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1847, tous = {2006, 2008}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Géorgie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Géorgie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Georgie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, tous = {2017, 2020}, seul = {1991, 1992, 2001, 2002, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Grèce&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Grèce&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Grece&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1870, tous = {1877, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Hongrie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Irlande&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Irlande&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Irlande&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1976, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Islande&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Islande&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Islande&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Italie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Italie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Italie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1786, tous = {1787, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Kosovo&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Liechtenstein&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Lettonie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Lituanie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;au Luxembourg&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Macédoine&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;à Malte&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Moldavie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Moldavie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Moldavie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Monténégro&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Norvège&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;aux Pays-Bas&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;aux Pays-Bas&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Pays-Bas&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Royaume uni des Pays-Bas&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Royaume uni des Pays-Bas&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Pays-Bas &amp;quot;,&lt;br /&gt;
	annee = { aucun = 1814, tous = {1825, 1829}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Pologne&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Pologne&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Pologne&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Portugal&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Roumanie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Roumanie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Roumanie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Royaume-Uni&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Royaume-Uni&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Royaume-Uni&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au pays de Galles&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au pays de Galles&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Royaume-Uni - pays de Galles&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2011}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Angleterre&amp;quot;] = data[&amp;quot;au Royaume-Uni&amp;quot;]    -- doit être placé après le création de &amp;quot;au Royaume-Uni&amp;quot;&lt;br /&gt;
data[&amp;quot;en Écosse&amp;quot;] = data[&amp;quot;au Royaume-Uni&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Russie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Russie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Russie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, seul = {2001}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Serbie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Serbie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Serbie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Slovaquie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Slovénie&amp;quot;] = data[&amp;quot;Europe&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Suède&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Suède&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Suede&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Suisse&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Suisse&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Suisse&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1847, tous = {1851, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en République tchèque&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en République tchèque&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Tchequie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Tchéquie&amp;quot;] = data[&amp;quot;en République tchèque&amp;quot;]&lt;br /&gt;
data[&amp;quot;en Turquie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Turquie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Turquie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Ukraine&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Ukraine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Ukraine&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;dans l&#039;Union européenne&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;dans l&#039;Union européenne&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Union européenne&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2015}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;au Vatican&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Vatican&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Europe&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Vatican&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2011, 2021}, seul = {1993}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Proche-Orient&lt;br /&gt;
data[&amp;quot;Proche-Orient&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;par pays au Proche-Orient&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Proche-Orient&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2004, tous = { 2005, 2017 } },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;par pays au Proche-Orient&amp;quot;] = data[&amp;quot;Proche-Orient&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Arabie saoudite&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Arabie saoudite&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Arabie saoudite&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;aux Émirats arabes unis&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;aux Émirats arabes unis&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Emirats arabes unis&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Irak&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Irak&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Irak&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2014}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Iran&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Iran&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Iran&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2010}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Israël&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Israël&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Israel&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Jordanie&amp;quot;] = data[&amp;quot;Proche-Orient&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Liban&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;au Liban&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Liban&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2014, 2015} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Palestine&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Palestine&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Palestine&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2007, tous = {2008, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Syrie&amp;quot;] = data[&amp;quot;Proche-Orient&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;au Yémen&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;au Yémen&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Proche-Orient&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Yémen&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2009} },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Océanie --&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;Océanie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;par pays en Océanie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Océanie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Oceanie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;par pays en Océanie&amp;quot;] = data[&amp;quot;Océanie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Océanie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Océanie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Océanie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;-Oceanie &amp;quot;,&lt;br /&gt;
	annee = { aucun = 2005, tous = {2006, 2021}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Australie&amp;quot;] = {&lt;br /&gt;
	qualificatif = &amp;quot;en Australie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Océanie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Australie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2008, tous = {2013, 2019}, },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Micronésie&amp;quot;] = data[&amp;quot;Océanie&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Nouvelle-Calédonie&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;en Nouvelle-Calédonie&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Océanie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Nouvelle-Caledonie&amp;quot;,&lt;br /&gt;
	annee = { aucun = 1959, tous = {1960, 2009}, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data[&amp;quot;en Nouvelle-Zélande&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;en Nouvelle-Zélande&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Océanie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Nouvelle-Zelande&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2011} },&lt;br /&gt;
}&lt;br /&gt;
data[&amp;quot;en Papouasie-Nouvelle-Guinée&amp;quot;] =  {&lt;br /&gt;
	qualificatif = &amp;quot;en Papouasie-Nouvelle-Guinée&amp;quot;,&lt;br /&gt;
	cat = &amp;quot;Océanie&amp;quot;,&lt;br /&gt;
	tri = &amp;quot;Papouasie-Nouvelle-Guinee&amp;quot;,&lt;br /&gt;
	annee = { aucun = 2016, seul = {2012} },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- -------------------------- --&lt;br /&gt;
--   alias pour les chartes   -- &lt;br /&gt;
-- -------------------------- --&lt;br /&gt;
data[&amp;quot;abda&amp;quot;] = data[&amp;quot;en bande dessinée&amp;quot;]&lt;br /&gt;
data[&amp;quot;bd&amp;quot;] = data[&amp;quot;en bande dessinée&amp;quot;]&lt;br /&gt;
data[&amp;quot;chef d&#039;état&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;chef de gouvernement&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;classique&amp;quot;] = data[&amp;quot;en musique classique&amp;quot;]&lt;br /&gt;
data[&amp;quot;conseiller fédéral suisse&amp;quot;] = data[&amp;quot;en Suisse&amp;quot;]&lt;br /&gt;
data[&amp;quot;danse&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;défaut&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;defaut&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;écrivain&amp;quot;] = data[&amp;quot;en littérature&amp;quot;]&lt;br /&gt;
data[&amp;quot;football&amp;quot;] = data[&amp;quot;en football&amp;quot;]&lt;br /&gt;
data[&amp;quot;gouverneur&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;instrumentiste&amp;quot;] = data[&amp;quot;en musique&amp;quot;]&lt;br /&gt;
data[&amp;quot;jazz&amp;quot;] = data[&amp;quot;en musique&amp;quot;]&lt;br /&gt;
data[&amp;quot;littérature&amp;quot;] = data[&amp;quot;en littérature&amp;quot;]&lt;br /&gt;
data[&amp;quot;monarque&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;monde&amp;quot;] = data[&amp;quot;en musique&amp;quot;]&lt;br /&gt;
data[&amp;quot;musical&amp;quot;] = data[&amp;quot;en musique&amp;quot;]&lt;br /&gt;
data[&amp;quot;pharaon&amp;quot;] = data[&amp;quot;en Égypte&amp;quot;]&lt;br /&gt;
data[&amp;quot;pluridisciplinaire&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;politicien&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;pornographie&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;presse&amp;quot;] = data[&amp;quot;&amp;quot;]&lt;br /&gt;
data[&amp;quot;théâtre&amp;quot;] = data[&amp;quot;au théâtre&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Country_data/liste&amp;diff=338</id>
		<title>Module:Country data/liste</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Country_data/liste&amp;diff=338"/>
		<updated>2024-09-20T14:19:48Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « return { --noms utilisés dans les noms des sous-modules Country_data/... 	q16 = &amp;#039;canada&amp;#039;, 	q17 = &amp;#039;japon&amp;#039;, 	q20 = &amp;#039;norvège&amp;#039;, 	q21 = &amp;#039;angleterre&amp;#039;, 	q22 = &amp;#039;écosse&amp;#039;, 	q25 = &amp;#039;pays de galles&amp;#039;, 	q26 = &amp;#039;irlande du nord&amp;#039;, 	q27 = &amp;#039;irlande&amp;#039;, 	q28 = &amp;#039;hongrie&amp;#039;, 	q29 = &amp;#039;espagne&amp;#039;, 	q30 = &amp;#039;états-unis&amp;#039;, 	q31 = &amp;#039;belgique&amp;#039;, 	q32 = &amp;#039;luxembourg&amp;#039;, 	q33 = &amp;#039;finlande&amp;#039;, 	q34 = &amp;#039;suède&amp;#039;, 	q35 = &amp;#039;danemark&amp;#039;, 	q36 = &amp;#039;pologne&amp;#039;, 	q37 = &amp;#039;lituanie&amp;#039;, 	q38 = &amp;#039;italie&amp;#039;, 	q39 = &amp;#039;suisse&amp;#039;, 	q40 = &amp;#039;a... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return { --noms utilisés dans les noms des sous-modules Country_data/...&lt;br /&gt;
	q16 = &#039;canada&#039;,&lt;br /&gt;
	q17 = &#039;japon&#039;,&lt;br /&gt;
	q20 = &#039;norvège&#039;,&lt;br /&gt;
	q21 = &#039;angleterre&#039;,&lt;br /&gt;
	q22 = &#039;écosse&#039;,&lt;br /&gt;
	q25 = &#039;pays de galles&#039;,&lt;br /&gt;
	q26 = &#039;irlande du nord&#039;,&lt;br /&gt;
	q27 = &#039;irlande&#039;,&lt;br /&gt;
	q28 = &#039;hongrie&#039;,&lt;br /&gt;
	q29 = &#039;espagne&#039;,&lt;br /&gt;
	q30 = &#039;états-unis&#039;,&lt;br /&gt;
	q31 = &#039;belgique&#039;,&lt;br /&gt;
	q32 = &#039;luxembourg&#039;,&lt;br /&gt;
	q33 = &#039;finlande&#039;,&lt;br /&gt;
	q34 = &#039;suède&#039;,&lt;br /&gt;
	q35 = &#039;danemark&#039;,&lt;br /&gt;
	q36 = &#039;pologne&#039;,&lt;br /&gt;
	q37 = &#039;lituanie&#039;,&lt;br /&gt;
	q38 = &#039;italie&#039;,&lt;br /&gt;
	q39 = &#039;suisse&#039;,&lt;br /&gt;
	q40 = &#039;autriche&#039;,&lt;br /&gt;
	q41 = &#039;grèce&#039;,&lt;br /&gt;
	q43 = &#039;turquie&#039;,&lt;br /&gt;
	q45 = &#039;portugal&#039;,&lt;br /&gt;
	q51 = &#039;antarctique&#039;,&lt;br /&gt;
	q55 = &#039;pays-bas&#039;,&lt;br /&gt;
	q77 = &#039;uruguay&#039;,&lt;br /&gt;
	q79 = &#039;égypte&#039;,&lt;br /&gt;
	q96 = &#039;mexique&#039;,&lt;br /&gt;
	q114 = &#039;kenya&#039;,&lt;br /&gt;
	q115 = &#039;éthiopie&#039;,&lt;br /&gt;
	q117 = &#039;ghana&#039;,&lt;br /&gt;
	q142 = &#039;france&#039;,&lt;br /&gt;
	q145 = &#039;royaume-uni&#039;,&lt;br /&gt;
	q148 = &#039;chine&#039;,&lt;br /&gt;
	q155 = &#039;brésil&#039;,&lt;br /&gt;
	q159 = &#039;russie&#039;,&lt;br /&gt;
	q176 = &#039;québec&#039;,&lt;br /&gt;
	q183 = &#039;allemagne&#039;,&lt;br /&gt;
	q184 = &#039;biélorussie&#039;,&lt;br /&gt;
	q189 = &#039;islande&#039;,&lt;br /&gt;
	q191 = &#039;estonie&#039;,&lt;br /&gt;
	q211 = &#039;lettonie&#039;,&lt;br /&gt;
	q212 = &#039;ukraine&#039;,&lt;br /&gt;
	q213 = &#039;république tchèque&#039;,&lt;br /&gt;
	q214 = &#039;slovaquie&#039;,&lt;br /&gt;
	q215 = &#039;slovénie&#039;,&lt;br /&gt;
	q217 = &#039;moldavie&#039;,&lt;br /&gt;
	q218 = &#039;roumanie&#039;,&lt;br /&gt;
	q219 = &#039;bulgarie&#039;,&lt;br /&gt;
	q221 = &#039;macédoine&#039;,&lt;br /&gt;
	q222 = &#039;albanie&#039;,&lt;br /&gt;
	q223 = &#039;groenland&#039;,&lt;br /&gt;
	q224 = &#039;croatie&#039;,&lt;br /&gt;
	q225 = &#039;bosnie-herzégovine&#039;,&lt;br /&gt;
	q227 = &#039;azerbaïdjan&#039;,&lt;br /&gt;
	q228 = &#039;andorre&#039;,&lt;br /&gt;
	q229 = &#039;chypre&#039;,&lt;br /&gt;
	q230 = &#039;géorgie&#039;,&lt;br /&gt;
	q232 = &#039;kazakhstan&#039;,&lt;br /&gt;
	q233 = &#039;malte&#039;,&lt;br /&gt;
	q235 = &#039;monaco&#039;,&lt;br /&gt;
	q236 = &#039;monténégro&#039;,&lt;br /&gt;
	q237 = &#039;vatican&#039;,&lt;br /&gt;
	q238 = &#039;saint-marin&#039;,&lt;br /&gt;
	q241 = &#039;cuba&#039;,&lt;br /&gt;
	q242 = &#039;belize&#039;,&lt;br /&gt;
	q244 = &#039;barbade&#039;,&lt;br /&gt;
	q252 = &#039;indonésie&#039;,&lt;br /&gt;
	q258 = &#039;afrique du sud&#039;,&lt;br /&gt;
	q262 = &#039;algérie&#039;,&lt;br /&gt;
	q265 = &#039;ouzbékistan&#039;,&lt;br /&gt;
	q298 = &#039;chili&#039;,&lt;br /&gt;
	q334 = &#039;singapour&#039;,&lt;br /&gt;
	q347 = &#039;liechtenstein&#039;,&lt;br /&gt;
	q398 = &#039;bahreïn&#039;,&lt;br /&gt;
	q399 = &#039;arménie&#039;,&lt;br /&gt;
	q403 = &#039;serbie&#039;,&lt;br /&gt;
	q408 = &#039;australie&#039;,&lt;br /&gt;
	q414 = &#039;argentine&#039;,&lt;br /&gt;
	q419 = &#039;pérou&#039;,&lt;br /&gt;
	q423 = &#039;corée du nord&#039;,&lt;br /&gt;
	q424 = &#039;cambodge&#039;,&lt;br /&gt;
	q574 = &#039;timor oriental&#039;,&lt;br /&gt;
	q657 = &#039;tchad&#039;,&lt;br /&gt;
	q664 = &#039;nouvelle-zélande&#039;,&lt;br /&gt;
	q668 = &#039;inde&#039;,&lt;br /&gt;
	q672 = &#039;tuvalu&#039;,&lt;br /&gt;
	q678 = &#039;tonga&#039;,&lt;br /&gt;
	q683 = &#039;samoa&#039;,&lt;br /&gt;
	q685 = &#039;salomon&#039;,&lt;br /&gt;
	q686 = &#039;vanuatu&#039;,&lt;br /&gt;
	q691 = &#039;papouasie-nouvelle-guinée&#039;,&lt;br /&gt;
	q695 = &#039;palaos&#039;,&lt;br /&gt;
	q697 = &#039;nauru&#039;,&lt;br /&gt;
	q702 = &#039;micronésie&#039;,&lt;br /&gt;
	q709 = &#039;îles marshall&#039;,&lt;br /&gt;
	q710 = &#039;kiribati&#039;,&lt;br /&gt;
	q711 = &#039;mongolie&#039;,&lt;br /&gt;
	q712 = &#039;fidji&#039;,&lt;br /&gt;
	q717 = &#039;venezuela&#039;,&lt;br /&gt;
	q730 = &#039;suriname&#039;,&lt;br /&gt;
	q733 = &#039;paraguay&#039;,&lt;br /&gt;
	q734 = &#039;guyana&#039;,&lt;br /&gt;
	q736 = &#039;équateur&#039;,&lt;br /&gt;
	q739 = &#039;colombie&#039;,&lt;br /&gt;
	q750 = &#039;bolivie&#039;,&lt;br /&gt;
	q754 = &#039;trinité-et-tobago&#039;,&lt;br /&gt;
	q757 = &#039;saint-vincent-et-les-grenadines&#039;,&lt;br /&gt;
	q760 = &#039;sainte-lucie&#039;,&lt;br /&gt;
	q763 = &#039;saint-christophe-et-niévès&#039;,&lt;br /&gt;
	q766 = &#039;jamaïque&#039;,&lt;br /&gt;
	q769 = &#039;grenade&#039;,&lt;br /&gt;
	q774 = &#039;guatemala&#039;,&lt;br /&gt;
	q778 = &#039;bahamas&#039;,&lt;br /&gt;
	q781 = &#039;antigua-et-barbuda&#039;,&lt;br /&gt;
	q783 = &#039;honduras&#039;,&lt;br /&gt;
	q784 = &#039;dominique&#039;,&lt;br /&gt;
	q785 = &#039;jersey&#039;,&lt;br /&gt;
	q786 = &#039;république dominicaine&#039;,&lt;br /&gt;
	q790 = &#039;haïti&#039;,&lt;br /&gt;
	q792 = &#039;salvador&#039;,&lt;br /&gt;
	q794 = &#039;iran&#039;,&lt;br /&gt;
	q796 = &#039;irak&#039;,&lt;br /&gt;
	q800 = &#039;costa rica&#039;,&lt;br /&gt;
	q801 = &#039;israël&#039;,&lt;br /&gt;
	q804 = &#039;panama&#039;,&lt;br /&gt;
	q805 = &#039;yémen&#039;,&lt;br /&gt;
	q810 = &#039;jordanie&#039;,&lt;br /&gt;
	q811 = &#039;nicaragua&#039;,&lt;br /&gt;
	q813 = &#039;kirghizistan&#039;,&lt;br /&gt;
	q817 = &#039;koweït&#039;,&lt;br /&gt;
	q819 = &#039;laos&#039;,&lt;br /&gt;
	q822 = &#039;liban&#039;,&lt;br /&gt;
	q826 = &#039;maldives&#039;,&lt;br /&gt;
	q833 = &#039;malaisie&#039;,&lt;br /&gt;
	q836 = &#039;birmanie&#039;,&lt;br /&gt;
	q837 = &#039;népal&#039;,&lt;br /&gt;
	q842 = &#039;oman&#039;,&lt;br /&gt;
	q843 = &#039;pakistan&#039;,&lt;br /&gt;
	q846 = &#039;qatar&#039;,&lt;br /&gt;
	q851 = &#039;arabie saoudite&#039;,&lt;br /&gt;
	q854 = &#039;sri lanka&#039;,&lt;br /&gt;
	q858 = &#039;syrie&#039;,&lt;br /&gt;
	q863 = &#039;tadjikistan&#039;,&lt;br /&gt;
	q865 = &#039;taïwan&#039;,&lt;br /&gt;
	q869 = &#039;thaïlande&#039;,&lt;br /&gt;
	q874 = &#039;turkménistan&#039;,&lt;br /&gt;
	q878 = &#039;émirats arabes unis&#039;,&lt;br /&gt;
	q881 = &#039;viêt nam&#039;,&lt;br /&gt;
	q884 = &#039;corée du sud&#039;,&lt;br /&gt;
	q889 = &#039;afghanistan&#039;,&lt;br /&gt;
	q902 = &#039;bangladesh&#039;,&lt;br /&gt;
	q912 = &#039;mali&#039;,&lt;br /&gt;
	q916 = &#039;angola&#039;,&lt;br /&gt;
	q917 = &#039;bhoutan&#039;,&lt;br /&gt;
	q921 = &#039;brunei&#039;,&lt;br /&gt;
	q924 = &#039;tanzanie&#039;,&lt;br /&gt;
	q928 = &#039;philippines&#039;,&lt;br /&gt;
	q929 = &#039;république centrafricaine&#039;,&lt;br /&gt;
	q945 = &#039;togo&#039;,&lt;br /&gt;
	q948 = &#039;tunisie&#039;,&lt;br /&gt;
	q953 = &#039;zambie&#039;,&lt;br /&gt;
	q954 = &#039;zimbabwe&#039;,&lt;br /&gt;
	q958 = &#039;soudan du sud&#039;,&lt;br /&gt;
	q962 = &#039;bénin&#039;,&lt;br /&gt;
	q963 = &#039;botswana&#039;,&lt;br /&gt;
	q965 = &#039;burkina faso&#039;,&lt;br /&gt;
	q967 = &#039;burundi&#039;,&lt;br /&gt;
	q970 = &#039;comores&#039;,&lt;br /&gt;
	q971 = &#039;république du congo&#039;,&lt;br /&gt;
	q974 = &#039;république démocratique du congo&#039;,&lt;br /&gt;
	q977 = &#039;djibouti&#039;,&lt;br /&gt;
	q983 = &#039;guinée équatoriale&#039;,&lt;br /&gt;
	q986 = &#039;érythrée&#039;,&lt;br /&gt;
	q1000 = &#039;gabon&#039;,&lt;br /&gt;
	q1005 = &#039;gambie&#039;,&lt;br /&gt;
	q1006 = &#039;guinée&#039;,&lt;br /&gt;
	q1007 = &#039;guinée-bissau&#039;,&lt;br /&gt;
	q1008 = &#039;côte d\&#039;ivoire&#039;,&lt;br /&gt;
	q1009 = &#039;cameroun&#039;,&lt;br /&gt;
	q1011 = &#039;cap-vert&#039;,&lt;br /&gt;
	q1013 = &#039;lesotho&#039;,&lt;br /&gt;
	q1014 = &#039;liberia&#039;,&lt;br /&gt;
	q1016 = &#039;libye&#039;,&lt;br /&gt;
	q1019 = &#039;madagascar&#039;,&lt;br /&gt;
	q1020 = &#039;malawi&#039;,&lt;br /&gt;
	q1025 = &#039;mauritanie&#039;,&lt;br /&gt;
	q1027 = &#039;maurice&#039;,&lt;br /&gt;
	q1028 = &#039;maroc&#039;,&lt;br /&gt;
	q1029 = &#039;mozambique&#039;,&lt;br /&gt;
	q1030 = &#039;namibie&#039;,&lt;br /&gt;
	q1032 = &#039;niger&#039;,&lt;br /&gt;
	q1033 = &#039;nigeria&#039;,&lt;br /&gt;
	q1036 = &#039;ouganda&#039;,&lt;br /&gt;
	q1037 = &#039;rwanda&#039;,&lt;br /&gt;
	q1039 = &#039;sao tomé-et-principe&#039;,&lt;br /&gt;
	q1041 = &#039;sénégal&#039;,&lt;br /&gt;
	q1042 = &#039;seychelles&#039;,&lt;br /&gt;
	q1044 = &#039;sierra leone&#039;,&lt;br /&gt;
	q1045 = &#039;somalie&#039;,&lt;br /&gt;
	q1049 = &#039;soudan&#039;,&lt;br /&gt;
	q1050 = &#039;eswatini&#039;,&lt;br /&gt;
	q1055 = &#039;hambourg&#039;,&lt;br /&gt;
	q1183 = &#039;porto rico&#039;,&lt;br /&gt;
	q1246 = &#039;kosovo&#039;,&lt;br /&gt;
	q1410 = &#039;gibraltar&#039;,&lt;br /&gt;
	q2184 = &#039;russie&#039;,&lt;br /&gt;
	q3769 = &#039;guyane&#039;,&lt;br /&gt;
	q4040 = &#039;aragon&#039;,&lt;br /&gt;
	q4628 = &#039;îles féroé&#039;,&lt;br /&gt;
	q4948 = &#039;république de Venise&#039;,&lt;br /&gt;
	q5689 = &#039;åland&#039;,&lt;br /&gt;
	q5705 = &#039;catalogne&#039;,&lt;br /&gt;
	q5785 = &#039;îles caïmans&#039;,&lt;br /&gt;
	q7318 = &#039;troisième reich&#039;,&lt;br /&gt;
	q8646 = &#039;hong kong&#039;,&lt;br /&gt;
	q8733 = &#039;chine&#039;, -- dynastie Qing, utilisée comme nationalité sur Wikidata (?!)&lt;br /&gt;
	q9648 = &#039;îles malouines&#039;,&lt;br /&gt;
	q9676 = &#039;île de man&#039;,&lt;br /&gt;
	q11703 = &#039;îles vierges des états-unis&#039;,&lt;br /&gt;
	q12560 = &#039;empire ottoman&#039;,&lt;br /&gt;
	q13353 = &#039;montserrat&#039;,&lt;br /&gt;
	q14773 = &#039;macao&#039;,&lt;br /&gt;
	q15180 = &#039;union des républiques socialistes soviétiques&#039;,&lt;br /&gt;
	q15864 = &#039;royaume uni des pays-bas&#039;, --(1815-1839)&lt;br /&gt;
	q16635 = &#039;guam&#039;,&lt;br /&gt;
	q16641 = &#039;samoa américaines&#039;,&lt;br /&gt;
	q16644 = &#039;îles mariannes du nord&#039;,&lt;br /&gt;
	q16957 = &#039;république démocratique allemande&#039;,&lt;br /&gt;
	q17012 = &#039;guadeloupe&#039;,&lt;br /&gt;
	q17054 = &#039;martinique&#039;,&lt;br /&gt;
	q17063 = &#039;mayotte&#039;,&lt;br /&gt;
	q17070 = &#039;la réunion&#039;,&lt;br /&gt;
	q18221 = &#039;îles turques-et-caïques&#039;,&lt;br /&gt;
	q20135 = &#039;grand-duché de hesse&#039;,&lt;br /&gt;
	q21203 = &#039;aruba&#039;,&lt;br /&gt;
	q23635 = &#039;bermudes&#039;,&lt;br /&gt;
	q25228 = &#039;anguilla&#039;,&lt;br /&gt;
	q25230 = &#039;guernesey&#039;,&lt;br /&gt;
	q25279 = &#039;curaçao&#039;,&lt;br /&gt;
	q25305 = &#039;îles vierges britanniques&#039;,&lt;br /&gt;
	q25362 = &#039;saint-barthélemy&#039;,&lt;br /&gt;
	q26273 = &#039;sint maarten&#039;,&lt;br /&gt;
	q26988 = &#039;îles cook&#039;,&lt;br /&gt;
	q27306 = &#039;royaume de prusse&#039;,&lt;br /&gt;
	q27561 = &#039;pays-bas caribéens&#039;,&lt;br /&gt;
	q28513 = &#039;autriche-hongrie&#039;,&lt;br /&gt;
	q29520 = &#039;chine&#039;, -- &amp;quot;monde chinois&amp;quot;...&lt;br /&gt;
	q29999 = &#039;pays-bas&#039;, -- &amp;quot;royaume&amp;quot;..&lt;br /&gt;
	q30971 = &#039;polynésie française&#039;,&lt;br /&gt;
	q31057 = &#039;île norfolk&#039;,&lt;br /&gt;
	q31063 = &#039;île christmas&#039;,&lt;br /&gt;
	q31747 = &#039;État libre dIrlande&#039;,&lt;br /&gt;
	q33788 = &#039;nouvelle-calédonie&#039;,&lt;br /&gt;
	q33946 = &#039;tchécoslovaquie&#039;,&lt;br /&gt;
	q34020 = &#039;niue&#039;,&lt;br /&gt;
	q34266 = &#039;empire russe&#039;,&lt;br /&gt;
	q34617 = &#039;saint-pierre-et-miquelon&#039;,&lt;br /&gt;
	q35086 = &#039;géorgie du sud-et-les îles sandwich du sud&#039;,&lt;br /&gt;
	q35555 = &#039;wallis-et-futuna&#039;,&lt;br /&gt;
	q35672 = &#039;îles pitcairn&#039;,&lt;br /&gt;
	q36004 = &#039;îles cocos&#039;,&lt;br /&gt;
	q36704 = &#039;yougoslavie&#039;,&lt;br /&gt;
	q36823 = &#039;tokelau&#039;,&lt;br /&gt;
	q37024 = &#039;serbie-et-monténégro&#039;,&lt;br /&gt;
	q40362 = &#039;république arabe sahraouie démocratique&#039;,&lt;br /&gt;
	q41304 = &#039;république de weimar&#039;,&lt;br /&gt;
	q42585 = &#039;royaume de bohême&#039;,&lt;br /&gt;
	q43287 = &#039;empire allemand&#039;,&lt;br /&gt;
	q43448 = &#039;territoire britannique de l\&#039;océan indien&#039;,&lt;br /&gt;
	q45670 = &#039;portugal&#039;, -- Royaume de Portugal (1139-1910)&lt;br /&gt;
	q83286 = &#039;yougoslavie&#039;,&lt;br /&gt;
	q126125 = &#039;saint-martin&#039;,&lt;br /&gt;
	q129003 = &#039;terres australes et antarctiques françaises&#039;,&lt;br /&gt;
	q129286 = &#039;raj britannique&#039;, -- Raj britannique&lt;br /&gt;
	q131198 = &#039;îles heard-et-macdonald&#039;,&lt;br /&gt;
	q131964 = &#039;autriche&#039;, -- Empire d&#039;Autriche (1804-1867)&lt;br /&gt;
	q153015 = &#039;royaume de saxe&#039;,&lt;br /&gt;
	q154195 = &#039;royaume de bavière&#039;,&lt;br /&gt;
	q155570 = &#039;grand-duché de saxe-weimar-eisenach&#039;,&lt;br /&gt;
	q157013 = &#039;principauté de hohenzollern-sigmaringen&#039;,&lt;br /&gt;
	q159631 = &#039;royaume de wurtemberg&#039;,&lt;br /&gt;
	q161885 = &#039;royaume de grande-bretagne&#039;,&lt;br /&gt;
	q164079 = &#039;royaume de hanovre&#039;,&lt;br /&gt;
	q165154 = &#039;royaume de sardaigne&#039;, -- (1324-1861)&lt;br /&gt;
	q172579 = &#039;royaume d\&#039;italie&#039;,  -- Royaume d&#039;Italie (1861-1946)&lt;br /&gt;
	q174193 = &#039;royaume-uni de grande bretagne et d\&#039;irlande&#039;,&lt;br /&gt;
	q186320 = &#039;grand-duché de bade&#039;,&lt;br /&gt;
	q191077 = &#039;yougoslavie&#039;,&lt;br /&gt;
	q192184 = &#039;sainte-hélène, ascension et tristan da cunha&#039;,&lt;br /&gt;
	q217169 = &#039;rhodésie&#039;,&lt;br /&gt;
	q219060 = &#039;palestine&#039;,&lt;br /&gt;
	q310293 = &#039;sarre&#039;,&lt;br /&gt;
	q326029 = &#039;duché de brunswick&#039;,&lt;br /&gt;
	q533534 = &#039;autriche&#039;, -- Cisleithanie&lt;br /&gt;
	q673865 = &#039;principauté de hohenzollern-hechingen&#039;,&lt;br /&gt;
	q693669 = &#039;grand-duché d\&#039;oldenbourg&#039;,&lt;br /&gt;
	q700283 = &#039;pays-bas autrichiens&#039;, --(1713-1795)&lt;br /&gt;
	q713750 = &#039;allemagne&#039;, -- RFA : faut-il prévoir un modèle distinct ?&lt;br /&gt;
	q756617 = &#039;danemark&#039;, -- Royaume du Danemark en entier&lt;br /&gt;
	q1140152 = &#039;République irlandaise&#039;,&lt;br /&gt;
	q1206012 = &#039;allemagne&#039;, -- Reich allemand (1871-1943)&lt;br /&gt;
	q1775277 = &#039;dominion de l\&#039;inde&#039;, -- dominion britannique (1947-1950)&lt;br /&gt;
	q2305208 = &#039;russie&#039;, -- Russie soviétique (1917-1922)&lt;br /&gt;
	q2577303 = &#039;royaume de sardaigne&#039;, -- (1720-1861)&lt;br /&gt;
	q13426199 = &#039;république de chine&#039;, -- République de Chine (1912-1949)&lt;br /&gt;
	q25395037 = &#039;royaume de hongrie&#039;, --(1867-1918)&lt;br /&gt;
	q107258515 = &#039;iran&#039; --État impérial d&#039;Iran (1925-1979)&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Biblio/R%C3%A9f%C3%A9rences&amp;diff=337</id>
		<title>Module:Biblio/Références</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Biblio/R%C3%A9f%C3%A9rences&amp;diff=337"/>
		<updated>2024-09-20T14:19:34Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- Les fonctions de ce module sont destinées à être utilisées par un autre module. -- Leur paramètre d&amp;#039;entrée est une table simple (args), voire une chaine (oclc, bnf...)  local References = { }   local Outils = require( &amp;#039;Module:Outils&amp;#039; ) local validTextArg = Outils.validTextArg local Commun = require &amp;#039;Module:Biblio/Commun&amp;#039; -- local Date = require( &amp;#039;Module:Date&amp;#039; ) -- chargé uniquement si nécessaire   --[[ ISBN-10 and ISSN validator code calculates checksu... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Les fonctions de ce module sont destinées à être utilisées par un autre module.&lt;br /&gt;
-- Leur paramètre d&#039;entrée est une table simple (args), voire une chaine (oclc, bnf...)&lt;br /&gt;
&lt;br /&gt;
local References = { }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local Outils = require( &#039;Module:Outils&#039; )&lt;br /&gt;
local validTextArg = Outils.validTextArg&lt;br /&gt;
local Commun = require &#039;Module:Biblio/Commun&#039;&lt;br /&gt;
-- local Date = require( &#039;Module:Date&#039; ) -- chargé uniquement si nécessaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in checkisbn().&lt;br /&gt;
If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes,&lt;br /&gt;
spaces and other non-isxn characters.&lt;br /&gt;
]]&lt;br /&gt;
function References.is_valid_isxn( isxn_str, len )&lt;br /&gt;
	local temp = 0&lt;br /&gt;
	isxn_str = isxn_str:gsub( &#039;x&#039;, &#039;X&#039; )&lt;br /&gt;
	isxn_str = { isxn_str:byte(1, len) }	-- make a table of bytes&lt;br /&gt;
	len = len+1								-- adjust to be a loop counter&lt;br /&gt;
	for i, v in ipairs( isxn_str ) do		-- loop through all of the bytes and calculate the checksum&lt;br /&gt;
		if v == string.byte( &#039;X&#039; ) then		-- if checkdigit is X&lt;br /&gt;
			temp = temp + 10 * ( len - i )	-- it represents 10 decimal&lt;br /&gt;
		else&lt;br /&gt;
			temp = temp + tonumber( string.char( v ) ) * ( len - i )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return temp % 11 == 0					-- returns true if calculation result is zero&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.isValidIsmn10( ismn )&lt;br /&gt;
	local temp = 9&lt;br /&gt;
	if ismn:match( &#039;M%d%d%d%d%d%d%d%d%d&#039; ) then&lt;br /&gt;
		for i = 2, 10 do&lt;br /&gt;
			temp = temp + ( 1 + 2 * ( i % 2 ) ) * ismn:sub( i, i )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return temp % 10 == 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Teste si une chaine ISBN est valide&lt;br /&gt;
function References.checkisbn( isbn_str )&lt;br /&gt;
	if type( isbn_str ) == &#039;string&#039; then&lt;br /&gt;
		isbn_str = isbn_str:gsub( &#039;[-%s]&#039;, &#039;&#039; )	-- supprime les traits d’union et espaces&lt;br /&gt;
&lt;br /&gt;
		if isbn_str:len() == 10 then&lt;br /&gt;
			if isbn_str:match( &#039;^%d+[xX]?$&#039; ) then&lt;br /&gt;
				return  References.is_valid_isxn( isbn_str, 10 )&lt;br /&gt;
			end&lt;br /&gt;
		elseif isbn_str:match( &#039;^97[89]&#039; ) then&lt;br /&gt;
			return References.checkean13( isbn_str )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Teste si une chaine EAN 13 est valide&lt;br /&gt;
function References.checkean13( ean_str )&lt;br /&gt;
	if type( ean_str ) == &#039;string&#039; then&lt;br /&gt;
		ean_str = ean_str:gsub( &#039;[-%s]&#039;, &#039;&#039; )	-- supprime les traits d’union et espaces&lt;br /&gt;
		if ean_str:len() == 13 and ean_str:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
			local temp, strVal = 0&lt;br /&gt;
			ean_str = { ean_str:byte( 1, 13 ) }&lt;br /&gt;
			for i = 1, #ean_str do&lt;br /&gt;
				strVal = tonumber( string.char( ean_str[i] ) )&lt;br /&gt;
				temp = temp + ( 3 - 2 * ( i % 2 ) ) * strVal&lt;br /&gt;
			end&lt;br /&gt;
			return temp % 10 == 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.checkissn( issn_str )&lt;br /&gt;
	if type( issn_str ) == &#039;string&#039; then&lt;br /&gt;
		issn_str = issn_str:gsub( &#039;[%s]&#039;, &#039;&#039; )&lt;br /&gt;
		if issn_str:match( &#039;^%d%d%d%d%-%d%d%d[%dxX]$&#039; ) then&lt;br /&gt;
			issn_str = issn_str:gsub( &#039;-&#039;, &#039;&#039; )		-- supprime les traits d’union et espaces&lt;br /&gt;
			return References.is_valid_isxn( issn_str, 8 )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Teste si une chaine ISMN est valide&lt;br /&gt;
function References.checkismn( ismn_str )&lt;br /&gt;
	if type( ismn_str ) == &#039;string&#039; then&lt;br /&gt;
		ismn_str = ismn_str:gsub( &#039;[-%s]&#039;, &#039;&#039; )	-- supprime les traits d’union et espaces&lt;br /&gt;
&lt;br /&gt;
		if ismn_str:len() == 10 then&lt;br /&gt;
			return  References.isValidIsmn10( ismn_str, 10 )&lt;br /&gt;
		elseif ismn_str:match( &#039;^9790&#039; ) then&lt;br /&gt;
			return References.checkean13( ismn_str )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isbn13to9( isbn_str )&lt;br /&gt;
	if type( isbn_str ) == &#039;string&#039; then&lt;br /&gt;
		local isbn = isbn_str:gsub( &#039;[-%s]&#039;, &#039;&#039; )&lt;br /&gt;
		if isbn:len() == 13 and isbn:sub( 1, 3 ) == &#039;978&#039; then&lt;br /&gt;
			isbn = isbn:sub( 4, 12 )&lt;br /&gt;
			return isbn&lt;br /&gt;
		elseif isbn:len() == 10 then&lt;br /&gt;
			return isbn:sub( 1, -2 )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return isbn_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isbn13to10( isbn_str )&lt;br /&gt;
	local isbn = isbn13to9( isbn_str )&lt;br /&gt;
	if isbn ~= isbn_str and isbn_str:len() ~= 10 then&lt;br /&gt;
		for i = 0, 9 do&lt;br /&gt;
			if References.checkisbn( isbn .. i ) then&lt;br /&gt;
				return isbn .. i&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return isbn .. &#039;X&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return isbn_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.isbn13to10( frame )&lt;br /&gt;
	local args = Outils.extractArgs( frame )&lt;br /&gt;
	return isbn13to10( args[1] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.same_isbn( isbn1, isbn2 )&lt;br /&gt;
	if type( isbn1 ) ~= &#039;string&#039; or type( isbn2 ) ~= &#039;string&#039; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	-- remove dash and spaces&lt;br /&gt;
	isbn1 = isbn1:gsub( &#039;[-%s]&#039;, &#039;&#039; )&lt;br /&gt;
	isbn2 = isbn2:gsub( &#039;[-%s]&#039;, &#039;&#039; )&lt;br /&gt;
    -- check if both isbn are valid&lt;br /&gt;
	if not ( References.checkisbn(isbn1) and References.checkisbn(isbn2) ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	-- compare isbn&lt;br /&gt;
	return isbn13to9( isbn1 ) == isbn13to9( isbn2 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function doublonIsxn( isxn, liste2, xnCode)&lt;br /&gt;
	if type( References[ &#039;same_&#039; .. xnCode ] ) == &#039;function&#039; then&lt;br /&gt;
		for k, v in ipairs( liste2 ) do&lt;br /&gt;
			if References[ &#039;same_&#039; .. xnCode ]( isxn, v ) then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatIsxn( args, validArg, xnCode, invalideCateg, checkFunction, formatLien, page )&lt;br /&gt;
	local validArg = validArg or function ( ... ) return validTextArg( args, ... ) end&lt;br /&gt;
&lt;br /&gt;
	local liste = { }&lt;br /&gt;
	local liste2 = { }&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local invalide = &#039;&amp;lt;sup style=&amp;quot;color:red&amp;quot;&amp;gt;[à vérifier : &#039; .. invalideCateg .. &#039;]&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local isxnErr = validArg( xnCode .. &#039; erroné&#039; )&lt;br /&gt;
	local XN = xnCode:upper()&lt;br /&gt;
	local isxn = validArg( xnCode, XN, xnCode .. &#039;1&#039;, XN .. &#039;1&#039; )&lt;br /&gt;
	if isxnErr or isxn then&lt;br /&gt;
		local isxnErrSanitised = isxnErr and isxnErr:match( &#039;%d[%d -]+[%dXx]&#039; )&lt;br /&gt;
		if isxnErrSanitised then&lt;br /&gt;
			local lien = formatLien:format( isxnErrSanitised, isxnErr )&lt;br /&gt;
			table.insert( liste, lien .. &#039; (édité erroné)&#039; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- boucle sur les isxn2, 3...&lt;br /&gt;
		while isxn do&lt;br /&gt;
			-- vérification de la validité de l&#039;ISXN&lt;br /&gt;
			local isxnValid = checkFunction( isxn )&lt;br /&gt;
&lt;br /&gt;
			-- préparation du texte à afficher&lt;br /&gt;
			if isxnValid then&lt;br /&gt;
				local lien = formatLien:format( isxn, isxn )&lt;br /&gt;
				table.insert( liste, lien )&lt;br /&gt;
				if type( args.categ ) == &#039;table&#039; and doublonIsxn( isxn, liste2, xnCode) then&lt;br /&gt;
					args.categ[ xnCode .. &#039;Dupliqué&#039; ] = isxn&lt;br /&gt;
				end&lt;br /&gt;
				table.insert( liste2, isxn )&lt;br /&gt;
			else&lt;br /&gt;
				table.insert( liste, isxn .. invalide )&lt;br /&gt;
				if type( args.categ ) == &#039;table&#039; then&lt;br /&gt;
					-- pour les propriétés isbnInvalid, issnInvalid et eanInvalid&lt;br /&gt;
					args.categ[ xnCode .. &#039;Invalid&#039; ] = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			i = i + 1&lt;br /&gt;
			isxn = validArg( xnCode .. i, XN .. i )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if args[&#039;sansLabel&#039;] then&lt;br /&gt;
			page = &#039;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			page = page .. &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return page .. mw.text.listToText( liste )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:ISBN&lt;br /&gt;
-- renvoie une liste de chaines formant le résultat du modèle une fois concaténées&lt;br /&gt;
function References.isbn( args, validArg )&lt;br /&gt;
	return formatIsxn(&lt;br /&gt;
		args,&lt;br /&gt;
		validArg,&lt;br /&gt;
		&#039;isbn&#039;,&lt;br /&gt;
		&#039;[[:Catégorie:Page avec ISBN invalide|ISBN invalide]]&#039;,&lt;br /&gt;
		References.checkisbn,&lt;br /&gt;
		&#039;[[Spécial:Ouvrages de référence/%s|&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;]]&#039;,&lt;br /&gt;
		&#039;[[International Standard Book Number|ISBN]]&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:EAN&lt;br /&gt;
-- renvoie une liste de chaines formant le résultat du modèle une fois concaténées&lt;br /&gt;
function References.ean( args, validArg )&lt;br /&gt;
	return formatIsxn(&lt;br /&gt;
		args,&lt;br /&gt;
		validArg,&lt;br /&gt;
		&#039;ean&#039;,&lt;br /&gt;
		&#039;[[:Catégorie:Page avec EAN invalide|EAN invalide]]&#039;,&lt;br /&gt;
		References.checkean13,&lt;br /&gt;
		&#039;[[Spécial:Ouvrages de référence/%s|&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;]]&#039;,&lt;br /&gt;
		&#039;[[EAN 13|EAN]]&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:ISSN&lt;br /&gt;
-- renvoie une liste de chaines formant le résultat du modèle une fois concaténées&lt;br /&gt;
function References.issn( args, validArg )&lt;br /&gt;
	return formatIsxn(&lt;br /&gt;
		args,&lt;br /&gt;
		validArg,&lt;br /&gt;
		&#039;issn&#039;,&lt;br /&gt;
		&#039;[[:Catégorie:Page avec ISSN invalide|ISSN invalide]]&#039;,&lt;br /&gt;
		References.checkissn,&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;plainlinks noarchive&amp;quot;&amp;gt;[https://portal.issn.org/resource/issn/%s %s]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		&#039;[[International Standard Serial Number|ISSN]]&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.eissn( args, validArg )&lt;br /&gt;
	return formatIsxn(&lt;br /&gt;
		args,&lt;br /&gt;
		validArg,&lt;br /&gt;
		&#039;e-issn&#039;,&lt;br /&gt;
		&#039;[[:Catégorie:Page avec ISSN invalide|ISSN invalide]]&#039;,&lt;br /&gt;
		References.checkissn,&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;plainlinks noarchive&amp;quot;&amp;gt;[https://portal.issn.org/resource/issn/%s %s]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		&#039;[[International Standard Serial Number#ISSN électronique|e-ISSN]]&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:ISMN&lt;br /&gt;
-- renvoie une liste de chaines formant le résultat du modèle une fois concaténées&lt;br /&gt;
function References.ismn( args, validArg )&lt;br /&gt;
	return formatIsxn(&lt;br /&gt;
		args,&lt;br /&gt;
		validArg,&lt;br /&gt;
		&#039;ismn&#039;,&lt;br /&gt;
		&#039;[[:Catégorie:Page avec ISMN invalide|ISMN invalide]]&#039;,&lt;br /&gt;
		References.checkismn,&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		&#039;[[International Standard Music Number|ISMN]]&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- fonctions liant des bases de données externes&lt;br /&gt;
local function databaseExterne( num, lienIinterne, lienExterne, complement, texteAffiche )&lt;br /&gt;
	if Outils.notEmpty( num ) then&lt;br /&gt;
		local numEncoded&lt;br /&gt;
		if num:find( &#039;[^a-zA-Z0-9/_.~-]&#039; ) then&lt;br /&gt;
			numEncoded = mw.uri.encode( num, &#039;PATH&#039; ):gsub( &#039;%%2F&#039;, &#039;/&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			numEncoded = num&lt;br /&gt;
		end&lt;br /&gt;
		local adresse =&lt;br /&gt;
				lienIinterne&lt;br /&gt;
				.. &#039;&amp;amp;nbsp;&amp;lt;span class=&amp;quot;plainlinks noarchive nowrap&amp;quot;&amp;gt;[&#039;&lt;br /&gt;
				.. &#039;https://&#039; .. lienExterne .. numEncoded .. ( complement or &#039;&#039; )&lt;br /&gt;
				.. &#039; &#039;&lt;br /&gt;
				.. mw.text.nowiki( texteAffiche or num )&lt;br /&gt;
				.. &#039;]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		return adresse&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.arkId( base )&lt;br /&gt;
	--  Nice Opaque Identifiern utilisé par les formats Ark pour générer une clé&lt;br /&gt;
	base = tostring( base )&lt;br /&gt;
	if base then&lt;br /&gt;
		local xdigits = &#039;0123456789bcdfghjkmnpqrstvwxz&#039;&lt;br /&gt;
		local sum = 0&lt;br /&gt;
		local position&lt;br /&gt;
		for i = 1, base:len() do&lt;br /&gt;
			position = xdigits:find( base:sub( i, i ), 1, true ) or 1&lt;br /&gt;
			sum = sum + i * ( position - 1 )&lt;br /&gt;
		end&lt;br /&gt;
		local index = sum % 29 + 1&lt;br /&gt;
		return xdigits:sub( index, index )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.arxiv( arxiv )&lt;br /&gt;
	if Outils.trim( arxiv ) then&lt;br /&gt;
		return databaseExterne(&lt;br /&gt;
			arxiv,&lt;br /&gt;
			&#039;[[arXiv]]&#039;,&lt;br /&gt;
			&#039;arxiv.org/abs/&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.asin( asin )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		asin,&lt;br /&gt;
		&#039;[[Amazon Standard Identification Number|ASIN]]&#039;,&lt;br /&gt;
		&#039;www.amazon.fr/s/?url=search-alias&amp;amp;lang=fr&amp;amp;field-keywords=&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.bibcode( bibcode )&lt;br /&gt;
	return databaseExterne( bibcode, &#039;[[Bibcode]]&#039;, &#039;ui.adsabs.harvard.edu/abs/&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.bnf( bnf )&lt;br /&gt;
	bnf = Outils.trim( bnf )&lt;br /&gt;
	if bnf then&lt;br /&gt;
		local texte = &#039;&#039;&lt;br /&gt;
		local category = &#039;&#039;&lt;br /&gt;
		local bnfId = bnf:upper():match( &#039;BNF(%d+%w)&#039; ) or&lt;br /&gt;
			bnf:lower():match( &#039;cb(%d+%w)&#039; ) or&lt;br /&gt;
			bnf:match( &#039;^%d+%w&#039; )&lt;br /&gt;
&lt;br /&gt;
		if bnfId then&lt;br /&gt;
			-- bnf contient une suite de chiffres qui peut être un ark valide&lt;br /&gt;
			local base = bnfId:sub( 1, 8 )&lt;br /&gt;
			local arkId = References.arkId( &#039;cb&#039; .. base )&lt;br /&gt;
			if bnfId:len() == 8 then&lt;br /&gt;
				-- il manque la clé, on l&#039;ajoute&lt;br /&gt;
				bnf = base .. arkId&lt;br /&gt;
				texte = base&lt;br /&gt;
			elseif bnfId:len() &amp;gt; 8 and bnfId:sub( 9, 9 ) == arkId then&lt;br /&gt;
				-- ark valide&lt;br /&gt;
				bnf = bnfId:sub( 1, 9 )&lt;br /&gt;
				texte = base&lt;br /&gt;
			else&lt;br /&gt;
				-- ark qui semble non valide&lt;br /&gt;
				bnf = bnfId&lt;br /&gt;
				texte = bnfId&lt;br /&gt;
				category = &#039;[[Catégorie:Recension temporaire pour le modèle Ouvrage|bnf]]&#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- le paramètre ne semble pas un ark valide&lt;br /&gt;
			texte = bnf&lt;br /&gt;
			category = &#039;[[Catégorie:Recension temporaire pour le modèle Ouvrage|bnf]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- dans tous les cas on renvoie l&#039;adresse, on catégorise juste pour vérifier ce qui ne va pas&lt;br /&gt;
		local lien = databaseExterne(&lt;br /&gt;
			bnf,&lt;br /&gt;
			&#039;[[Bibliothèque nationale de France|BNF]]&#039;,&lt;br /&gt;
			&#039;catalogue.bnf.fr/ark:/12148/cb&#039;,&lt;br /&gt;
			&#039;.public&#039;,&lt;br /&gt;
			texte&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		return lien .. category&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.citeseerx( citeseerx )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		citeseerx,&lt;br /&gt;
		&#039;[[CiteSeerX|CiteSeer&amp;lt;sup&amp;gt;x&amp;lt;/sup&amp;gt;]]&#039;,&lt;br /&gt;
		&#039;citeseerx.ist.psu.edu/viewdoc/summary?doi=&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.dnb( dnb )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		dnb,&lt;br /&gt;
		&#039;[[Bibliothèque nationale allemande|DNB]]&#039;,&lt;br /&gt;
		&#039;d-nb.info/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.doi( doi, paywall )&lt;br /&gt;
	local result = databaseExterne(&lt;br /&gt;
		doi,&lt;br /&gt;
		&#039;[[Digital Object Identifier|DOI]]&#039;,&lt;br /&gt;
		&#039;dx.doi.org/&#039;&lt;br /&gt;
	)&lt;br /&gt;
	if result and paywall then&lt;br /&gt;
		result = result .. ( References.indicationIconeAcces( paywall ) or &#039;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.jfm( jfm )&lt;br /&gt;
	return databaseExterne( jfm, &#039;[[zbMATH|JFM]]&#039;, &#039;zbmath.org/?format=complete&amp;amp;q=an:&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.jstor( jstor )&lt;br /&gt;
	return databaseExterne( jstor, &#039;[[JSTOR]]&#039;, &#039;jstor.org/stable/&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.hal( hal )&lt;br /&gt;
	if Outils.trim( hal ) then&lt;br /&gt;
		if not hal:match( &#039;^%w+%-%d&#039; ) then&lt;br /&gt;
			hal = &#039;hal-&#039; .. hal&lt;br /&gt;
		end&lt;br /&gt;
		return databaseExterne(&lt;br /&gt;
			hal,&lt;br /&gt;
			&#039;[[HAL (archive ouverte)|HAL]]&#039;,&lt;br /&gt;
			&#039;hal.science/&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.hdl( hdl, paywall )&lt;br /&gt;
	local result = databaseExterne( hdl, &#039;[[Handle System|hdl]]&#039;, &#039;hdl.handle.net/&#039; )&lt;br /&gt;
	if result and paywall then&lt;br /&gt;
		result = result .. ( References.indicationIconeAcces( paywall ) or &#039;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.lccn( lccn )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		lccn,&lt;br /&gt;
		&#039;[[Numéro de contrôle de la Bibliothèque du Congrès|LCCN]]&#039;,&lt;br /&gt;
		&#039;lccn.loc.gov/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.libris( libris )&lt;br /&gt;
	return databaseExterne( libris, &#039;[[LIBRIS]]&#039;, &#039;libris.kb.se/bib/&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.mathreviews( mathreviews )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		mathreviews,&lt;br /&gt;
		&#039;[[Mathematical Reviews|MR]]&#039;,&lt;br /&gt;
		&#039;www.ams.org/mathscinet-getitem?mr=&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.oclc( oclc )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		oclc,&lt;br /&gt;
		&#039;[[Online Computer Library Center|OCLC]]&#039;,&lt;br /&gt;
		&#039;worldcat.org/fr/title/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.pmcid( pmcid )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		pmcid,&lt;br /&gt;
		&#039;[[PubMed Central|PMCID]]&#039;,&lt;br /&gt;
		&#039;www.ncbi.nlm.nih.gov/pmc/articles/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.pmid( pmid )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		pmid,&lt;br /&gt;
		&#039;[[PubMed|PMID]]&#039;,&lt;br /&gt;
		&#039;www.ncbi.nlm.nih.gov/pubmed/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.s2cid( s2cid )&lt;br /&gt;
	return databaseExterne( s2cid, &#039;[[Semantic Scholar|S2CID]]&#039;, &#039;api.semanticscholar.org/CorpusID:&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.sbn( sbn )&lt;br /&gt;
	local id = ( sbn or &#039;&#039; ):upper():gsub( &#039;\\&#039;, &#039;&#039; ):gsub( &#039;^ITICCU&#039;, &#039;&#039; )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		id,&lt;br /&gt;
		&#039;[[Service bibliothécaire national]]&#039;,&lt;br /&gt;
		&#039;opac.sbn.it/bid/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.sudoc( sudoc )&lt;br /&gt;
	return databaseExterne(&lt;br /&gt;
		sudoc,&lt;br /&gt;
		&#039;[[Système universitaire de documentation|SUDOC]]&#039;,&lt;br /&gt;
		&#039;www.sudoc.fr/&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.wikisource( wikisource )&lt;br /&gt;
	if Outils.notEmpty( wikisource ) then&lt;br /&gt;
		return &#039;[[s:&#039; .. wikisource .. &#039;|lire sur Wikisource]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.zbl( zbl )&lt;br /&gt;
	return databaseExterne( zbl, &#039;[[Zentralblatt MATH|zbMATH]]&#039;, &#039;zbmath.org/?q=an:&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- enLigne est destiné à remplacer &amp;quot;lire en ligne&amp;quot;, &amp;quot;écouter en ligne&amp;quot;, &amp;quot;présentation en ligne&amp;quot;&lt;br /&gt;
function References.enLigne( args, validArg )&lt;br /&gt;
	local validArg = validArg or function ( ... ) return validTextArg( args, ... ) end&lt;br /&gt;
	local lang, esp = &#039;&#039;, &#039;&#039;&lt;br /&gt;
	if args.langue then&lt;br /&gt;
		local Langue = require( &#039;Module:Langue&#039; )&lt;br /&gt;
		lang = Langue.indicationMultilingue{ args.langue, args.langue2, args.langue3 }&lt;br /&gt;
		esp = &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local url = validArg( &#039;lien&#039;, &#039;url&#039; )&lt;br /&gt;
	local urlSimple = true&lt;br /&gt;
&lt;br /&gt;
	if url then&lt;br /&gt;
		if url:match( &#039;^https?://&#039; ) or url:match( &#039;^ftp://&#039; ) or url:match( &#039;^//&#039; ) then&lt;br /&gt;
			url = url:gsub( &#039;%[&#039;, &#039;%%5B&#039; ):gsub( &#039;%]&#039;, &#039;%%5D&#039; ):gsub( &#039; &#039;, &#039;%%20&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			urlSimple = false&lt;br /&gt;
		end&lt;br /&gt;
	elseif validArg( &#039;doi&#039; ) then&lt;br /&gt;
		url = &#039;https://dx.doi.org/&#039; .. mw.uri.encode( args.doi )&lt;br /&gt;
	else&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lien&lt;br /&gt;
	if urlSimple then&lt;br /&gt;
		local texte = validArg( &#039;texte&#039; ) or &#039;en ligne&#039;&lt;br /&gt;
		lien = &#039;[&#039; .. url .. &#039; &#039; .. texte .. &#039;]&#039;&lt;br /&gt;
	else&lt;br /&gt;
		lien = url&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local date = validArg( &#039;date&#039;, &#039;consulté le&#039; )&lt;br /&gt;
&lt;br /&gt;
	if date then&lt;br /&gt;
		return lang .. esp .. lien .. &#039;&amp;amp;nbsp;(consultée le&#039; .. date .. &#039;)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return lang .. esp .. lien&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.affichageLiensExternes( args, validArg, lireEnLigne, consulteLe )&lt;br /&gt;
	local validArg = validArg or function ( ... ) return validTextArg( args, ... ) end&lt;br /&gt;
&lt;br /&gt;
		local liensExternes = {}&lt;br /&gt;
		local function minsert( ... )&lt;br /&gt;
			for i = 1, select( &#039;#&#039;, ... ) do&lt;br /&gt;
				local sel = select( i, ... )&lt;br /&gt;
				if sel then&lt;br /&gt;
					liensExternes[#liensExternes+1] = sel&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- isbn et issn&lt;br /&gt;
		minsert(&lt;br /&gt;
			References.isbn( args, validArg ),&lt;br /&gt;
			References.ean( args, validArg ),&lt;br /&gt;
			References.issn( args, validArg ),&lt;br /&gt;
			References.eissn( args, validArg ),&lt;br /&gt;
			References.ismn( args, validArg )&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		minsert(&lt;br /&gt;
			References.oclc( args.oclc ),&lt;br /&gt;
			References.bnf ( args.bnf ),&lt;br /&gt;
			References.sbn ( args.sbn ),&lt;br /&gt;
			References.lccn( args.lccn ),&lt;br /&gt;
			References.dnb ( args.dnb ),&lt;br /&gt;
			References.pmid( validArg( &#039;pmid&#039;, &#039;PMID&#039; ) ),&lt;br /&gt;
			References.pmcid ( validArg( &#039;pmcid&#039;, &#039;pmc&#039;  ) ),&lt;br /&gt;
			References.doi( validArg( &#039;doi&#039;, &#039;DOI&#039; ), validArg( &#039;accès doi&#039; ) ),&lt;br /&gt;
			References.jstor( args.jstor ),&lt;br /&gt;
			References.bibcode( args.bibcode ),&lt;br /&gt;
			References.mathreviews( validArg( &#039;math reviews&#039;, &#039;mathreviews&#039;, &#039;mr&#039; ) ),&lt;br /&gt;
			References.zbl( validArg( &#039;zbl&#039;, &#039;zbmath&#039; ) ),&lt;br /&gt;
			References.arxiv( args.arxiv ),&lt;br /&gt;
			References.hal( args.hal ),&lt;br /&gt;
			References.hdl( args.hdl, validArg( &#039;accès hdl&#039;) ),&lt;br /&gt;
			References.s2cid( args.s2cid ),&lt;br /&gt;
			References.libris( args.libris ),&lt;br /&gt;
			References.citeseerx( args.citeseerx ),&lt;br /&gt;
			References.jfm( args.jfm ),&lt;br /&gt;
			References.asin( args.asin ),&lt;br /&gt;
			References.sudoc( args.sudoc ),&lt;br /&gt;
			References.wikisource( args.wikisource )&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		minsert(&lt;br /&gt;
			References.enLigne{ url = args[&#039;résumé&#039;], texte = &#039;résumé&#039; },&lt;br /&gt;
			References.enLigne{ url = args[&#039;présentation en ligne&#039;], texte = &#039;présentation en ligne&#039; },&lt;br /&gt;
			References.enLigne{ url = args[&#039;écouter en ligne&#039;], texte = &#039;écouter en ligne&#039; }&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		local url = validArg( &#039;lire en ligne&#039;, &#039;url texte&#039;, &#039;url&#039;, &#039;texte&#039; )&lt;br /&gt;
		local paywall = validArg( &#039;accès url&#039; )&lt;br /&gt;
		if url and lireEnLigne then&lt;br /&gt;
			local archiveUrl = validArg( &#039;archive-url&#039;, &#039;archiveurl&#039; )&lt;br /&gt;
			if archiveUrl then&lt;br /&gt;
				if not ( string.match( archiveUrl, &#039;^http&#039; ) or string.match( archiveUrl, &#039;^//&#039; ) ) then&lt;br /&gt;
					archiveUrl = &#039;http://&#039; .. archiveUrl&lt;br /&gt;
				end&lt;br /&gt;
				local textArchive = &#039;archive&#039;&lt;br /&gt;
				local dateArchive = validArg( &#039;archive-date&#039;, &#039;archivedate&#039; )&lt;br /&gt;
				if dateArchive then&lt;br /&gt;
					textArchive = &#039;archive du &#039; .. Commun.inscriptionDate{ date = dateArchive }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				minsert(&lt;br /&gt;
					&#039;&amp;lt;span class=&amp;quot;noarchive&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. References.enLigne{	url = url,	texte = &#039;lire en ligne&#039; }&lt;br /&gt;
					.. &#039; &amp;lt;small class=&amp;quot;cachelinks&amp;quot;&amp;gt;&amp;amp;#91;[&#039;&lt;br /&gt;
					.. archiveUrl .. &#039; &#039; .. textArchive&lt;br /&gt;
					.. &#039;]&amp;amp;#93;&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
					.. ( paywall and References.indicationIconeAcces( paywall ) or &#039;&#039; )&lt;br /&gt;
					.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
					.. ( References.indicationDeFormat( args[&#039;format électronique&#039;] ) or &#039;&#039; )&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				minsert(&lt;br /&gt;
					References.enLigne{	url = url,	texte = &#039;lire en ligne&#039; }&lt;br /&gt;
					.. ( paywall and References.indicationIconeAcces( paywall ) or &#039;&#039; )&lt;br /&gt;
					.. ( References.indicationDeFormat( args[&#039;format électronique&#039;] ) or &#039;&#039; )&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- consulté le&lt;br /&gt;
		if consulteLe then&lt;br /&gt;
			local consult = validArg( &#039;consulté le&#039;, &#039;accessdate&#039;, &#039;access-date&#039;, &#039;Consulté le&#039;, &#039;consulté&#039;, &#039;consultée le&#039; )&lt;br /&gt;
			if consult then&lt;br /&gt;
				local prefixe = &#039;consulté le &#039;&lt;br /&gt;
&lt;br /&gt;
				if consult:sub( -1, -1 ) == &#039;.&#039; then&lt;br /&gt;
					consult = consult:sub( 1, -2 )&lt;br /&gt;
				end&lt;br /&gt;
				consult = consult:lower()&lt;br /&gt;
&lt;br /&gt;
				local Date = require( &#039;Module:Date&#039; )&lt;br /&gt;
				local dateWikifiee = Date.modeleDate{&lt;br /&gt;
					consult,&lt;br /&gt;
					nolinks = true,&lt;br /&gt;
					afficherErreurs = true,&lt;br /&gt;
					categoriserErreurs = &#039;Page contenant un paramètre « consulté le » avec une date invalide&#039;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if dateWikifiee:match( &#039;datetime=&amp;quot;%d%d%d%d&amp;quot;&#039; ) or dateWikifiee:match( &#039;datetime=&amp;quot;%d%d%d%d%-%d%d&amp;quot;&#039; ) then&lt;br /&gt;
					prefixe = &#039;consulté en &#039;&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				minsert( prefixe .. dateWikifiee )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #liensExternes &amp;gt; 0 then&lt;br /&gt;
			return &#039; &amp;lt;small style=&amp;quot;line-height:1em;&amp;quot;&amp;gt;(&#039; .. table.concat( liensExternes, &#039;, &#039; ) .. &#039;)&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.indicationDeFormat( format )&lt;br /&gt;
	if not Outils.trim( format ) then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	local listeFormat = {&lt;br /&gt;
		audio = { &amp;quot;audio&amp;quot;, &amp;quot;Fichiers audio au format MP3, Ogg...&amp;quot; },&lt;br /&gt;
		bat   = { &amp;quot;bat&amp;quot;,   &amp;quot;Script de traitement par lot (batch)&amp;quot; },&lt;br /&gt;
		djvu  = { &amp;quot;DjVu&amp;quot;,  &amp;quot;Document au format DjVu&amp;quot; },&lt;br /&gt;
		doc   = { &amp;quot;doc&amp;quot;,   &amp;quot;Document Microsoft Word&amp;quot; },&lt;br /&gt;
		epub  = { &amp;quot;EPUB&amp;quot;,  &amp;quot;Document au format Epub&amp;quot; },&lt;br /&gt;
		flash = { &amp;quot;flash&amp;quot;, &amp;quot;Animation vectorielle au format Macromedia Flash&amp;quot; },&lt;br /&gt;
		hlp   = { &amp;quot;hlp&amp;quot;,   &amp;quot;Fichier HeLP (aide) datant de Microsoft Windows 3.1&amp;quot; },&lt;br /&gt;
		html  = { &amp;quot;html&amp;quot;,  &amp;quot;Fichier au format Hypertext Markup Language (HTML)&amp;quot; },&lt;br /&gt;
		image = { &amp;quot;image&amp;quot;, &amp;quot;Image au format JPEG, PNG, GIF...&amp;quot; },&lt;br /&gt;
		java  = { &amp;quot;java&amp;quot;,  &amp;quot;Applet Java&amp;quot; },&lt;br /&gt;
		mov   = { &amp;quot;mov&amp;quot;,   &amp;quot;Vidéo au format Apple QuickTime&amp;quot; },&lt;br /&gt;
		mp3   = { &amp;quot;MP3&amp;quot;,   &amp;quot;Fichier audio au format MP3&amp;quot; },&lt;br /&gt;
		odt   = { &amp;quot;odt&amp;quot;,   &amp;quot;Document au format OpenDocument&amp;quot; },&lt;br /&gt;
		ogg   = { &amp;quot;ogg&amp;quot;,   &amp;quot;Fichier au format conteneur Ogg&amp;quot; },&lt;br /&gt;
		pdf   = { &amp;quot;PDF&amp;quot;,   &amp;quot;Document au format Portable Document Format (PDF) d&#039;Adobe&amp;quot; },&lt;br /&gt;
		php   = { &amp;quot;php&amp;quot;,   &amp;quot;Script PHP&amp;quot; },&lt;br /&gt;
		pl    = { &amp;quot;pl&amp;quot;,    &amp;quot;Script Practical Extraction and Report Language (Perl)&amp;quot; },&lt;br /&gt;
		ppt   = { &amp;quot;ppt&amp;quot;,   &amp;quot;Présentation Microsoft PowerPoint&amp;quot; },&lt;br /&gt;
		ps    = { &amp;quot;ps&amp;quot;,    &amp;quot;Fichier de description vectorielle au format PostScript&amp;quot; },&lt;br /&gt;
		radio = { &amp;quot;radio&amp;quot;, &amp;quot;Radio au format MPEG, AVI...&amp;quot; },&lt;br /&gt;
		rar   = { &amp;quot;rar&amp;quot;,   &amp;quot;Document compressé au format RAR&amp;quot; },&lt;br /&gt;
		rm    = { &amp;quot;rm&amp;quot;,    &amp;quot;Vidéo au format RealMedia, RealAudio...&amp;quot; },&lt;br /&gt;
		rtf   = { &amp;quot;RTF&amp;quot;,   &amp;quot;Document texte en Rich Text Format (RTF)&amp;quot; },&lt;br /&gt;
		svg   = { &amp;quot;SVG&amp;quot;,   &amp;quot;Image vectorielle au format Scalable Vector Graphics (SVG)&amp;quot; },&lt;br /&gt;
		sxi   = { &amp;quot;sxi&amp;quot;,   &amp;quot;Présentation OpenOffice.org Impress&amp;quot; },&lt;br /&gt;
		sxw   = { &amp;quot;sxw&amp;quot;,   &amp;quot;Document OpenOffice.org Writer&amp;quot; },&lt;br /&gt;
		tex   = { &amp;quot;TeX&amp;quot;,   &amp;quot;Document TeX&amp;quot; },&lt;br /&gt;
		txt   = { &amp;quot;txt&amp;quot;,   &amp;quot;Fichier au format texte brut&amp;quot; },&lt;br /&gt;
		video = { &amp;quot;vidéo&amp;quot;, &amp;quot;Vidéo au format MPEG, AVI...&amp;quot; },&lt;br /&gt;
		xls   = { &amp;quot;xls&amp;quot;,   &amp;quot;Classeur Microsoft Excel&amp;quot; },&lt;br /&gt;
		xml   = { &amp;quot;XML&amp;quot;,   &amp;quot;Document au format Extensible Markup Language (XML)&amp;quot; },&lt;br /&gt;
		zip   = { &amp;quot;zip&amp;quot;,   &amp;quot;Archive au format Zip&amp;quot; },&lt;br /&gt;
	}&lt;br /&gt;
	listeFormat[&#039;vidéo&#039;] = listeFormat.video&lt;br /&gt;
	listeFormat.vid = listeFormat.video&lt;br /&gt;
	listeFormat.htm = listeFormat.html&lt;br /&gt;
	listeFormat.excel = listeFormat.xls&lt;br /&gt;
	listeFormat.powerpoint = listeFormat.ppt&lt;br /&gt;
	listeFormat.word = listeFormat.doc&lt;br /&gt;
	listeFormat.aud = listeFormat.audio&lt;br /&gt;
&lt;br /&gt;
	local tabFormat = listeFormat[ string.lower( format ) ]&lt;br /&gt;
	if tabFormat then&lt;br /&gt;
		return (&lt;br /&gt;
			&#039; &amp;lt;abbr class=&amp;quot;abbr indicateur-format format-&#039; .. tabFormat[1]:lower() .. &#039;&amp;quot; &#039;&lt;br /&gt;
			.. &#039;title=&amp;quot;&#039; .. tabFormat[2] .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. mw.text.nowiki( &#039;[&#039; .. tabFormat[1] .. &#039;]&#039; ) .. &#039;&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- teste si le suffixe est suivi d&#039;une précision (ex : pdf 6 Mo)&lt;br /&gt;
		local ext, texte = string.match( format, &amp;quot;^([%S]+) (.+)$&amp;quot;)&lt;br /&gt;
		if ext and listeFormat[ string.lower( ext ) ] then&lt;br /&gt;
			return References.indicationDeFormat( ext ) .. &#039; &#039; .. texte&lt;br /&gt;
		else&lt;br /&gt;
			return &#039; &amp;amp;#91;&#039; .. format .. &#039;&amp;amp;#93;&#039;  -- &#039;&amp;amp;#91;&#039; = &#039;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&#039;,  &#039;&amp;amp;#93;&#039; = &#039;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&#039;,&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function References.indicationIconeAcces( paywall )&lt;br /&gt;
	local val = string.lower( paywall ) -- nettoyage qui devrait être suffisant&lt;br /&gt;
&lt;br /&gt;
	if val == &#039;payant&#039; then&lt;br /&gt;
		return &#039; [[File:Lock-red-alt-2.svg|9px|link=|alt=Accès payant|Accès payant au document]]&#039;&lt;br /&gt;
	elseif val == &#039;libre&#039; then&lt;br /&gt;
		return &#039; [[File:Lock-green.svg|9px|link=|alt=Accès libre|Accès libre au document]]&#039;&lt;br /&gt;
	elseif val == &#039;limité&#039; then&lt;br /&gt;
		return &#039; [[File:Lock-gray-alt-2.svg|9px|link=|alt=Accès limité|Accès limité au document]]&#039;&lt;br /&gt;
	elseif val == &#039;inscription&#039; then&lt;br /&gt;
		return &#039; [[File:Lock-gray-alt-2.svg|9px|link=|alt=Inscription nécessaire|Inscription nécessaire pour accéder au document]]&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return References&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Autres_projets/styles.css&amp;diff=336</id>
		<title>Modèle:Autres projets/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Autres_projets/styles.css&amp;diff=336"/>
		<updated>2024-09-20T14:18:37Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « .autres-projets &amp;gt; .titre { 	text-align: center; 	margin: 0.2em 0; } .autres-projets &amp;gt; ul { 	margin: 0; 	padding: 0; } .autres-projets &amp;gt; ul &amp;gt; li { 	list-style: none; 	margin: 0.2em 0; 	text-indent: 0; 	padding-left: 24px; 	min-height: 20px; 	text-align: left; 	display: block; } .autres-projets &amp;gt; ul &amp;gt; li &amp;gt; a { 	font-style: italic; } @media (max-width: 720px) { 	.autres-projets {  		float:none; 	} }  /* Catégorie:Sous-page de modèle feuille de style */ »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.autres-projets &amp;gt; .titre {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
}&lt;br /&gt;
.autres-projets &amp;gt; ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.autres-projets &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	text-indent: 0;&lt;br /&gt;
	padding-left: 24px;&lt;br /&gt;
	min-height: 20px;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.autres-projets &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
	.autres-projets { &lt;br /&gt;
		float:none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Catégorie:Sous-page de modèle feuille de style]] */&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Espace&amp;diff=335</id>
		<title>Modèle:Espace</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Espace&amp;diff=335"/>
		<updated>2024-09-20T14:18:20Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;lt;noinclude&amp;gt; {{Documentation}}&amp;lt;!-- Métadonnées (catégories, interwikis, …) en sous-page de documentation --&amp;gt; &amp;lt;/noinclude&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&amp;lt;!-- Métadonnées (catégories, interwikis, …) en sous-page de documentation --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Bases&amp;diff=334</id>
		<title>Module:Bases</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Bases&amp;diff=334"/>
		<updated>2024-09-20T14:17:49Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = {} local wikidata = require &amp;quot;Module:Wikidata&amp;quot; local wdpath = require &amp;quot;Module:Wikidata/Chemin&amp;quot; local langue = require &amp;quot;Module:Langue&amp;quot; local Outils = require &amp;quot;Module:Outils&amp;quot;  local bases = {&amp;quot;architecture&amp;quot;, &amp;quot;art&amp;quot;, &amp;quot;astronomie&amp;quot;, &amp;quot;audiovisuel&amp;quot;, &amp;quot;bande dessinée&amp;quot;, &amp;quot;géographie&amp;quot;, &amp;quot;jeu&amp;quot;, &amp;quot;jeu vidéo&amp;quot;, &amp;quot;littérature&amp;quot;, &amp;quot;militaire&amp;quot;, &amp;quot;mode&amp;quot;, &amp;quot;multidisciplinaires&amp;quot;, &amp;quot;musique&amp;quot;, &amp;quot;organisation&amp;quot;, &amp;quot;pornographie&amp;quot;, &amp;quot;recherche&amp;quot;, &amp;quot;religion&amp;quot;, &amp;quot;santé&amp;quot;, &amp;quot;spectacle&amp;quot;, &amp;quot;sport&amp;quot;, &amp;quot;t... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local wikidata = require &amp;quot;Module:Wikidata&amp;quot;&lt;br /&gt;
local wdpath = require &amp;quot;Module:Wikidata/Chemin&amp;quot;&lt;br /&gt;
local langue = require &amp;quot;Module:Langue&amp;quot;&lt;br /&gt;
local Outils = require &amp;quot;Module:Outils&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local bases = {&amp;quot;architecture&amp;quot;, &amp;quot;art&amp;quot;, &amp;quot;astronomie&amp;quot;, &amp;quot;audiovisuel&amp;quot;, &amp;quot;bande dessinée&amp;quot;, &amp;quot;géographie&amp;quot;, &amp;quot;jeu&amp;quot;, &amp;quot;jeu vidéo&amp;quot;, &amp;quot;littérature&amp;quot;, &amp;quot;militaire&amp;quot;, &amp;quot;mode&amp;quot;, &amp;quot;multidisciplinaires&amp;quot;, &amp;quot;musique&amp;quot;, &amp;quot;organisation&amp;quot;, &amp;quot;pornographie&amp;quot;, &amp;quot;recherche&amp;quot;, &amp;quot;religion&amp;quot;, &amp;quot;santé&amp;quot;, &amp;quot;spectacle&amp;quot;, &amp;quot;sport&amp;quot;, &amp;quot;tourisme&amp;quot;, &amp;quot;transport&amp;quot;, &amp;quot;vie publique&amp;quot;, &amp;quot;vivant&amp;quot; }&lt;br /&gt;
local basesHeadername = {&lt;br /&gt;
	[&amp;quot;architecture&amp;quot;] = &amp;quot;à l&#039;architecture&amp;quot;,&lt;br /&gt;
	[&amp;quot;art&amp;quot;] = &amp;quot;aux beaux-arts&amp;quot;,&lt;br /&gt;
	[&amp;quot;astronomie&amp;quot;] = &amp;quot;à l&#039;astronomie&amp;quot;,&lt;br /&gt;
	[&amp;quot;audiovisuel&amp;quot;] = &amp;quot;à l&#039;audiovisuel&amp;quot;,&lt;br /&gt;
	[&amp;quot;bande dessinée&amp;quot;] = &amp;quot;à la bande dessinée&amp;quot;,&lt;br /&gt;
	[&amp;quot;géographie&amp;quot;] = &amp;quot;à la géographie&amp;quot;,&lt;br /&gt;
	[&amp;quot;jeu&amp;quot;] = &amp;quot;au jeu&amp;quot;,&lt;br /&gt;
	[&amp;quot;jeu vidéo&amp;quot;] = &amp;quot;au jeu vidéo&amp;quot;,&lt;br /&gt;
	[&amp;quot;littérature&amp;quot;] = &amp;quot;à la littérature&amp;quot;,&lt;br /&gt;
	[&amp;quot;militaire&amp;quot;] = &amp;quot;aux militaires&amp;quot;,&lt;br /&gt;
	[&amp;quot;mode&amp;quot;] = &amp;quot;à la mode&amp;quot;,&lt;br /&gt;
	[&amp;quot;multidisciplinaires&amp;quot;] = &amp;quot;à plusieurs domaines&amp;quot;,&lt;br /&gt;
	[&amp;quot;musique&amp;quot;] = &amp;quot;à la musique&amp;quot;,&lt;br /&gt;
	[&amp;quot;organisation&amp;quot;] = &amp;quot;aux organisations&amp;quot;,&lt;br /&gt;
	[&amp;quot;pornographie&amp;quot;] = &amp;quot;à la pornographie&amp;quot;,&lt;br /&gt;
	[&amp;quot;recherche&amp;quot;] = &amp;quot;à la recherche&amp;quot;,&lt;br /&gt;
	[&amp;quot;religion&amp;quot;] = &amp;quot;à la religion&amp;quot;,&lt;br /&gt;
	[&amp;quot;santé&amp;quot;] = &amp;quot;à la santé&amp;quot;,&lt;br /&gt;
	[&amp;quot;spectacle&amp;quot;] = &amp;quot;au spectacle&amp;quot;,&lt;br /&gt;
	[&amp;quot;sport&amp;quot;] = &amp;quot;au sport&amp;quot;,&lt;br /&gt;
	[&amp;quot;tourisme&amp;quot;] = &amp;quot;au tourisme&amp;quot;,&lt;br /&gt;
	[&amp;quot;transport&amp;quot;] = &amp;quot;au transport&amp;quot;,&lt;br /&gt;
	[&amp;quot;vie publique&amp;quot;] = &amp;quot;à la vie publique&amp;quot;,&lt;br /&gt;
	[&amp;quot;vivant&amp;quot;] = &amp;quot;au vivant&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- fonctions internes ---&lt;br /&gt;
&lt;br /&gt;
local function langs(property, frame, showfr) &lt;br /&gt;
	local lang_set = {}&lt;br /&gt;
	-- P1629 : élément de la base de la propriété d’identification ; P407 = langue de cette oeuvre ; P305 = code IETF de la langue&lt;br /&gt;
	-- ou alors les qualificatifs de langue de la déclaration « format de l’url » de l’élément de la propriété. &lt;br /&gt;
	for codelang in wdpath.iterate(property, &amp;quot;(P1629/P407|P1630&amp;gt;P407)/P305&amp;quot;) do&lt;br /&gt;
		local lang = codelang:snak().datavalue.value&lt;br /&gt;
		if not showfr and lang == &amp;quot;fr&amp;quot; then&lt;br /&gt;
			lang_set = {}&lt;br /&gt;
			break&lt;br /&gt;
		else&lt;br /&gt;
			--ne pas insérer les doublons&lt;br /&gt;
			lang_set[lang] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #lang_set &amp;gt; 0 then&lt;br /&gt;
		-- TODO : à trier par ordre de nom de langue ?? table.sort&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, _ in pairs(lang_set) do&lt;br /&gt;
			args[#args+1] = k&lt;br /&gt;
		end&lt;br /&gt;
		args.maxLang = 3&lt;br /&gt;
		return langue.indicationMultilingue(args)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function inBase(base, valueToFind)&lt;br /&gt;
	for _, v in ipairs(base) do&lt;br /&gt;
		if v[2] == valueToFind then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- fonctions à ne pas utiliser dans l&#039;espace encyclopédique ---&lt;br /&gt;
&lt;br /&gt;
function p.contient(frame)&lt;br /&gt;
	local property = frame.args[&amp;quot;propriété&amp;quot;] or frame.args.property&lt;br /&gt;
	local basesWithProperty = {}&lt;br /&gt;
	for _, base in ipairs(bases) do&lt;br /&gt;
		if inBase(require(&amp;quot;Module:Bases/&amp;quot; .. base ), property) then&lt;br /&gt;
			table.insert(basesWithProperty, base)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(basesWithProperty, &amp;quot;,&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.count(frame)&lt;br /&gt;
	local TableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
	local name = frame.args.name&lt;br /&gt;
	local bases = require(&amp;quot;Module:Bases/&amp;quot; .. name)&lt;br /&gt;
	return TableTools.size(bases)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentation(frame)&lt;br /&gt;
	local name = frame.args.name&lt;br /&gt;
	local headername = frame.args.headername or name&lt;br /&gt;
	local namebis = frame.args.namebis or headername&lt;br /&gt;
	local categorie = &amp;quot;Page pointant vers des bases relatives &amp;quot; .. headername&lt;br /&gt;
	local bases = require(&amp;quot;Module:Bases/&amp;quot; .. name)&lt;br /&gt;
	local pagesincat = require(&amp;quot;Module:Pagesincat&amp;quot;)&lt;br /&gt;
	local complet = not (frame.args.complet and frame.args.complet == &amp;quot;faux&amp;quot;)&lt;br /&gt;
	local restrict = frame.args.restrict&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	local linesNonFr = {}&lt;br /&gt;
	&lt;br /&gt;
	-- texte d&#039;introduction&lt;br /&gt;
	table.insert(lines , &amp;quot;Modèle à utiliser principalement dans la section [[WP:LE|Liens externes]] d&#039;une page. Il affiche une liste de liens vers des bases de données en rapport avec &amp;quot; .. namebis .. &amp;quot;, associée à la page wikipédia dans laquelle il est appelé ou à l’&#039;&#039;&#039;id&#039;&#039;&#039; spécifique appelé par le modèle. Le paramètre optionnel &amp;lt;code&amp;gt;id=&amp;lt;/code&amp;gt; peut être utilisé pour désigner un élément Wikidata autre que celui de la page de Wikipédia où le modèle est employé.&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;La liste des liens vers les bases est affichée par ordre alphabétique. Les liens vers des bases francophones sont placés en premier.&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;La liste est générée automatiquement à partir des données de l&#039;élément Wikidata relié à la page ou à l’&#039;&#039;&#039;id&#039;&#039;&#039; spécifique appelé par le modèle.&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;Les liens affichables par la base  &amp;quot; .. name .. &amp;quot; sont chacune des &#039;&#039;&#039;propriétés&#039;&#039;&#039; du tableau. Le &#039;&#039;&#039;sujet&#039;&#039;&#039; de ces bases est le lien vers la page wikipédia associée à cette base, ou par défaut d&#039;un wiki d&#039;une autre langue quand il existe. Le modèle cible l&#039;élément dans la base de données depuis l’&#039;&#039;&#039;url&#039;&#039;&#039; de la base, dont le contenu est rédigé dans une ou plusieurs &#039;&#039;&#039;langues&#039;&#039;&#039;.&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;Tout ajout ou suppression de liens dans la base doit passer par [[Wikipédia:Ateliers Bases]].&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;La modification du module se fait à la page [[Module:Bases/&amp;quot; .. name ..&amp;quot;]].&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;Les pages utilisant le modèle sont listées dans la catégorie [[:Catégorie:&amp;quot; .. categorie .. &amp;quot;|&amp;quot; .. categorie .. &amp;quot;]], qui contient actuellement &amp;quot; .. pagesincat.pagesincat{categorie, type=&#039;pages&#039;, mise_en_forme=&#039;oui&#039;} .. &amp;quot; pages.&amp;quot;)&lt;br /&gt;
	table.insert(lines , &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	table.insert(lines , &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(lines , &#039;|-&#039;)&lt;br /&gt;
	table.insert(lines , &#039;! Propriété&#039;)&lt;br /&gt;
	table.insert(lines , &#039;! Sujet&#039;)&lt;br /&gt;
	table.insert(lines , &#039;! Libellé&#039;)&lt;br /&gt;
	table.insert(lines , &#039;! URL&#039;)&lt;br /&gt;
	table.insert(lines , &#039;! Langue&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i, base in pairs(bases) do&lt;br /&gt;
		local texte = base[1]&lt;br /&gt;
		&lt;br /&gt;
		local found&lt;br /&gt;
		if restrict ~= nil then&lt;br /&gt;
			local rawtext = texte&lt;br /&gt;
			if type( rawtext ) == &#039;table&#039; then&lt;br /&gt;
				rawtext = rawtext[1]&lt;br /&gt;
			end&lt;br /&gt;
			local firstletter = string.sub(rawtext , 1, 1)&lt;br /&gt;
&lt;br /&gt;
			if firstletter == &amp;quot;&#039;&amp;quot; then&lt;br /&gt;
				firstletter = string.sub(rawtext , 3, 3)&lt;br /&gt;
			end&lt;br /&gt;
			found = string.find(restrict, string.upper(firstletter))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if restrict == nil or found ~= nil then&lt;br /&gt;
			if type( texte ) == &#039;table&#039; then&lt;br /&gt;
				texte = langue.langue{texte[2], texte = texte[1]}&lt;br /&gt;
			end&lt;br /&gt;
			local propertie = string.sub(base[2], 2)&lt;br /&gt;
			&lt;br /&gt;
			local val = base[2]&lt;br /&gt;
			local label = wikidata.getLabel(base[2])&lt;br /&gt;
			if not label then&lt;br /&gt;
				val = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. base[2] .. &#039; : propriété inconnue&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	 		elseif complet then&lt;br /&gt;
				val = frame:expandTemplate{title=&#039;WD P&#039;, args = {propertie,&#039;pages&#039;} }&lt;br /&gt;
			else&lt;br /&gt;
				val = &#039;[[d:P:&#039; .. base[2] .. &#039;|&#039; .. base[2] ..&#039; &amp;lt;small&amp;gt;(«&amp;amp;nbsp;&#039; .. label .. &#039;&amp;amp;nbsp;»)&amp;lt;/small&amp;gt;]] &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;small&amp;gt;[[:Catégorie:Page utilisant &#039; .. base[2] ..&#039;|catégorie]]&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local lang_str = label and langs(base[2], frame, true) or &amp;quot;&amp;quot;&lt;br /&gt;
			local subject = wikidata.formatStatements{entity = base[2], property = &#039;P1629&#039;} or &#039;&#039;&lt;br /&gt;
			&lt;br /&gt;
			if string.find(lang_str, &amp;quot;fr&amp;quot;) ~= nil then&lt;br /&gt;
				table.insert(lines , &#039;|-&#039;)&lt;br /&gt;
				table.insert(lines , &#039;| &#039; .. val)&lt;br /&gt;
				table.insert(lines , &#039;| &#039; .. subject)&lt;br /&gt;
				table.insert(lines , &#039;| &#039; .. texte)&lt;br /&gt;
				table.insert(lines , &#039;| &#039; .. base[3])&lt;br /&gt;
				table.insert(lines , &#039;| &#039; .. lang_str )&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(linesNonFr , &#039;|-&#039;)&lt;br /&gt;
				table.insert(linesNonFr , &#039;| &#039; .. val)&lt;br /&gt;
				table.insert(linesNonFr , &#039;| &#039; .. subject)&lt;br /&gt;
				table.insert(linesNonFr , &#039;| &#039; .. texte)&lt;br /&gt;
				table.insert(linesNonFr , &#039;| &#039; .. base[3])&lt;br /&gt;
				table.insert(linesNonFr , &#039;| &#039; .. lang_str )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- fusion de bases fr en 1er, puis des autres bases&lt;br /&gt;
	for i, v in ipairs(linesNonFr) do table.insert(lines, v) end&lt;br /&gt;
	table.insert(lines , &#039;|}&#039;)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- fonctions pour l&#039;espace encyclopédique ---&lt;br /&gt;
&lt;br /&gt;
function p.tout_comme_table(frame)&lt;br /&gt;
	local args = Outils.extractArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local keysPrio = {}&lt;br /&gt;
	local keys = {}&lt;br /&gt;
	local valsPrio = {}&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	local valsFinal = {}&lt;br /&gt;
	local tri = args[&amp;quot;tri&amp;quot;] or args[&amp;quot;trie&amp;quot;] or args[&amp;quot;sort&amp;quot;] or &amp;quot;none&amp;quot;&lt;br /&gt;
	local sortBySize = tri == &amp;quot;taille max&amp;quot;&lt;br /&gt;
	local sortBySizeInverse = tri == &amp;quot;taille min&amp;quot;&lt;br /&gt;
	local sortByAlpha = tri == &amp;quot;alphabétique&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	args.noarchive = true&lt;br /&gt;
	args.noinactifcat = true&lt;br /&gt;
	&lt;br /&gt;
	for _, base in ipairs(bases) do&lt;br /&gt;
		if args[base] ~= &amp;quot;-&amp;quot; then&lt;br /&gt;
			local baseArgs = args&lt;br /&gt;
			baseArgs.name = base&lt;br /&gt;
			baseArgs.headername = basesHeadername[base]&lt;br /&gt;
			local texte, taille, len = p.main(baseArgs, true)&lt;br /&gt;
			if taille then&lt;br /&gt;
				if args[base] then&lt;br /&gt;
					local key = args[base] * 100&lt;br /&gt;
					while valsPrio[key] do&lt;br /&gt;
						key = key+ 1&lt;br /&gt;
					end&lt;br /&gt;
					table.insert(keysPrio, key)&lt;br /&gt;
					valsPrio[key] = texte&lt;br /&gt;
				else&lt;br /&gt;
					local key = taille * 1000 + len&lt;br /&gt;
					while vals[key] do&lt;br /&gt;
						key = key + 1&lt;br /&gt;
					end&lt;br /&gt;
					table.insert(keys, key)&lt;br /&gt;
					vals[key] = texte&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(keysPrio)&lt;br /&gt;
	if sortByAlpha then&lt;br /&gt;
		-- ne rien faire&lt;br /&gt;
	elseif sortBySizeInverse then&lt;br /&gt;
		table.sort(keys)&lt;br /&gt;
	else -- par défaut : if sortBySize then&lt;br /&gt;
		table.sort(keys, function(a,b) return a&amp;gt;b end)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, k in ipairs(keysPrio) do table.insert(valsFinal, valsPrio[k]) end&lt;br /&gt;
	for _, k in ipairs(keys) do table.insert(valsFinal, vals[k]) end&lt;br /&gt;
	&lt;br /&gt;
	return valsFinal&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.tout(frame)&lt;br /&gt;
	local valsFinal = p.tout_comme_table(frame)&lt;br /&gt;
&lt;br /&gt;
	local rendu = table.concat(valsFinal, &amp;quot;\n*&amp;quot;)&lt;br /&gt;
	if rendu == &amp;quot;&amp;quot; and mw.title.getCurrentTitle().namespace == 0 and not frame:getParent().args.nocat then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Page utilisant un modèle Bases inactif]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- TODO : surveiller [[phab:T280260]], et lorsque le bug sera corrigé, défaire [[Spécial:Diff/181960530]]&lt;br /&gt;
	-- discussion : [[Discussion Projet:Bases#Petite régression d&#039;affichage : ligne à puce parasite]]&lt;br /&gt;
	&lt;br /&gt;
	return rendu&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame , returnSize)&lt;br /&gt;
	local args = Outils.extractArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	-- Récupération des paramètres, soit ceux passés par le modèle,&lt;br /&gt;
	-- soit ceux passés au modèle&lt;br /&gt;
	local id = Outils.validTextArg(args , &#039;id&#039;, &#039;wikidata&#039;, &#039;entity&#039;, 1)&lt;br /&gt;
	local name = args.name&lt;br /&gt;
	local headername = args.headername or basesHeadername[name]&lt;br /&gt;
	local noarchive = args.noarchive&lt;br /&gt;
	local nocat = args.nocat or mw.title.getCurrentTitle().namespace ~= 0&lt;br /&gt;
	local noinactifcat = nocat or args.noinactifcat&lt;br /&gt;
	local len = 0&lt;br /&gt;
	&lt;br /&gt;
	-- Chargement des données de la base souhaitée&lt;br /&gt;
	local bases = require(&amp;quot;Module:Bases/&amp;quot; .. name)&lt;br /&gt;
&lt;br /&gt;
	-- Récupération des propriétés wikidata de l&#039;entité sélectionné&lt;br /&gt;
	local entityId = id or mw.wikibase.getEntityIdForCurrentPage() or &#039;&#039;&lt;br /&gt;
	if not (mw.wikibase.isValidEntityId(entityId) and mw.wikibase.entityExists(entityId)) then&lt;br /&gt;
		if noinactifcat then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;[[Catégorie:Page utilisant le modèle Bases &amp;quot; .. name .. &amp;quot; inactif]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Pour chaque base dans notre liste, on vérifie si notre entité la possède&lt;br /&gt;
	-- si c&#039;est le cas, on formate et ajoute un lien vers elle dans une liste&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	local valsNonFr = {}&lt;br /&gt;
	for i, base in pairs(bases) do&lt;br /&gt;
		-- Pour gérer les cas comme sur Module:Bases/art où des tables sont dans&lt;br /&gt;
		-- des tables =&amp;gt; langue du titre de la base pour l&#039;accessibilité&lt;br /&gt;
		local nom&lt;br /&gt;
		local texte&lt;br /&gt;
		if type( base[1] ) == &#039;table&#039; then&lt;br /&gt;
			nom = base[1][1]&lt;br /&gt;
			texte = langue.langue{ base[1][2], texte = base[1][1] }&lt;br /&gt;
		else&lt;br /&gt;
			nom = base[1]&lt;br /&gt;
			texte = base[1]&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local val&lt;br /&gt;
		local value = args[nom] or args[base[2]]&lt;br /&gt;
		if value ~= &amp;quot;-&amp;quot; then&lt;br /&gt;
			if value then&lt;br /&gt;
				val = wikidata.getDataValue({snaktype = &#039;value&#039;, excludespecial=true, datatype = &#039;external-id&#039;, datavalue = {value = value } }, {urlpattern = base[3], text = texte})&lt;br /&gt;
			else&lt;br /&gt;
				val = wikidata.formatStatements{entity = entityId, excludespecial=true, text = texte, property = base[2], urlpattern = base[3], numval = 1, addcat = not nocat, qualifier = &#039;P407&#039;, qualifiervalue = &#039;Q150&#039;} or wikidata.formatStatements{entity = entityId, text = texte, property = base[2], urlpattern = base[3], numval = 1, addcat = not nocat}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if val and val:sub(1, 1) ~= &amp;quot;-&amp;quot; then&lt;br /&gt;
			local lang_str = langs and langs(base[2], frame, false)&lt;br /&gt;
&lt;br /&gt;
			if lang_str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table.insert(valsNonFr, lang_str .. &amp;quot;&amp;amp;nbsp;&amp;quot; .. val)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(vals, val)&lt;br /&gt;
			end&lt;br /&gt;
			if returnSize then&lt;br /&gt;
				len = len + string.len(nom)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- fusion de bases fr en 1er, puis des autres bases&lt;br /&gt;
	for i, v in ipairs(valsNonFr) do table.insert(vals, v) end&lt;br /&gt;
	&lt;br /&gt;
	-- On catégorise si l&#039;entité ne possède aucune des bases listés&lt;br /&gt;
	if #vals == 0 then&lt;br /&gt;
		if noinactifcat then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
		 	return &amp;quot;[[Catégorie:Page utilisant le modèle Bases &amp;quot; ..  name .. &amp;quot; inactif]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Ajout du label si l&#039;id wikidata a été précisé manuellement&lt;br /&gt;
	local entityInfo = &#039;&#039;&lt;br /&gt;
	if id then&lt;br /&gt;
		local label = mw.wikibase.getLabel(entityId)&lt;br /&gt;
		local link = wikidata.siteLink(entityId)&lt;br /&gt;
		if label then&lt;br /&gt;
			if link then&lt;br /&gt;
				entityInfo = &#039; (pour [[&#039; .. link .. &#039;|&#039; .. label  .. &#039;]])&#039;&lt;br /&gt;
			else&lt;br /&gt;
				entityInfo = &#039; (pour &#039; .. label  .. &#039;)&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif link then&lt;br /&gt;
			entityInfo = &#039; (pour [[&#039; .. link .. &#039;]])&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Concaténation des liens et formatage final&lt;br /&gt;
	local header = &#039;&#039;&lt;br /&gt;
	if #vals &amp;gt; 1 then&lt;br /&gt;
		header = &amp;quot;Ressources relatives &amp;quot; .. headername .. entityInfo&lt;br /&gt;
	else&lt;br /&gt;
		header = &amp;quot;Ressource relative &amp;quot; .. headername .. entityInfo&lt;br /&gt;
	end&lt;br /&gt;
	local title = wikidata.addLinkBack(header, entityId, &#039;identifiers&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Ajout des catégories qui vont bien&lt;br /&gt;
	local categories = &#039;&#039; &lt;br /&gt;
	if not nocat then&lt;br /&gt;
		categories = &amp;quot;[[Catégorie:Page pointant vers des bases externes]] [[Catégorie:Page pointant vers des bases relatives &amp;quot; .. headername .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- XXX: c&#039;est invalide de mettre un &amp;lt;ul&amp;gt; (block-level) dans un &amp;lt;span&amp;gt; (inline-level)&lt;br /&gt;
	local elementsHtml = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		:addClass(&#039;liste-horizontale&#039;)&lt;br /&gt;
		:addClass(noarchive and &#039;noarchive&#039; or nil)&lt;br /&gt;
		:wikitext(title .. &#039; : &#039;)&lt;br /&gt;
		:tag(&#039;ul&#039;)&lt;br /&gt;
	for _, val in ipairs(vals) do&lt;br /&gt;
		elementsHtml:tag(&#039;li&#039;):wikitext(val):done():wikitext(&#039; &#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if returnSize then&lt;br /&gt;
		len = len + string.len(header)&lt;br /&gt;
		return tostring(elementsHtml:allDone()) .. categories, #vals, len&lt;br /&gt;
	else&lt;br /&gt;
		return tostring(elementsHtml:allDone()) .. categories&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Country_data&amp;diff=333</id>
		<title>Module:Country data</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Country_data&amp;diff=333"/>
		<updated>2024-09-20T14:17:27Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- This module is intended to replace the functionality of {{drapeau2}} and related templates.  It provides several methods, including   local p = {};  local gdata = mw.loadData (&amp;quot;Module:Country data/liste&amp;quot; ) local dates = require &amp;quot;Module:date complexe&amp;quot; local linguistic = require &amp;quot;Module:Linguistique&amp;quot;  local function _getCompetition(c,aaaa) 	local gdomain = mw.loadData ( &amp;quot;Module:Drapeau/Domaine&amp;quot; ) -- chargé seulement sur les articles où ça sert, ça prend... »&lt;/p&gt;
&lt;hr /&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;
		[&#039;cm&#039;] = &amp;quot;à la Coupe du monde&amp;quot;,&lt;br /&gt;
		[&#039;coupedumonde&#039;] = &amp;quot;à la Coupe du monde&amp;quot;,&lt;br /&gt;
		[&#039;ce&#039;] = &amp;quot;au championnat d&#039;Europe&amp;quot;,&lt;br /&gt;
		[&#039;euro&#039;] = &amp;quot;au championnat d&#039;Europe&amp;quot;,&lt;br /&gt;
		[&#039;chm&#039;] = &amp;quot;au championnat du monde&amp;quot;,&lt;br /&gt;
		[&#039;can&#039;] = &amp;quot;à la Coupe des Confédérations&amp;quot;,&lt;br /&gt;
		[&#039;coupedesconfederations&#039;] = &amp;quot;à la Coupe des Confédérations&amp;quot;,&lt;br /&gt;
		[&#039;en&#039;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&#039;jo&#039;] = &amp;quot;aux Jeux olympiques&amp;quot;,&lt;br /&gt;
		[&#039;jp&#039;] = &amp;quot;aux Jeux paralympiques&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local str = symbs[string.lower(c or &#039;&#039;)] 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 &#039;20x15&#039;&lt;br /&gt;
	local border = &#039;border|&#039; &lt;br /&gt;
	&lt;br /&gt;
	if displayformat.border == &#039;-&#039; then&lt;br /&gt;
		border = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not alt then&lt;br /&gt;
		alt = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;flagicon&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
			&#039;[[Fichier:&#039; .. flagfile .. &#039;|&#039; .. size ..&#039;px|&#039; .. border  .. alt ..&#039;|class=noviewer]]&#039; ..&lt;br /&gt;
			&#039;&amp;lt;/span&amp;gt;&#039;;&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 [&#039;2010&#039;] = ou [&#039;2010-05-04&#039;] = &lt;br /&gt;
	if type(data) == &#039;string&#039; 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 == &#039;default&#039;) 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 = &#039;-1000-01-01&#039;&lt;br /&gt;
	for i, j in pairs(data) do&lt;br /&gt;
		if j ~= &#039;default&#039; and dates.before(period, i) and dates.before(i, bestdate) then&lt;br /&gt;
			val = j&lt;br /&gt;
			bestdate = i&lt;br /&gt;
		end -- bestdate est la date la plus récente antérieure ou égale à period, val est la donnée à cette date&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&#039;adjectif, etc.&lt;br /&gt;
	if type(data) == &#039;string&#039; or type(data) == &#039;nil&#039; then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	if type(data) ~= &#039;table&#039; then&lt;br /&gt;
		return error(&#039;mauvais datatabpe &#039; .. 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) ~= &#039;string&#039; 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 = &#039;m&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if not number then&lt;br /&gt;
		number = &#039;s&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if (gender ~= &#039;m&#039; and gender ~= &#039;f&#039;) then&lt;br /&gt;
		return error(&#039;gender devrait être m ou f mais est &#039; .. gender)&lt;br /&gt;
	end&lt;br /&gt;
	if (number ~= &#039;s&#039; and number ~= &#039;p&#039;) then&lt;br /&gt;
		return error(&#039;number devrait être s ou p mais est &#039; .. number)&lt;br /&gt;
	end&lt;br /&gt;
	return getData(data, &#039;adjective&#039;, (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 &#039;m&#039;&lt;br /&gt;
	number = number or &#039;s&#039;&lt;br /&gt;
	if (gender ~= &#039;m&#039; and gender ~= &#039;f&#039;) then&lt;br /&gt;
		return error(&#039;gender devrait être m ou f mais est &#039; .. gender)&lt;br /&gt;
	end&lt;br /&gt;
	if (number ~= &#039;s&#039; and number ~= &#039;p&#039;) then&lt;br /&gt;
		return error(&#039;number devrait être s ou p mais est &#039; .. number)&lt;br /&gt;
	end&lt;br /&gt;
	return getData(data, &#039;demonym&#039;, (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 == &#039;short&#039; then&lt;br /&gt;
		label = getData(data, &#039;shortname&#039;, topic, period)&lt;br /&gt;
	end&lt;br /&gt;
	if not label then&lt;br /&gt;
		label = getData(data, &#039;name&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if (not label) and data.item then&lt;br /&gt;
		label = mw.wikibase.label(getData(data, &#039;item&#039;))&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, &#039;link&#039;, topic, period)&lt;br /&gt;
	if (not link) and data.item then&lt;br /&gt;
		link =  mw.wikibase.label(getData(data, &#039;item&#039;))&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 = &#039;code CIO (en attente)&#039; --require(&#039;Module:Wikidata&#039;)._formatStatements({entity= areadata.item, property= &#039;P984&#039;}) or &#039;??&#039;&lt;br /&gt;
&lt;br /&gt;
	local label = getData(areadata, &#039;name&#039;)&lt;br /&gt;
	local of = linguistic.of(label, areadata.genre)&lt;br /&gt;
	&lt;br /&gt;
	str = mw.ustring.gsub(str, &#039;$de$label&#039;, of)&lt;br /&gt;
	str = mw.ustring.gsub(str, &#039;$label&#039;, label)&lt;br /&gt;
	str = mw.ustring.gsub(str, &#039;$cio&#039;, &#039;cio&#039;) &lt;br /&gt;
&lt;br /&gt;
	if string.find(str, &#039;$gentile&#039;) then&lt;br /&gt;
		local function get(genre) return getData(areadata, &#039;adjective&#039;, genre) end&lt;br /&gt;
		local gentileMS, gentileFS, gentileMP, gentileFP = get(&#039;ms&#039;), get(&#039;fs&#039;), get(&#039;mp&#039;), get(&#039;fp&#039;)&lt;br /&gt;
		str = mw.ustring.gsub(str, &#039;$gentileMS&#039;, gentileMS)&lt;br /&gt;
		str = mw.ustring.gsub(str, &#039;$gentileFS&#039;, gentileFS)&lt;br /&gt;
		str = mw.ustring.gsub(str, &#039;$gentileMP&#039;, gentileMP)&lt;br /&gt;
		str = mw.ustring.gsub(str, &#039;$gentileFP&#039;, 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(&#039;Module:Country data/&#039; .. gdata[zone])&lt;br /&gt;
	else -- si le module existe mais n&#039;est pas dans la liste&lt;br /&gt;
		return require(&#039;Module:Country data/&#039; .. 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, &#039;flag&#039;, flagtype, period)&lt;br /&gt;
	if flagimage then&lt;br /&gt;
		return printFlag(flagimage, &#039;&#039;, 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] == &#039;&#039; 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 &#039;20x15&#039;&lt;br /&gt;
	local flagtype = args.type&lt;br /&gt;
&lt;br /&gt;
	local align = args.align or &#039;left&#039;&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 = &#039;&#039;&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(&#039;lieu non reconnu&#039;)&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 == &#039;-&#039;) 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 .. &#039; &#039; .. competition&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if link then&lt;br /&gt;
		text = &#039;[[&#039; .. link .. &#039;|&#039; .. label .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si les données sont extraites d&#039;un formulaire standard comme module:Drapeau/domain, appliquer des regex&lt;br /&gt;
	if string.match(text, &#039;%$&#039;) 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 == &#039;right&#039; then&lt;br /&gt;
		val = text .. &#039;&amp;amp;nbsp;&#039; .. flag&lt;br /&gt;
	else&lt;br /&gt;
		val = flag .. &#039;&amp;amp;nbsp;&#039; .. 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;
-- fonction appelable avec #invoke&lt;br /&gt;
function p.standarddisplay2(frame)&lt;br /&gt;
	result, success = p.standarddisplay(frame.args[&#039;pays&#039;],frame.args)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&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 = getAdjective(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 = &#039;[[&#039; .. link .. &#039;|&#039; .. str .. &#039;]]&#039;&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;
function p.getNationality(args) -- pour obtenir la nationalité d&#039;une personne sur Wikidata sous forme d&#039;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) == &#039;string&#039; then -- si un seul argument, c&#039;est l&#039;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;
	local linkback = args.linkback&lt;br /&gt;
	&lt;br /&gt;
	-- établit la variable gender pour l&#039;élément&lt;br /&gt;
	local vals = {&lt;br /&gt;
		[&#039;Q6581072&#039;] = &#039;f&#039;,&lt;br /&gt;
		[&#039;Q6581097&#039;] = &#039;m&#039;,&lt;br /&gt;
		default	  = &#039;?&#039;&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 = &#039;P21&#039;, displayformat = &#039;raw&#039;}&lt;br /&gt;
		gender = vals[gender] or vals.default&lt;br /&gt;
	end&lt;br /&gt;
	-- désactivation si date de naissance avant l&#039;Ère contemporaine : trop d&#039;imprécisions et d&#039;anachronismes&lt;br /&gt;
	local mindate = args.mindate or &#039;1789&#039;&lt;br /&gt;
	if mindate ~= &amp;quot;-&amp;quot; then&lt;br /&gt;
		local birthdate = wikidata.formatStatements{entity = item, property = &#039;P569&#039;, displayformat = &#039;raw&#039;, numval = 1}&lt;br /&gt;
                local deathdate = wikidata.formatStatements{entity = item, property = &#039;P570&#039;, displayformat = &#039;raw&#039;, 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 = &#039;P27&#039;,&lt;br /&gt;
			showdate = true,&lt;br /&gt;
			entity = item,&lt;br /&gt;
			conjtype = args.conjtype or &#039;and&#039;,&lt;br /&gt;
			removedupes = true,&lt;br /&gt;
			linktopic = &#039;-&#039;,&lt;br /&gt;
			linkback = linkback,&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 == &#039;?&#039; then -- si inconnu, au masculin&lt;br /&gt;
						g = &#039;m&#039;&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>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Date&amp;diff=332</id>
		<title>Module:Date</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Date&amp;diff=332"/>
		<updated>2024-09-20T14:17:07Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- luacheck: globals mw, no max line length  local fun = {}  local Outils = require &amp;#039;Module:Outils&amp;#039; -- chargement de la base de données répertoriant certaines pages existant ou n&amp;#039;existant pas pour éviter les &amp;quot;ifexist&amp;quot;. local dataLiens local success, resultat = pcall ( mw.loadData, &amp;#039;Module:Date/Data&amp;#039; ) if success then 	dataLiens = resultat else 	-- protection au cas où le sous-module serait mal modifié 	dataLiens = { [&amp;#039;&amp;#039;] = { mois = { aucun = 1000, tous = { 1... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- luacheck: globals mw, no max line length&lt;br /&gt;
&lt;br /&gt;
local fun = {}&lt;br /&gt;
&lt;br /&gt;
local Outils = require &#039;Module:Outils&#039;&lt;br /&gt;
-- chargement de la base de données répertoriant certaines pages existant ou n&#039;existant pas pour éviter les &amp;quot;ifexist&amp;quot;.&lt;br /&gt;
local dataLiens&lt;br /&gt;
local success, resultat = pcall ( mw.loadData, &#039;Module:Date/Data&#039; )&lt;br /&gt;
if success then&lt;br /&gt;
	dataLiens = resultat&lt;br /&gt;
else&lt;br /&gt;
	-- protection au cas où le sous-module serait mal modifié&lt;br /&gt;
	dataLiens = { [&#039;&#039;] = { mois = { aucun = 1000, tous = { 1773, 2014 } }, } }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- nettoie un paramètre non nommé (vire les espaces au début et à la fin)&lt;br /&gt;
-- retourne nil si le texte est vide ou n&#039;est pas du texte. Attention c&#039;est important pour les fonctions qui l&#039;utilisent.&lt;br /&gt;
local trim = Outils.trim&lt;br /&gt;
&lt;br /&gt;
-- Fonction destinée à mettre la première lettre du mois en majuscule :&lt;br /&gt;
-- utilisation de string car aucun mois ne commence par une lettre non ascii en français ou anglais.&lt;br /&gt;
local function ucfirst( str )&lt;br /&gt;
	return str:sub( 1, 1 ):upper() .. str:sub( 2 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local modelePremier = &#039;&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;premier&amp;quot;&amp;gt;1&amp;lt;sup&amp;gt;er&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- liste des mois, écriture exacte et alias, en minuscule&lt;br /&gt;
local listeMois = {&lt;br /&gt;
	{ num = 1,  nJour = 31, abrev = &#039;janv.&#039;,  nom = &#039;janvier&#039;, alias = { &#039;jan.&#039;, &#039;janv.&#039;, &#039;jan&#039;, &#039;janv&#039;, &#039;january&#039; } },&lt;br /&gt;
	{ num = 2,  nJour = 29, abrev = &#039;fév.&#039;,   nom = &#039;février&#039;, alias = { &#039;fevrier&#039;, &#039;fev.&#039;, &#039;fev&#039;, &#039;fév.&#039;, &#039;fév&#039;, &#039;févr&#039;, &#039;févr.&#039;, &#039;february&#039;, &#039;feb&#039;, &#039;feb.&#039; } },&lt;br /&gt;
	{ num = 3,  nJour = 31, abrev = &#039;mars&#039;,   nom = &#039;mars&#039;, alias = { &#039;mar.&#039;, &#039;mar&#039;, &#039;march&#039; } },&lt;br /&gt;
	{ num = 4,  nJour = 30, abrev = &#039;avr.&#039;,   nom = &#039;avril&#039;, alias = { &#039;avr.&#039;, &#039;avr&#039;, &#039;apr&#039;, &#039;april&#039;} },&lt;br /&gt;
	{ num = 5,  nJour = 31, abrev = &#039;mai&#039;,    nom = &#039;mai&#039;, alias = { &#039;may&#039; } },&lt;br /&gt;
	{ num = 6,  nJour = 30, abrev = &#039;juin&#039;,   nom = &#039;juin&#039;, alias = { &#039;jun&#039;, &#039;june&#039; } },&lt;br /&gt;
	{ num = 7,  nJour = 31, abrev = &#039;juill.&#039;, nom = &#039;juillet&#039;, alias = { &#039;juil.&#039;, &#039;juil&#039;, &#039;juill.&#039;, &#039;juill&#039;, &#039;jul&#039;, &#039;july&#039; } },&lt;br /&gt;
	{ num = 8,  nJour = 31, abrev = &#039;août&#039;,   nom = &#039;août&#039;, alias = { &#039;aoû&#039;, &#039;aug&#039;, &#039;august&#039; } },&lt;br /&gt;
	{ num = 9,  nJour = 30, abrev = &#039;sept.&#039;,  nom = &#039;septembre&#039;, alias = { &#039;sept.&#039;, &#039;sept&#039;, &#039;sep.&#039;, &#039;sep&#039;, &#039;september&#039; } },&lt;br /&gt;
	{ num = 10, nJour = 31, abrev = &#039;oct.&#039;,   nom = &#039;octobre&#039;, alias = { &#039;oct.&#039;, &#039;oct&#039;, &#039;october&#039; } },&lt;br /&gt;
	{ num = 11, nJour = 30, abrev = &#039;nov.&#039;,   nom = &#039;novembre&#039;, alias = { &#039;nov.&#039;, &#039;nov&#039;, &#039;november&#039; } },&lt;br /&gt;
	{ num = 12, nJour = 31, abrev = &#039;déc.&#039;,   nom = &#039;décembre&#039;, alias = { &#039;decembre&#039;, &#039;déc.&#039;, &#039;dec.&#039;, &#039;dec&#039;, &#039;déc&#039;, &#039;december&#039; } },&lt;br /&gt;
	aout = { num = 8, nJour = 31, abrev = &#039;aout&#039;, nom = &#039;aout&#039;, alias = { &#039;aou&#039; } },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ajoute les noms, abréviations et alias en tant que clés de listeMois&lt;br /&gt;
for i = 1, 12 do&lt;br /&gt;
	local mois = listeMois[i]&lt;br /&gt;
	listeMois[tostring( i )] = mois&lt;br /&gt;
	if i &amp;lt; 10 then&lt;br /&gt;
		listeMois[&#039;0&#039; .. i] = mois&lt;br /&gt;
	end&lt;br /&gt;
	listeMois[mois.nom] = mois&lt;br /&gt;
	listeMois[mois.abrev] = mois&lt;br /&gt;
	for j = 1, #mois.alias do&lt;br /&gt;
		listeMois[mois.alias[j]] = mois&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
for i = 1, #listeMois.aout.alias do&lt;br /&gt;
	listeMois[listeMois.aout.alias[i]] = listeMois.aout&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local liste_saisons = {&lt;br /&gt;
	{ &#039;printemps&#039;, &#039;spring&#039;, },&lt;br /&gt;
	{ &#039;été&#039;, &#039;summer&#039;, },&lt;br /&gt;
	{ &#039;automne&#039;, &#039;autumn&#039;, },&lt;br /&gt;
	{ &#039;hiver&#039;, &#039;winter&#039;, },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- à partir d&#039;un nom de saison (en français ou en anglais),&lt;br /&gt;
-- retourne son nom canonique (exemple : &amp;quot;été&amp;quot;)&lt;br /&gt;
-- si non reconnu, retourne nil&lt;br /&gt;
function fun.determinationSaison( saison )&lt;br /&gt;
	local s = trim( saison )&lt;br /&gt;
	if s then&lt;br /&gt;
		s = s:gsub( &#039;É&#039;, &#039;é&#039; ):lower()&lt;br /&gt;
		for i = 1, 4 do&lt;br /&gt;
			for j = 1, #liste_saisons[i] do&lt;br /&gt;
				if s == liste_saisons[i][j] then&lt;br /&gt;
					return liste_saisons[i][1]&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- à partir d&#039;un nom de mois (en français ou en anglais), de son numéro ou d&#039;une abréviation,&lt;br /&gt;
-- retourne son nom canonique (exemple : &amp;quot;juin&amp;quot;) et son numéro (exemple : 6)&lt;br /&gt;
-- si non reconnu, retourne nil, nil&lt;br /&gt;
function fun.determinationMois( mois )&lt;br /&gt;
	local result&lt;br /&gt;
&lt;br /&gt;
	local num = tonumber( mois )&lt;br /&gt;
	if num then&lt;br /&gt;
		result = listeMois[num]&lt;br /&gt;
	else&lt;br /&gt;
		local str = trim( mois )&lt;br /&gt;
		if str then&lt;br /&gt;
			result = listeMois[str]&lt;br /&gt;
			if not result then&lt;br /&gt;
				result = listeMois[str:gsub( &#039;É&#039;, &#039;é&#039; ):gsub( &#039;Û&#039;, &#039;û&#039; ):lower()]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result then&lt;br /&gt;
		return result.nom, result.num&lt;br /&gt;
	else&lt;br /&gt;
		return nil, nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- fonction interne à modeleDate, pour déterminer si on peut se passer de faire un ifexist&lt;br /&gt;
local function existDate( dataQualificatif, annee, mois )&lt;br /&gt;
	local data&lt;br /&gt;
	if mois then&lt;br /&gt;
		data = dataQualificatif.mois&lt;br /&gt;
	else&lt;br /&gt;
		data = dataQualificatif.annee&lt;br /&gt;
	end&lt;br /&gt;
	if type( data ) ~= &#039;table&#039; then&lt;br /&gt;
		-- si data n&#039;existe pas c&#039;est que l&#039;on considère qu&#039;il n&#039;y a pas de lien.&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	-- le qualificatif est remplacé par celui de la base de données, ce qui permet des alias.&lt;br /&gt;
	local lien = annee&lt;br /&gt;
	if dataQualificatif.qualificatif ~= &#039;&#039; then&lt;br /&gt;
		lien = lien .. &#039; &#039; .. dataQualificatif.qualificatif&lt;br /&gt;
	end&lt;br /&gt;
	local seul = annee&lt;br /&gt;
	if mois then&lt;br /&gt;
		lien = mois .. &#039; &#039; .. lien&lt;br /&gt;
		seul = ucfirst( mois ) .. &#039; &#039; .. annee&lt;br /&gt;
	end&lt;br /&gt;
	local aucun = tonumber( data.aucun )&lt;br /&gt;
	if aucun and annee &amp;lt;= aucun then&lt;br /&gt;
		-- si l&#039;année est dans la partie &#039;aucun&#039; on teste s&#039;il y a malgré tout un lien isolé&lt;br /&gt;
		if type( data.seul ) == &#039;table&#039; then&lt;br /&gt;
			for i, v in ipairs( data.seul ) do&lt;br /&gt;
				if seul == v or seul == tonumber( v ) then&lt;br /&gt;
					return lien&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- partie aucun et pas de lien =&amp;gt; nil&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif type( data.tous ) == &#039;table&#039; then&lt;br /&gt;
		local tous1, tous2 = tonumber( data.tous[1] ), tonumber( data.tous[2] )&lt;br /&gt;
		if tous1 and tous2 and annee &amp;gt;= tous1 and annee &amp;lt;= tous2 then&lt;br /&gt;
			-- l&#039;année est dans la partie &#039;tous&#039; donc on retourne le lien&lt;br /&gt;
			return lien&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- l&#039;année n&#039;est ni dans la partie aucun, ni dans la partie tous donc il faut tester si la page existe.&lt;br /&gt;
	local cibleLien = mw.title.new( lien )&lt;br /&gt;
	if cibleLien and cibleLien.exists then&lt;br /&gt;
		return lien&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- Supprime le jour de la semaine, et &amp;quot;le&amp;quot; avant une date&lt;br /&gt;
function fun.nettoyageJour( jour )&lt;br /&gt;
	if type( jour ) == &#039;string&#039; then&lt;br /&gt;
		local nomJour = { &#039;[Ll]undi&#039;, &#039;[Mm]ardi&#039;, &#039;[Mm]ercredi&#039;, &#039;[Jj]eudi&#039;, &#039;[Vv]endredi&#039;,&lt;br /&gt;
			&#039;[Ss]amedi&#039;, &#039;[Dd]imanche&#039;, &#039;^ *[Ll]e&#039; }&lt;br /&gt;
		local premier = { &#039;&amp;lt;abbr class=&amp;quot;abbr *&amp;quot; title=&amp;quot;[Pp]remier&amp;quot; *&amp;gt;1&amp;lt;sup&amp;gt;er&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;&#039;, &#039;1&amp;lt;sup&amp;gt;er&amp;lt;/sup&amp;gt;&#039;, &#039;1er&#039; }&lt;br /&gt;
		for i = 1, #nomJour do&lt;br /&gt;
			jour = jour:gsub( nomJour[i], &#039;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		for i = 1, #premier do&lt;br /&gt;
			jour = jour:gsub( premier[i], &#039;1&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		jour = trim( jour )&lt;br /&gt;
	end&lt;br /&gt;
	return jour&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- Sépare une chaine date en une table contenant les champs jour, mois et annee.&lt;br /&gt;
-- la date doit contenir le mois.&lt;br /&gt;
function fun.separationJourMoisAnnee( date )&lt;br /&gt;
	date = trim( date )&lt;br /&gt;
	if date then&lt;br /&gt;
		local function erreur( periode, valeur )&lt;br /&gt;
			return false, &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. periode .. &#039; invalide (&#039; .. valeur .. &#039;)&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local dateAvantCleanup = date&lt;br /&gt;
		local jour, mois, annee, masquerMois, masquerAnnee, separateur&lt;br /&gt;
&lt;br /&gt;
		-- variable pour construire les regex&lt;br /&gt;
		local j = &#039;([0-3]?%d)&#039;                            -- jour&lt;br /&gt;
		local m = &#039;([01]?%d)&#039;                             -- mois numérique&lt;br /&gt;
		local mmm = &#039;([^%s%p%d]+[.]?)&#039;                    -- mois en toute lettre&lt;br /&gt;
		local mmm2 = &#039;([^%s%p%d]+[.]?[-/][^%s%p%d]+[.]?)&#039; -- mois-mois en toute lettre&lt;br /&gt;
		local aj = &#039;(%-?%d+)&#039;                             -- année ou jour&lt;br /&gt;
		local s = &#039;[ ./-]+&#039;                               -- séparateur simple&lt;br /&gt;
		local sep = &#039;([ ./-]+)&#039;                           -- séparateur avec capture, pour le détecter deux fois&lt;br /&gt;
		local moins = &#039;(%-?)&#039;                             -- signe moins pour signifier qu&#039;il ne faut pas afficher cette donnée&lt;br /&gt;
&lt;br /&gt;
		date = fun.nettoyageJour( date )&lt;br /&gt;
		if date == nil then&lt;br /&gt;
			return erreur( &#039;Date&#039;, dateAvantCleanup )&lt;br /&gt;
		end&lt;br /&gt;
		if date:find( &#039;[[&#039;, nil, true ) then&lt;br /&gt;
			date = date&lt;br /&gt;
				-- suppression catégories (doit être exécuté avant le code de suppression des liens)&lt;br /&gt;
					:gsub( &#039;%[%[[Cc]atégorie:.-%]%]&#039;, &#039;&#039; )&lt;br /&gt;
					:gsub( &#039;%[%[[Cc]ategory:.-%]%]&#039;, &#039;&#039; )&lt;br /&gt;
				-- suppression liens&lt;br /&gt;
					:gsub( &#039;%[%[([^%[%]|]*)|?([^%[%]]*)%]%]&#039;, function ( l, t ) return trim( t ) or l end )&lt;br /&gt;
		end&lt;br /&gt;
		date = date&lt;br /&gt;
			-- suppression balises&lt;br /&gt;
				:gsub( &#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039; )&lt;br /&gt;
			-- suppression des espaces insécables&lt;br /&gt;
				-- nbsp&lt;br /&gt;
				:gsub( &#039;\194\160&#039;, &#039; &#039; )&lt;br /&gt;
				:gsub( &#039;&amp;amp;nbsp;&#039;, &#039; &#039; )&lt;br /&gt;
				:gsub( &#039;&amp;amp;#160;&#039;, &#039; &#039; )&lt;br /&gt;
				-- narrow nbsp&lt;br /&gt;
				:gsub( &#039;\226\128\175&#039;, &#039; &#039; )&lt;br /&gt;
				:gsub( &#039;&amp;amp;#8239;&#039;, &#039; &#039; )&lt;br /&gt;
				-- thin space&lt;br /&gt;
				:gsub( &#039;\226\128\137&#039;, &#039; &#039; )&lt;br /&gt;
				:gsub( &#039;&amp;amp;thinsp;&#039;, &#039; &#039; )&lt;br /&gt;
				:gsub( &#039;&amp;amp;#8201;&#039;, &#039; &#039; )&lt;br /&gt;
				-- simple space&lt;br /&gt;
				:gsub( &#039;&amp;amp;#32;&#039;, &#039; &#039; )&lt;br /&gt;
				-- plusieurs espaces (doit être exécuté après les autres remplacements)&lt;br /&gt;
				:gsub( &#039; +&#039;, &#039; &#039; )&lt;br /&gt;
			-- réduction av. J-C pour simplifier un peu les regex&lt;br /&gt;
				:gsub( &#039;(%d+) ?[Aa][Vv]%.? ?[Jj][ .-]*[Cc]%.?&#039;, &#039;-%1&#039; )&lt;br /&gt;
			-- suppression de l&#039;heure dans les dates ISO&lt;br /&gt;
				:gsub( &#039;^+?([%d-]*%d%d%-%d%d)T%d%d[%d:,.+-]*Z?$&#039; , &#039;%1&#039;)&lt;br /&gt;
&lt;br /&gt;
		-- test année seule&lt;br /&gt;
		if date:match( &#039;^&#039;..aj..&#039;$&#039; ) then&lt;br /&gt;
			annee = date:match( &#039;^&#039;..aj..&#039;$&#039; )&lt;br /&gt;
		elseif date:match( &#039;^&#039;..aj..s..aj..moins..&#039;$&#039; ) then&lt;br /&gt;
			-- jj/mm, mm/aaaa ou aaaa/mm&lt;br /&gt;
			local a, separateur, b, sb = date:match( &#039;^&#039;..aj..sep..aj..moins..&#039;$&#039; )&lt;br /&gt;
			a, b = tonumber( a ), tonumber( b )&lt;br /&gt;
			if separateur:match( &#039;^.+%-$&#039; ) then&lt;br /&gt;
				-- probablement mm/-aaaa, année av.JC&lt;br /&gt;
				b = 0 - b&lt;br /&gt;
			end&lt;br /&gt;
			if  a &amp;gt; 12 and ( b &amp;lt; 1 or b &amp;gt; 31 ) or&lt;br /&gt;
				b &amp;gt; 12 and ( a &amp;lt; 1 or a &amp;gt; 31 ) then&lt;br /&gt;
				return erreur( &#039;Date&#039;, dateAvantCleanup )&lt;br /&gt;
			elseif b &amp;lt; 1 or b &amp;gt; 31 then&lt;br /&gt;
				mois, annee, masquerAnnee = a, b, sb&lt;br /&gt;
			elseif a &amp;lt; 1 or a &amp;gt; 31 then&lt;br /&gt;
				annee, mois = a, b&lt;br /&gt;
			elseif b &amp;gt; 12 then&lt;br /&gt;
				return erreur( &#039;Mois&#039;, b )&lt;br /&gt;
			else&lt;br /&gt;
				jour, mois, masquerMois = a, b, sb&lt;br /&gt;
			end&lt;br /&gt;
		elseif date:match( &#039;^&#039;..aj..sep..m..moins..&#039;%2&#039;..aj..moins..&#039;$&#039; ) then&lt;br /&gt;
			-- jj/mm/aaaa ou aaaa/mm/jj&lt;br /&gt;
			jour, separateur, mois, masquerMois, annee, masquerAnnee = date:match( &#039;^&#039;..aj..sep..m..moins..&#039;%2&#039;..aj..moins..&#039;$&#039; )&lt;br /&gt;
			if separateur == &#039;-&#039; and masquerMois == &#039;-&#039; and masquerAnnee == &#039;&#039; and tonumber( annee ) &amp;gt; 0 then&lt;br /&gt;
				-- date au format jj-mm--aaaa type 17-06--44 pour 17 juin 44 av. JC&lt;br /&gt;
				masquerMois = nil&lt;br /&gt;
				annee = 0 - annee&lt;br /&gt;
			end&lt;br /&gt;
		elseif date:match( &#039;^&#039;..j..sep..mmm..moins..&#039;%2&#039;..aj..moins..&#039;$&#039; ) then&lt;br /&gt;
			-- jj mmm aaaa&lt;br /&gt;
			jour, separateur, mois, masquerMois, annee, masquerAnnee = date:match( &#039;^&#039;..j..sep..mmm..moins..&#039;%2&#039;..aj..moins..&#039;$&#039; )&lt;br /&gt;
		elseif date:match( &#039;^&#039;..mmm..s..aj..moins..&#039;$&#039; ) then&lt;br /&gt;
			-- mmm aaaa&lt;br /&gt;
			mois, separateur, annee, masquerAnnee = date:match( &#039;^&#039;..mmm..sep..aj..moins..&#039;$&#039; )&lt;br /&gt;
			if separateur:match( &#039;^.+%-$&#039; ) then&lt;br /&gt;
				annee = &#039;-&#039; .. annee&lt;br /&gt;
			end&lt;br /&gt;
		elseif date:match( &#039;^&#039;..mmm2..s..aj..moins..&#039;$&#039; ) then&lt;br /&gt;
			-- mmm-mmm aaaa&lt;br /&gt;
			mois, separateur, annee, masquerAnnee = date:match( &#039;^&#039;..mmm2..sep..aj..moins..&#039;$&#039; )&lt;br /&gt;
			if separateur:match( &#039;^.+%-$&#039; ) then&lt;br /&gt;
				annee = &#039;-&#039; .. annee&lt;br /&gt;
			end&lt;br /&gt;
		elseif date:match( &#039;^&#039;..j..s..mmm..moins..&#039;$&#039; ) then&lt;br /&gt;
			-- jj mmm&lt;br /&gt;
			jour, mois, masquerMois = date:match( &#039;^&#039;..j..s..mmm..moins..&#039;$&#039; )&lt;br /&gt;
		elseif date:match( &#039;^&#039;..mmm..s..j..&#039;, ?&#039;..aj..&#039;$&#039;) then&lt;br /&gt;
			-- mmm jj, aaaa (format anglo-saxon)&lt;br /&gt;
			mois, jour, annee = date:match( &#039;^&#039;..mmm..s..j..&#039;, ?&#039;..aj..&#039;$&#039;)&lt;br /&gt;
		elseif date:match( &#039;^&#039;..mmm..&#039;$&#039; ) then&lt;br /&gt;
			mois = date&lt;br /&gt;
		else&lt;br /&gt;
			return erreur( &#039;Date&#039;, dateAvantCleanup )&lt;br /&gt;
		end&lt;br /&gt;
		local jn, an = tonumber( jour ), tonumber( annee )&lt;br /&gt;
		if jn and an and ( jn &amp;gt; 31 or jn &amp;lt; 0 or #jour &amp;gt;= 3 ) and an &amp;lt;= 31 then&lt;br /&gt;
			-- cas notamment des date ISO 2015-06-17, -0044-06-17 et -0002-06-17&lt;br /&gt;
			-- inversion du jour et de l&#039;année&lt;br /&gt;
			local temp = annee&lt;br /&gt;
			annee = jour&lt;br /&gt;
			jour = temp&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return fun.validationJourMoisAnnee{&lt;br /&gt;
			jour, mois, annee,&lt;br /&gt;
			masquerAnnee = trim( masquerAnnee ) and true or nil,&lt;br /&gt;
			masquerMois = ( trim( masquerAnnee ) or not annee ) and trim( masquerMois ) and true or nil,&lt;br /&gt;
			-- or nil sert juste à éviter de trainer une valeur false dans tous les tests unitaires.&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		return true, {}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- validationJourMoisAnnee vérifie que les paramètres correspondent à une date valide.&lt;br /&gt;
-- la date peut être dans les paramètres 1 à 3, ou dans des paramètres jour, mois et annee.&lt;br /&gt;
-- La fonction retourne true suivi d&#039;une table avec la date en paramètres nommés (sans accent sur année)&lt;br /&gt;
-- ou false suivi d&#039;un message d&#039;erreur.&lt;br /&gt;
function fun.validationJourMoisAnnee( frame )&lt;br /&gt;
	local args = Outils.extractArgs( frame )&lt;br /&gt;
	local jour, mois, numMois, annee&lt;br /&gt;
	local bjour = args[1] or args[&#039;jour&#039;] or &#039;&#039;&lt;br /&gt;
	local bmois = tostring( args[2] or args[&#039;mois&#039;] or &#039;&#039; )&lt;br /&gt;
	local bannee = args[3] or args[&#039;annee&#039;] or args[&#039;année&#039;] or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	local function erreur( periode, valeur )&lt;br /&gt;
		return false, &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. periode .. &#039; invalide (&#039; .. valeur .. &#039;)&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on traite l&#039;année&lt;br /&gt;
	if Outils.notEmpty( bannee ) then&lt;br /&gt;
		annee = tonumber( bannee )&lt;br /&gt;
		if annee == nil and type( bannee ) == &#039;string&#039; then&lt;br /&gt;
			-- test si l&#039;année contient av. J.-C.&lt;br /&gt;
			annee = bannee:match( &#039;^(%d+) ?[Aa][Vv]%.? ?[Jj][ .-]*[Cc]%.?&#039; )&lt;br /&gt;
			annee = tonumber( annee )&lt;br /&gt;
			if annee then&lt;br /&gt;
				annee = 0 - annee&lt;br /&gt;
			else&lt;br /&gt;
				return erreur( &#039;Année&#039;, bannee )&lt;br /&gt;
			end&lt;br /&gt;
		elseif annee == 0 then&lt;br /&gt;
			return erreur( &#039;Année&#039;, 0 )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		annee = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on traite le mois&lt;br /&gt;
	if Outils.notEmpty( bmois ) then&lt;br /&gt;
		mois, numMois = fun.determinationMois( bmois )&lt;br /&gt;
		if mois == nil then&lt;br /&gt;
			mois = fun.determinationSaison( bmois )&lt;br /&gt;
			if mois == nil then&lt;br /&gt;
				local mois1, sep, mois2 = bmois:match( &#039;^([^%s%p%d]+[.]?)([-/])([^%s%p%d]+[.]?)$&#039; )&lt;br /&gt;
				if mois1 then&lt;br /&gt;
					mois1 = fun.determinationMois( mois1 )&lt;br /&gt;
					mois2 = fun.determinationMois( mois2 )&lt;br /&gt;
					if mois1 == nil or mois2 == nil then&lt;br /&gt;
						return erreur( &#039;Mois&#039;, bmois )&lt;br /&gt;
					end&lt;br /&gt;
					mois = mois1 .. sep .. mois2&lt;br /&gt;
				else&lt;br /&gt;
					return erreur( &#039;Mois&#039;, bmois )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- on traite le jour si présent&lt;br /&gt;
		if Outils.notEmpty( bjour ) then&lt;br /&gt;
			if not numMois then&lt;br /&gt;
				erreur( &#039;Date&#039;, &#039;jour avec saison ou plusieurs mois&#039; )&lt;br /&gt;
			end&lt;br /&gt;
			jour = tonumber( bjour )&lt;br /&gt;
			if jour == nil then&lt;br /&gt;
				jour = tonumber( fun.nettoyageJour( bjour ) )&lt;br /&gt;
			end&lt;br /&gt;
			if jour == nil then&lt;br /&gt;
				return erreur( &#039;Jour&#039;, bjour )&lt;br /&gt;
			end&lt;br /&gt;
			-- on valide que le jour est correct&lt;br /&gt;
			if jour &amp;lt; 1 or jour &amp;gt; 31 then&lt;br /&gt;
				return erreur( &#039;Jour&#039;, bjour )&lt;br /&gt;
			elseif jour &amp;gt; listeMois[numMois].nJour then&lt;br /&gt;
				return erreur( &#039;Jour&#039;, bjour .. &#039; &#039; .. mois )&lt;br /&gt;
			elseif jour == 29 and numMois == 2 and annee and ( math.fmod( annee, 4 ) ~= 0 ) then&lt;br /&gt;
				-- l&#039;année bisextile sur les siècles est toujours acceptée pour être compatible avec les dates juliennes.&lt;br /&gt;
				return erreur( &#039;Jour&#039;, &#039;29 février &#039; .. annee )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- S&#039;il n&#039;y a pas de jour on regarde si la première lettre du mois est en majuscule&lt;br /&gt;
			if bmois:match( &#039;^%u&#039; ) then&lt;br /&gt;
				-- oui, on passe la première lettre en majuscule&lt;br /&gt;
				mois = ucfirst( mois )&lt;br /&gt;
			end&lt;br /&gt;
			-- s&#039;il n&#039;y a pas d&#039;année non plus on retourne le mois simple&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- on teste le jour si présent&lt;br /&gt;
		if Outils.notEmpty( bjour ) then&lt;br /&gt;
			if annee then&lt;br /&gt;
				return erreur( &#039;Mois&#039;, &#039;absent&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				bjour = fun.nettoyageJour( bjour )&lt;br /&gt;
				jour = tonumber( bjour )&lt;br /&gt;
				if jour then&lt;br /&gt;
					if jour &amp;gt; 31 or jour &amp;lt; 1 then&lt;br /&gt;
						annee = jour&lt;br /&gt;
						jour = nil&lt;br /&gt;
					else&lt;br /&gt;
						return erreur( &#039;Date&#039;, &#039;jour seul : &#039; .. bjour )&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					return erreur( &#039;Jour&#039;, bjour )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- vérification de l&#039;absence d&#039;un décalage&lt;br /&gt;
	if annee and annee &amp;lt; 13 and annee &amp;gt; 0 and not jour and ( tonumber( bmois ) or ( not mois and tonumber( args[4] ) ) ) then&lt;br /&gt;
		return false, &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;année improbable (&#039; .. annee .. &#039;)&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local resultat = {&lt;br /&gt;
		jour = jour,&lt;br /&gt;
		mois = mois,&lt;br /&gt;
		numMois = numMois,&lt;br /&gt;
		annee = annee,&lt;br /&gt;
		masquerAnnee = args.masquerAnnee,&lt;br /&gt;
		masquerMois = args.masquerMois,&lt;br /&gt;
	}&lt;br /&gt;
	return true, resultat&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- émule le modèle {{m|Date}}.&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--		1 : jour (numéro ou &amp;quot;1er&amp;quot;) ou la date complète&lt;br /&gt;
--		2 : mois (en toutes lettres) ou spécialité de l&#039;année&lt;br /&gt;
--		3 : année (nombre)&lt;br /&gt;
--		4 : spécialité de l&#039;année&lt;br /&gt;
--		julien : date dans le calendrier julien&lt;br /&gt;
--		compact : affiche le mois sous forme d&#039;abréviation&lt;br /&gt;
--		avJC : non pour désactiver l&#039;affichage de « av. J.-C. » pour les dates négatives&lt;br /&gt;
--		âge : ajoute la durée depuis cette date&lt;br /&gt;
--		agePrefix : préfixe pour l&#039;age, &#039;à &#039; par défaut pour les décès&lt;br /&gt;
--		liens : active les liens par défaut&lt;br /&gt;
--		nolinks : ne met pas de lien sur la date (a précédence sur le paramètre &amp;quot;liens&amp;quot;)&lt;br /&gt;
--		afficherErreurs : en cas d&#039;erreur, si défini à &amp;quot;non&amp;quot; ne retourne pas un message d&#039;erreur, mais le 1er argument inchangé&lt;br /&gt;
--		categoriserErreurs : en cas d&#039;erreur, si défini à &amp;quot;non&amp;quot; ne catégorise pas ; peut aussi être défini avec une catégorie à utiliser à la place de celle par défaut&lt;br /&gt;
--		naissance : ajoute la class &amp;quot;bday&amp;quot;&lt;br /&gt;
--		mort : ajoute la class &amp;quot;dday&amp;quot;&lt;br /&gt;
function fun.modeleDate( frame )&lt;br /&gt;
	local Yesno = require &#039;Module:Yesno&#039;&lt;br /&gt;
&lt;br /&gt;
	local args = Outils.extractArgs( frame )&lt;br /&gt;
	local resultat&lt;br /&gt;
&lt;br /&gt;
	local dateNaissanceMort&lt;br /&gt;
&lt;br /&gt;
	-- analyse des paramètres non nommés (ou paramètres de la date jour, mois, annee)&lt;br /&gt;
	local test, params&lt;br /&gt;
	local arg1, arg2, arg3 = fun.nettoyageJour( args[1] ), trim( args[2] ), trim( args[3] )&lt;br /&gt;
	if type( arg1 ) == &#039;string&#039; and arg3 == nil and ( arg1:match( &#039;[^ ./-][ ./-]+[^ ./-]&#039; ) or arg2 == nil or dataLiens[arg2] or mw.ustring.match( arg2, &#039;%a %a&#039; ) ) then&lt;br /&gt;
		-- la date est dans le premier paramètre&lt;br /&gt;
		test, params = fun.separationJourMoisAnnee( arg1 )&lt;br /&gt;
		if test then&lt;br /&gt;
			dateNaissanceMort = trim( arg2 )&lt;br /&gt;
			if dataLiens[trim( arg2 )] then&lt;br /&gt;
				params.qualificatif = trim( arg2 )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( arg1 ) == &#039;string&#039; and type( arg2 ) == &#039;string&#039; and arg3 ~= nil and ( arg1:match( &#039;[^ ./-][ ./-]+[^ ./-]&#039; ) or dataLiens[arg3] or mw.ustring.match( arg3, &#039;%a %a&#039; ) ) then&lt;br /&gt;
		-- la date est dans le premier paramètre&lt;br /&gt;
		test, params = fun.separationJourMoisAnnee( arg1 )&lt;br /&gt;
		if test then&lt;br /&gt;
			dateNaissanceMort = trim( arg2 )&lt;br /&gt;
			if dataLiens[trim( arg3 )] then&lt;br /&gt;
				params.qualificatif = trim( arg3 )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local function masquerParam( p )&lt;br /&gt;
			-- sépare le signe moins final éventuel signifiant que le paramètre ne doit pas être affiché.&lt;br /&gt;
			if type( p ) ~= &#039;string&#039; then&lt;br /&gt;
				return p, nil&lt;br /&gt;
			end&lt;br /&gt;
			local value, mask = p:match( &#039;^%s*(.-)(%-?)%s*$&#039; )&lt;br /&gt;
			return value, ( mask == &#039;-&#039; or nil )&lt;br /&gt;
		end&lt;br /&gt;
		local cleanArgs = { arg1 or args.jour }&lt;br /&gt;
		cleanArgs[2], cleanArgs.masquerMois = masquerParam( args[2] or args.mois )&lt;br /&gt;
		cleanArgs[3], cleanArgs.masquerAnnee = masquerParam( args[3] or args.annee or args[&#039;année&#039;] )&lt;br /&gt;
&lt;br /&gt;
		-- Si les paramètres ont été envoyés directement, ils ont précédence&lt;br /&gt;
		if args.masquerMois then cleanArgs.masquerMois = args.masquerMois end&lt;br /&gt;
		if args.masquerAnnee then cleanArgs.masquerAnnee = args.masquerAnnee end&lt;br /&gt;
&lt;br /&gt;
		test, params = fun.validationJourMoisAnnee( cleanArgs )&lt;br /&gt;
		if test and dataLiens[trim( args[4] )] then&lt;br /&gt;
			params.qualificatif = trim( args[4] )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- analyse des paramètres nommés&lt;br /&gt;
	if test then&lt;br /&gt;
		params.agePrefix = args.agePrefix&lt;br /&gt;
		if args.qualificatif and dataLiens[args.qualificatif] then&lt;br /&gt;
			params.qualificatif = args.qualificatif&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- julien peut avoir trois valeurs : inactif, format standard (true), format court&lt;br /&gt;
		params.julien = Yesno( args.julien, &#039;court&#039;, false )&lt;br /&gt;
		params.avJC = Yesno( args.avJC )&lt;br /&gt;
&lt;br /&gt;
		if args[&#039;républicain&#039;] and args[&#039;républicain&#039;] ~= &#039;&#039; then&lt;br /&gt;
			if args[&#039;républicain&#039;] == &#039;liens&#039; then&lt;br /&gt;
				params.republicain = &#039;liens&#039;&lt;br /&gt;
			else&lt;br /&gt;
				params.republicain = Yesno( args[&#039;républicain&#039;], false )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			params.republicain = false&lt;br /&gt;
		end&lt;br /&gt;
		if args.dateNaissanceMort and args.dateNaissanceMort ~= &#039;&#039; then&lt;br /&gt;
			dateNaissanceMort = args.dateNaissanceMort&lt;br /&gt;
		elseif args[&#039;dateNaissanceÉvénement&#039;] and args[&#039;dateNaissanceÉvénement&#039;] ~= &#039;&#039; then&lt;br /&gt;
			dateNaissanceMort = args[&#039;dateNaissanceÉvénement&#039;]&lt;br /&gt;
		end&lt;br /&gt;
		if dateNaissanceMort then&lt;br /&gt;
			local testNaissanceMort, paramsNaissanceMort = fun.separationJourMoisAnnee( dateNaissanceMort )&lt;br /&gt;
			if testNaissanceMort then&lt;br /&gt;
				params.anneeNaissanceMort, params.moisNaissanceMort, params.numMoisNaissanceMort, params.jourNaissanceMort = paramsNaissanceMort.annee, paramsNaissanceMort.mois, paramsNaissanceMort.numMois, paramsNaissanceMort.jour&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local listeParam = {&lt;br /&gt;
			age = &#039;âge&#039;,&lt;br /&gt;
			[&#039;âge&#039;] = &#039;âge&#039;,&lt;br /&gt;
			naissance = &#039;naissance&#039;,&lt;br /&gt;
			mort = &#039;mort&#039;,&lt;br /&gt;
			[&#039;événement&#039;] = &#039;événement&#039;,&lt;br /&gt;
			evenement = &#039;evenement&#039;,&lt;br /&gt;
			[&#039;décès&#039;] = &#039;mort&#039;,&lt;br /&gt;
			apJC = &#039;apJC&#039;,&lt;br /&gt;
			nolinks = &#039;nolinks&#039;,&lt;br /&gt;
			compact = &#039;compact&#039;,&lt;br /&gt;
			compacte = &#039;compact&#039;,&lt;br /&gt;
		}&lt;br /&gt;
		for n, v in pairs( listeParam ) do&lt;br /&gt;
			params[v] = params[v] or Yesno( args[n], true, false ) or nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not params.nolinks then&lt;br /&gt;
			local liens = Yesno( args.liens )&lt;br /&gt;
			if liens == nil then&lt;br /&gt;
				-- liens actifs par défaut si qualificatif&lt;br /&gt;
				liens = params.qualificatif and params.qualificatif ~= &amp;quot;&amp;quot; and true or false&lt;br /&gt;
			end&lt;br /&gt;
			params.nolinks = not liens&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- sortie pour les tests unitaire, ou pour débugger&lt;br /&gt;
		if args.debug then&lt;br /&gt;
			return params&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		resultat = fun._modeleDate( params )&lt;br /&gt;
&lt;br /&gt;
	else&lt;br /&gt;
		local yn_afficherErreurs = Yesno( args.afficherErreurs )&lt;br /&gt;
		if yn_afficherErreurs == nil or yn_afficherErreurs == true then&lt;br /&gt;
			resultat = params&lt;br /&gt;
		else&lt;br /&gt;
			resultat = args[1]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
		if currentTitle:inNamespaces( 0, 4, 10, 14, 100 )&lt;br /&gt;
		and not Outils.notEmpty( args.nocat )&lt;br /&gt;
		and not currentTitle.prefixedText:match( &#039;^Modèle:.+/Test$&#039; ) then&lt;br /&gt;
			local categorie&lt;br /&gt;
			local yn_categoriserErreurs = Yesno( args.categoriserErreurs, &#039;custom&#039;, true )&lt;br /&gt;
			if yn_categoriserErreurs == nil or yn_categoriserErreurs == true then&lt;br /&gt;
				categorie = &#039;[[Catégorie:Page utilisant le modèle date avec une syntaxe erronée]]&#039;&lt;br /&gt;
			elseif yn_categoriserErreurs == false then&lt;br /&gt;
				categorie = &#039;&#039;&lt;br /&gt;
			else&lt;br /&gt;
				local nomCategorie = args.categoriserErreurs&lt;br /&gt;
					:gsub( &#039;^%[%[&#039;, &#039;&#039; )&lt;br /&gt;
					:gsub( &#039;%]%]$&#039;, &#039;&#039; )&lt;br /&gt;
					:gsub( &#039;^:?[Cc]atégorie:&#039;, &#039;&#039; )&lt;br /&gt;
					:gsub( &#039;^:?[Cc]atégory:&#039;, &#039;&#039; )&lt;br /&gt;
				categorie = &#039;[[Catégorie:&#039; .. nomCategorie .. &#039;]]&#039;&lt;br /&gt;
			end&lt;br /&gt;
			resultat = resultat .. categorie&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return resultat or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fun._modeleDate( args )&lt;br /&gt;
	local annee, mois, numMois, jour = args.annee, args.mois, args.numMois, args.jour&lt;br /&gt;
	local qualificatif = args.qualificatif&lt;br /&gt;
&lt;br /&gt;
	if ( annee or mois or jour ) == nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on traite l&#039;âge, naissance et mort&lt;br /&gt;
	local agePrefix = args.agePrefix&lt;br /&gt;
	local age = args[&#039;âge&#039;] and fun.age( annee, numMois, jour )&lt;br /&gt;
	local naissance = args.naissance&lt;br /&gt;
	local mort = args.mort&lt;br /&gt;
	local evenement = args[&#039;événement&#039;] or args.evenement&lt;br /&gt;
	if mort and args.anneeNaissanceMort then&lt;br /&gt;
		age = fun.age( args.anneeNaissanceMort, args.numMoisNaissanceMort, args.jourNaissanceMort, annee, numMois, jour )&lt;br /&gt;
		agePrefix = agePrefix or &#039;à &#039; -- faut-il mettre \194\160 ?&lt;br /&gt;
	elseif evenement and args.anneeNaissanceMort then&lt;br /&gt;
		if naissance then&lt;br /&gt;
			age = fun.age( annee, numMois, jour, args.anneeNaissanceMort, args.numMoisNaissanceMort, args.jourNaissanceMort )&lt;br /&gt;
		else&lt;br /&gt;
			age = fun.age(args.anneeNaissanceMort, args.numMoisNaissanceMort, args.jourNaissanceMort,  annee, numMois, jour )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	agePrefix = agePrefix or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	-- on traite le calendrier&lt;br /&gt;
	local gannee, gmois, gjour = annee, numMois, jour   -- date suivant le calendrier grégorien pour &amp;lt;time&amp;gt;&lt;br /&gt;
	local jannee, jmois, jjour = annee, mois, jour      -- date suivant le calendrier julien si necessaire&lt;br /&gt;
	local julienDate, julienSup, julienSep              -- servira éventuellement à afficher la date selon le calendrier julien&lt;br /&gt;
	local gregAprMois, gregAprAn, gregFin               -- message de calendrier grégorien lorsque la date est selon le calendrier julien&lt;br /&gt;
	local dateRepublicaine&lt;br /&gt;
	if annee and jour then&lt;br /&gt;
		local amj = annee * 10000 + numMois * 100 + jour&lt;br /&gt;
		if amj &amp;lt; 15821014 then&lt;br /&gt;
			if annee &amp;gt; 0 then&lt;br /&gt;
				gannee, gmois, gjour = fun.julianToGregorian( annee, numMois, jour )&lt;br /&gt;
			else&lt;br /&gt;
				-- calendrier grégorien proleptique avec année 0.&lt;br /&gt;
				gannee, gmois, gjour = fun.julianToGregorian( annee + 1, numMois, jour )&lt;br /&gt;
			end&lt;br /&gt;
			args.julien = false&lt;br /&gt;
&lt;br /&gt;
		elseif args.julien then&lt;br /&gt;
			gannee, gmois, gjour = fun.julianToGregorian( annee, numMois, jour )&lt;br /&gt;
			annee, mois, jour = gannee, listeMois[gmois].nom, gjour&lt;br /&gt;
			if jjour == 1 then&lt;br /&gt;
				jjour = modelePremier&lt;br /&gt;
			end&lt;br /&gt;
			if args.compact then&lt;br /&gt;
				jmois = listeMois[jmois].abrev&lt;br /&gt;
			end&lt;br /&gt;
			if args.julien == &#039;court&#039; then&lt;br /&gt;
				julienDate = jjour .. &#039; &#039; .. jmois .. &#039; &#039;&lt;br /&gt;
				julienSup = &#039;&amp;lt;sup&amp;gt;[[calendrier julien|jul.]]&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
				if jannee == annee then&lt;br /&gt;
					gregAprMois = &#039;&amp;lt;sup&amp;gt;[[calendrier grégorien|grég.]]&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
				else&lt;br /&gt;
					julienDate = julienDate .. jannee .. &#039; &#039;&lt;br /&gt;
					gregAprAn = &#039;&amp;lt;sup&amp;gt;[[calendrier grégorien|grég.]]&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
				end&lt;br /&gt;
				julienSep = &#039; / &#039;&lt;br /&gt;
			else&lt;br /&gt;
				julienDate = jjour .. &#039; &#039; .. jmois .. &#039; &#039; .. jannee&lt;br /&gt;
				julienSep = &#039; (&#039;&lt;br /&gt;
				gregFin = &#039; [[Passage du calendrier julien au calendrier grégorien|dans le calendrier grégorien]])&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif args.republicain then&lt;br /&gt;
			local DateRep = require &#039;Module:Date républicaine&#039;&lt;br /&gt;
			local RepSansLiens&lt;br /&gt;
			if args.republicain == &#039;liens&#039; then&lt;br /&gt;
				RepSansLiens = false&lt;br /&gt;
			else&lt;br /&gt;
				RepSansLiens = true&lt;br /&gt;
			end&lt;br /&gt;
			dateRepublicaine = DateRep._date_republicaine(&lt;br /&gt;
				RepSansLiens,&lt;br /&gt;
				{ fun.formatRepCal( fun.do_toRepCal{gannee, gmois, gjour} ) }&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if annee and annee &amp;lt; 0 then&lt;br /&gt;
			gannee = gannee + 1&lt;br /&gt;
		end&lt;br /&gt;
		args.julien = false&lt;br /&gt;
		args.republicain = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on génère le résultat&lt;br /&gt;
&lt;br /&gt;
	-- Déclarations des variables&lt;br /&gt;
	local wikiListe = {}                   -- reçoit le texte affiché pour chaque paramètre&lt;br /&gt;
	local iso = {}                         -- reçoit le format date ISO de ce paramètre&lt;br /&gt;
	local texteMois = mois                 -- texte du mois qui sera affiché (éventuellement l&#039;abréviation)&lt;br /&gt;
	if args.compact then&lt;br /&gt;
		if not numMois then&lt;br /&gt;
			-- mois est autre chose qu&#039;un simple mois : saison, mois-mois... auquel cas, pas d&#039;abréviation (provoquait erreur Lua)&lt;br /&gt;
			-- (les abréviations pour le cas &amp;quot;mois[-/]mois&amp;quot; seraient théoriquement possibles, mais ça reste à implémenter)&lt;br /&gt;
		else&lt;br /&gt;
			if args.nolinks then&lt;br /&gt;
				texteMois = &#039;&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;&#039; .. mois .. &#039;&amp;quot;&amp;gt;&#039; .. listeMois[mois].abrev .. &#039;&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
			else&lt;br /&gt;
				texteMois = listeMois[mois].abrev&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	mois = mois and mois:gsub( &#039;aout&#039;, &#039;août&#039; )&lt;br /&gt;
&lt;br /&gt;
	local dataQualificatif, dataCat&lt;br /&gt;
	if not args.nolinks then&lt;br /&gt;
		dataQualificatif = dataLiens[qualificatif or &#039;&#039;]&lt;br /&gt;
		if type( dataQualificatif ) ~= &#039;table&#039; then&lt;br /&gt;
			-- si le qualificatif n&#039;est pas dans la base de données, on crée une table minimum,&lt;br /&gt;
			-- qui imposera un test sur l&#039;année, mais considère qu&#039;il n&#039;y a pas de lien sur le jour ou le mois&lt;br /&gt;
			dataQualificatif = { qualificatif = qualificatif, annee = { } }&lt;br /&gt;
		end&lt;br /&gt;
		dataCat = dataLiens[dataQualificatif.cat]&lt;br /&gt;
		if type( dataCat ) ~= &#039;table&#039; or dataCat == dataQualificatif then&lt;br /&gt;
			dataCat = { qualificatif = &#039;&#039; }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local function wikiLien( lien, texte )&lt;br /&gt;
		if lien == texte then&lt;br /&gt;
			return &#039;[[&#039; .. texte .. &#039;]]&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;[[&#039; .. lien .. &#039;|&#039; .. texte .. &#039;]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- le jour si présent&lt;br /&gt;
	local qualifJour = &#039;&#039;&lt;br /&gt;
	if jour then&lt;br /&gt;
		if args.nolinks then&lt;br /&gt;
			if jour == 1 then&lt;br /&gt;
				jour = modelePremier&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( wikiListe, jour )&lt;br /&gt;
		else&lt;br /&gt;
			qualifJour = dataQualificatif.jour and dataQualificatif.qualificatif&lt;br /&gt;
				or dataCat.jour and dataCat.qualificatif&lt;br /&gt;
				or &#039;&#039;&lt;br /&gt;
			local texteJour, lien&lt;br /&gt;
			if jour == 1 then&lt;br /&gt;
				texteJour = &#039;1&amp;lt;sup&amp;gt;er&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
				lien = &#039;1er &#039; .. mois&lt;br /&gt;
			else&lt;br /&gt;
				texteJour = jour&lt;br /&gt;
				lien = jour .. &#039; &#039; .. mois&lt;br /&gt;
			end&lt;br /&gt;
			if qualifJour ~= &#039;&#039; then&lt;br /&gt;
				lien = lien .. &#039; &#039; .. qualifJour&lt;br /&gt;
			end&lt;br /&gt;
			-- s&#039;il n&#039;y a pas de lien sur le mois, il sera affiché avec le jour.&lt;br /&gt;
			table.insert( wikiListe, wikiLien( lien, texteJour ) )&lt;br /&gt;
			table.insert( wikiListe, wikiLien( lien, texteJour .. &#039; &#039;.. texteMois ) )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( iso, 1, string.sub( &#039;0&#039; .. gjour, -2 ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- le mois&lt;br /&gt;
	if mois then&lt;br /&gt;
		if #wikiListe == 0 and annee == nil then&lt;br /&gt;
			return texteMois&lt;br /&gt;
		end&lt;br /&gt;
		if args.nolinks then&lt;br /&gt;
			if not args.masquerMois then&lt;br /&gt;
				table.insert( wikiListe, texteMois )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local lien&lt;br /&gt;
			if annee then&lt;br /&gt;
				if not numMois then&lt;br /&gt;
					-- mois est autre chose qu&#039;un simple mois : saison, mois-mois... auquel cas, pas de lien&lt;br /&gt;
				else&lt;br /&gt;
					lien = existDate( dataQualificatif, annee, mois ) or existDate( dataCat, annee, mois )&lt;br /&gt;
					if lien == nil and qualificatif and qualifJour == &#039;&#039; then&lt;br /&gt;
						-- nouveau test sans le qualificatif uniquement s&#039;il n&#039;y a pas d&#039;éphémérides pour ce qualificatif.&lt;br /&gt;
						lien = existDate( dataLiens[&#039;&#039;], annee, mois )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if lien or args.masquerMois then&lt;br /&gt;
				-- s&#039;il y a un lien on retire le lien affichant &#039;jour mois&#039; pour ajouter &#039;[[mois annee|mois]]&#039;&lt;br /&gt;
				table.remove( wikiListe )&lt;br /&gt;
				if not args.masquerMois then&lt;br /&gt;
					table.insert( wikiListe, wikiLien( lien, texteMois ) )&lt;br /&gt;
				end&lt;br /&gt;
			elseif #wikiListe &amp;gt; 0 then&lt;br /&gt;
				-- sinon on retire le lien affichant &#039;jour&#039; pour ne garder que le lien &#039;jour mois&#039;&lt;br /&gt;
				table.remove( wikiListe, #wikiListe - 1 )&lt;br /&gt;
			elseif args.masquerAnnee then&lt;br /&gt;
				-- s&#039;il n&#039;y a pas de jour et que l&#039;année n&#039;est pas affichée, on insère le mois seul.&lt;br /&gt;
				table.insert( wikiListe, texteMois )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if gmois then&lt;br /&gt;
			table.insert( iso, 1, string.sub( &#039;0&#039; .. gmois, -2 ) )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( wikiListe, gregAprMois )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- l&#039;année&lt;br /&gt;
	if annee and not (args.julien == true and args.nolinks and jannee == annee ) then&lt;br /&gt;
		if not args.masquerAnnee then&lt;br /&gt;
			local texteAnnee = annee&lt;br /&gt;
			if annee &amp;lt; 0 then&lt;br /&gt;
				local anneeAvJc = 0 - annee&lt;br /&gt;
				if args.avJC == false then&lt;br /&gt;
					texteAnnee = anneeAvJc&lt;br /&gt;
				else&lt;br /&gt;
					texteAnnee = anneeAvJc .. &#039; &amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;&#039;&lt;br /&gt;
						.. &#039;avant Jésus-Christ&amp;quot;&amp;gt;av. J.-C.&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
				end&lt;br /&gt;
			elseif args.apJC then&lt;br /&gt;
				texteAnnee = texteAnnee .. &#039; &amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;&#039;&lt;br /&gt;
					.. &#039;après Jésus-Christ&amp;quot;&amp;gt;apr. J.-C.&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			if args.nolinks then -- seulement si on doit l&#039;afficher&lt;br /&gt;
				table.insert( wikiListe, texteAnnee )&lt;br /&gt;
			else&lt;br /&gt;
				local lien = existDate( dataQualificatif, annee ) or existDate( dataCat, annee )&lt;br /&gt;
				if not lien then&lt;br /&gt;
					if annee &amp;lt; 0 then&lt;br /&gt;
						local anneeAvJc = 0 - annee&lt;br /&gt;
						lien = anneeAvJc .. &#039; av. J.-C.&#039;&lt;br /&gt;
					else&lt;br /&gt;
						lien = annee&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if mois and #wikiListe == 0 then&lt;br /&gt;
					-- si le mois n&#039;a pas de lien et n&#039;est pas affiché avec le jour, il est affiché avec l&#039;année.&lt;br /&gt;
					texteAnnee = texteMois .. &#039; &#039; .. texteAnnee&lt;br /&gt;
				end&lt;br /&gt;
				table.insert( wikiListe, wikiLien( lien, texteAnnee ) )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if annee then&lt;br /&gt;
		if gannee &amp;gt; 999 then&lt;br /&gt;
			table.insert( iso, 1, gannee )&lt;br /&gt;
		elseif gannee &amp;gt; -1 then&lt;br /&gt;
			table.insert( iso, 1, string.sub( &#039;000&#039; .. gannee , -4 ) )&lt;br /&gt;
		elseif gannee &amp;gt; -999 then&lt;br /&gt;
			-- calendrier grégorien proleptique avec année 0.&lt;br /&gt;
			table.insert( iso, 1, &#039;U-&#039; .. string.sub( &#039;000&#039; .. ( 0 - gannee ), -4 ) )&lt;br /&gt;
		else&lt;br /&gt;
			table.insert( iso, 1, &#039;U&#039; .. gannee )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.insert( wikiListe, gregAprAn )&lt;br /&gt;
&lt;br /&gt;
	-- l&#039;age&lt;br /&gt;
	if type( age ) == &#039;number&#039; and age &amp;gt;= 0 and ( not naissance or age &amp;lt; 120 ) then&lt;br /&gt;
		if age == 0 then&lt;br /&gt;
			age = &#039;(&#039; .. agePrefix .. &#039;moins d’un\194\160an)&#039;&lt;br /&gt;
		elseif age == 1 then&lt;br /&gt;
			age = &#039;(&#039; .. agePrefix .. &#039;1\194\160an)&#039;&lt;br /&gt;
		else&lt;br /&gt;
			age = &#039;(&#039;.. agePrefix .. age .. &#039;\194\160ans)&#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		age = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- compilation du résultat&lt;br /&gt;
	local wikiTexte = table.concat( wikiListe, &#039; &#039; )&lt;br /&gt;
	local isoTexte = table.concat( iso, &#039;-&#039; )&lt;br /&gt;
&lt;br /&gt;
	-- On ajoute un peu de sémantique.&lt;br /&gt;
	local wikiHtml = mw.html.create( &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
	if julienDate then&lt;br /&gt;
		wikiHtml:tag( &#039;span&#039;)&lt;br /&gt;
				:addClass( &#039;nowrap&#039; )&lt;br /&gt;
				:attr( &#039;data-sort-value&#039;, isoTexte )&lt;br /&gt;
				:wikitext( julienDate )&lt;br /&gt;
				:node( julienSup )&lt;br /&gt;
				:done()&lt;br /&gt;
			:wikitext( julienSep )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local dateHtml = wikiHtml:tag( &#039;time&#039; )&lt;br /&gt;
			:wikitext( wikiTexte )&lt;br /&gt;
	if wikiTexte:match( &#039; &#039; ) then&lt;br /&gt;
		dateHtml:addClass( &#039;nowrap&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if isoTexte ~= wikiTexte then&lt;br /&gt;
		dateHtml:attr( &#039;datetime&#039;, isoTexte )&lt;br /&gt;
				:attr( &#039;data-sort-value&#039;, isoTexte )&lt;br /&gt;
	end&lt;br /&gt;
	if not args.nolinks then&lt;br /&gt;
		dateHtml:addClass( &#039;date-lien&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if naissance then&lt;br /&gt;
		dateHtml:addClass( &#039;bday&#039; )&lt;br /&gt;
	elseif mort then&lt;br /&gt;
		dateHtml:addClass( &#039;dday&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	wikiHtml:wikitext( gregFin )&lt;br /&gt;
&lt;br /&gt;
	if dateRepublicaine then&lt;br /&gt;
		wikiHtml:wikitext( &#039; (&#039;, dateRepublicaine, &#039;)&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if age then&lt;br /&gt;
		wikiHtml:wikitext( &#039; &#039; )&lt;br /&gt;
				:tag( &#039;span&#039; )&lt;br /&gt;
					:addClass( &#039;noprint&#039;)&lt;br /&gt;
					:wikitext( age )&lt;br /&gt;
					:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring( wikiHtml )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
-- isoJourMoisAnnee transforme une date iso en un tableau équivalent à celui retourné par separationJourMoisAnnee&lt;br /&gt;
local function isoJourMoisAnnee( dateiso )&lt;br /&gt;
	if dateiso and dateiso:sub( 1, 2 ) == &#039;U-&#039; then&lt;br /&gt;
		dateiso = dateiso:sub( 2 )&lt;br /&gt;
	end&lt;br /&gt;
	local annee, mois, jour = dateiso:match( &#039;^(%-?%d%d%d%d+)%-(%d+)%-(%d+)$&#039; )&lt;br /&gt;
	if not annee then&lt;br /&gt;
		annee, mois = dateiso:match( &#039;^(%-?%d%d%d%d+)%-(%d+)$&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if not annee then&lt;br /&gt;
		annee = dateiso:match( &#039;^(%-?%d%d%d%d+)$&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if annee and tonumber( annee ) &amp;lt;= 0 then&lt;br /&gt;
		-- la date iso utilise une année 0&lt;br /&gt;
		annee = tonumber( annee ) - 1&lt;br /&gt;
	end&lt;br /&gt;
	if not annee then&lt;br /&gt;
		mois, jour = dateiso:match( &#039;^(%d+)%-(%d+)$&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return fun.validationJourMoisAnnee{ jour, mois, annee }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- analyseDate sépare la date du contenu qui précède et suit, supprime les liens, et retourne si possible une table avec jour mois année&lt;br /&gt;
local function analyseDate( d )&lt;br /&gt;
	if trim( d ) then&lt;br /&gt;
		local datesMultiples = d:match( &#039; ou &#039; ) or d:match( &#039;^[Ee]ntre &#039; ) or d:match( &#039;&amp;lt;time.-&amp;gt;.-&amp;lt;time.-&amp;gt;&#039; )&lt;br /&gt;
		if datesMultiples then&lt;br /&gt;
			return d&lt;br /&gt;
		end&lt;br /&gt;
		local approx = d:match( &#039;^[Vv]ers &#039; ) or d:match( &#039;^[Aa]près &#039; ) or d:match( &#039;^[Aa]vant &#039; )&lt;br /&gt;
		-- booléen qui indique que la date est approximative, empêchant l&#039;affichage de l&#039;âge ou de la durée&lt;br /&gt;
		approx = approx and true or false&lt;br /&gt;
&lt;br /&gt;
		local analyse = d&lt;br /&gt;
		-- s&#039;il s&#039;agit d&#039;une date formattée avec {{date}}, on utilisera la valeur du datetime pour reconstruire la date&lt;br /&gt;
		local dateiso = d:match( &#039;datetime=&amp;quot;([U%d-]+)&amp;quot;&#039; ) or d:match( &#039;&amp;lt;time&amp;gt;(.-)&amp;lt;/time&amp;gt;&#039; )&lt;br /&gt;
		local debut, strDate, fin&lt;br /&gt;
		if dateiso then&lt;br /&gt;
			-- supprime le formatage créé par {{date}}&lt;br /&gt;
			debut, strDate, fin = analyse:match( &#039;(.-)&amp;lt;time.-&amp;gt;(.-)&amp;lt;/time&amp;gt;(.*)&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if not strDate then&lt;br /&gt;
			-- sépare une date av. J.-C. du contenu qui suit&lt;br /&gt;
			strDate, fin = analyse:match( &#039;(.-%d av%. J%.%-C%.]*%-?)(.*)&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if not strDate then&lt;br /&gt;
			-- sépare la date (avec ses liens) d&#039;une référence ou contenu commençant par un espace&lt;br /&gt;
			strDate, fin = analyse:match( &#039;(.-%d%d%d%]*%-?)([\127 ].+)&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if not strDate then&lt;br /&gt;
			-- sépare la date du contenu commençant par &amp;lt;br&amp;gt;&lt;br /&gt;
			strDate, fin = analyse:match( &#039;(.-%d%d%d%]*%-?)(&amp;lt;br ?/?&amp;gt;.+)&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		analyse = strDate or analyse&lt;br /&gt;
		-- supprime les liens&lt;br /&gt;
		analyse = analyse:gsub(&lt;br /&gt;
			&#039;%[%[([^%[%]|]*)|?([^%[%]]*)%]%]&#039;,&lt;br /&gt;
			function ( l, t )&lt;br /&gt;
				return trim( t ) or l&lt;br /&gt;
			end&lt;br /&gt;
		)&lt;br /&gt;
		&lt;br /&gt;
		local t, r&lt;br /&gt;
		if dateiso then&lt;br /&gt;
			-- Si la date était formatée avec {{date}}, on la reconstruit à partir de la valeur de datetime&lt;br /&gt;
			t, r = isoJourMoisAnnee( dateiso )&lt;br /&gt;
		end&lt;br /&gt;
		if t then&lt;br /&gt;
			local tTexte, rTexte = fun.separationJourMoisAnnee( analyse )&lt;br /&gt;
			if r.annee and r.jour then&lt;br /&gt;
				local amj = r.annee * 10000 + r.numMois * 100 + r.jour&lt;br /&gt;
				-- Les dates avant le 14 octobre 1582 sont dans le calendrier julien mais utilisent un datetime grégorien&lt;br /&gt;
				local gregToJul = amj &amp;lt; 15821014&lt;br /&gt;
				if not gregToJul and amj &amp;lt; 15821024 then&lt;br /&gt;
					-- Entre le 14 et le 23 octobre, on ne peut pas différencier entre julien et grégorien sans comparer avec le texte&lt;br /&gt;
					gregToJul = tTexte and rTexte.jour ~= r.jour&lt;br /&gt;
				end&lt;br /&gt;
				if gregToJul then&lt;br /&gt;
					local jannee, jmois, jjour = fun.gregorianToJulian( r.annee, r.numMois, r.jour )&lt;br /&gt;
					r = {&lt;br /&gt;
						annee = jannee,&lt;br /&gt;
						numMois = jmois,&lt;br /&gt;
						mois = listeMois[jmois].nom,&lt;br /&gt;
						jour = jjour&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if tTexte then&lt;br /&gt;
				-- On analyse le texte de la date pour repérer les dates partiellement masquées&lt;br /&gt;
				-- Si seul le jour est affiché, separationJourMoisAnnee l&#039;interprète comme une année&lt;br /&gt;
				if not rTexte.jour and not rTexte.mois and rTexte.annee == r.jour then&lt;br /&gt;
					r.masquerMois = true&lt;br /&gt;
					r.masquerAnnee = true&lt;br /&gt;
				elseif rTexte.jour == r.jour and rTexte.mois == r.mois and not rTexte.annee then&lt;br /&gt;
					r.masquerAnnee = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			t, r = fun.separationJourMoisAnnee( analyse )&lt;br /&gt;
		end&lt;br /&gt;
		if t then&lt;br /&gt;
			return r, fin, debut, approx&lt;br /&gt;
		else&lt;br /&gt;
			return d, fin, debut, approx&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- fonction destinée aux infobox, notamment pour afficher les dates de naissance et de mort&lt;br /&gt;
-- les liens présent dans les dates fournies sont automatiquement supprimés pour gérer les cas où&lt;br /&gt;
-- le paramètre contient déjà un modèle date.&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
-- 		1 : type de date à afficher (naissance / n, mort / m, ou date / d)&lt;br /&gt;
-- 		2 : Date ou date de naissance&lt;br /&gt;
-- 		3 : Date de mort si type n ou m&lt;br /&gt;
-- 		qualificatif = suffixe des page de date à lier (exemple : en musique)&lt;br /&gt;
-- 		nolinks : n&#039;affiche pas de lien&lt;br /&gt;
--		préfixe : préfixe à afficher s&#039;il y a un jour (par défaut &#039;&#039;)&lt;br /&gt;
--		préfixe sans jour : préfixe à afficher s&#039;il n&#039;y a pas de jour (par défaut : &#039;&#039;)&lt;br /&gt;
function fun.dateInfobox( frame )&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	if type( args ) ~= &#039;table&#039; or not ( args[1] and args[2] ) then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	-- prefix ajoute un préfixe en fonction de la présence ou non du jour si le paramètre &amp;quot;préfixe sans jour&amp;quot; est défini&lt;br /&gt;
	local function prefix( dateString )&lt;br /&gt;
		if dateString then&lt;br /&gt;
			local datetime = dateString:match( &#039;datetime=&amp;quot;([U%d%-]+)&amp;quot;&#039; )&lt;br /&gt;
			if datetime and datetime:match(&#039;%-%d%d%-%d%d&#039;) and trim( args[&#039;préfixe&#039;] ) then&lt;br /&gt;
				return args[&#039;préfixe&#039;] .. &#039; &#039; .. dateString&lt;br /&gt;
			end&lt;br /&gt;
			if trim( args[&#039;préfixe sans jour&#039;] ) then&lt;br /&gt;
				return args[&#039;préfixe sans jour&#039;] .. &#039; &#039; .. dateString&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return dateString&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local naissance = args[1]:match( &#039;^n&#039; ) == &#039;n&#039;&lt;br /&gt;
	local mort = args[1]:match( &#039;^m&#039; ) or args[1]:match( &#039;décès&#039; )&lt;br /&gt;
	local evenement = args[1]:match( &#039;^é&#039; )&lt;br /&gt;
	local affichageDate, qualificatif = args[2], args[4]&lt;br /&gt;
	local affichageDateTab, resultatDate, complementDate, prefixeDate, approxDate&lt;br /&gt;
	local dateNaissance, dateMort, approxNaissance, approxMort&lt;br /&gt;
	if mort or evenement then&lt;br /&gt;
		affichageDate = args[3]&lt;br /&gt;
	end&lt;br /&gt;
	if not trim( affichageDate ) then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if affichageDate:match( &#039;]]&amp;lt;/time&amp;gt;&#039; ) or affichageDate:match( &#039;&amp;lt;/time&amp;gt;]]&#039; ) then&lt;br /&gt;
		-- S&#039;il y a des liens il y a probablement déjà un modèle date, évitons de l&#039;exécuter une 2e fois&lt;br /&gt;
		if ( naissance or mort or evenement ) and ( affichageDate:match( &#039;wikidata%-linkback&#039; )) then&lt;br /&gt;
			local _&lt;br /&gt;
			dateNaissance, _, _, approxNaissance = analyseDate( args[2] )&lt;br /&gt;
			dateMort, _, _, approxMort = analyseDate( args[3] )&lt;br /&gt;
			resultatDate = affichageDate&lt;br /&gt;
		else&lt;br /&gt;
			return prefix( affichageDate )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		affichageDateTab, complementDate, prefixeDate, approxDate = analyseDate( affichageDate )&lt;br /&gt;
		if type( affichageDateTab ) ~= &#039;table&#039; then&lt;br /&gt;
			return affichageDateTab&lt;br /&gt;
		else&lt;br /&gt;
			if naissance then&lt;br /&gt;
				local _&lt;br /&gt;
				dateNaissance, approxNaissance = affichageDateTab, approxDate&lt;br /&gt;
				dateMort, _, _, approxMort = analyseDate( args[3] )&lt;br /&gt;
			elseif mort then&lt;br /&gt;
				local _&lt;br /&gt;
				dateNaissance, _, _, approxNaissance = analyseDate( args[2] )&lt;br /&gt;
				dateMort, approxMort = affichageDateTab, approxDate&lt;br /&gt;
			else&lt;br /&gt;
				qualificatif = args[3]&lt;br /&gt;
			end&lt;br /&gt;
			affichageDateTab.naissance = not approxNaissance and naissance&lt;br /&gt;
			affichageDateTab.mort = not approxMort and mort&lt;br /&gt;
			affichageDateTab.evenement = evenement&lt;br /&gt;
			affichageDateTab.qualificatif = args.qualificatif or qualificatif&lt;br /&gt;
			affichageDateTab.liens = true -- Dans les infobox, liens activés par défaut&lt;br /&gt;
			affichageDateTab.nolinks = args.nolinks&lt;br /&gt;
			affichageDateTab.nocat = args.nocat&lt;br /&gt;
			affichageDateTab.julien = args.julien&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	resultatDate = resultatDate or fun.modeleDate( affichageDateTab )&lt;br /&gt;
&lt;br /&gt;
	local age, prefixAge, suffixAge, calculAge = &#039;&#039;, &#039; &amp;lt;span class=&amp;quot;noprint&amp;quot;&amp;gt;(&#039;, &#039;)&amp;lt;/span&amp;gt;&#039;, nil&lt;br /&gt;
	if naissance and&lt;br /&gt;
		dateNaissance and&lt;br /&gt;
		not approxNaissance and&lt;br /&gt;
		not dateMort and&lt;br /&gt;
		type( dateNaissance ) == &#039;table&#039;&lt;br /&gt;
	then&lt;br /&gt;
		calculAge = fun.age( dateNaissance.annee, dateNaissance.numMois, dateNaissance.jour )&lt;br /&gt;
		if calculAge and calculAge &amp;gt; 120 then&lt;br /&gt;
			calculAge = nil&lt;br /&gt;
		end&lt;br /&gt;
	elseif ( mort or evenement ) and&lt;br /&gt;
		dateNaissance and&lt;br /&gt;
		dateMort and&lt;br /&gt;
		not approxNaissance and&lt;br /&gt;
		not approxMort and&lt;br /&gt;
		type( dateNaissance ) == &#039;table&#039;&lt;br /&gt;
		and type( dateMort ) == &#039;table&#039;&lt;br /&gt;
	then&lt;br /&gt;
		calculAge = fun.age(&lt;br /&gt;
			dateNaissance.annee,&lt;br /&gt;
			dateNaissance.numMois,&lt;br /&gt;
			dateNaissance.jour,&lt;br /&gt;
			dateMort.annee,&lt;br /&gt;
			dateMort.numMois,&lt;br /&gt;
			dateMort.jour&lt;br /&gt;
		)&lt;br /&gt;
		prefixAge = &#039; (à &#039;&lt;br /&gt;
		suffixAge = &#039;)&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if tonumber( calculAge ) then&lt;br /&gt;
		if calculAge &amp;gt; 1 then&lt;br /&gt;
			age = prefixAge .. calculAge .. &#039;\194\160ans&#039; .. suffixAge&lt;br /&gt;
		elseif calculAge == 1 then&lt;br /&gt;
			age = prefixAge .. &#039;un\194\160an&#039; .. suffixAge&lt;br /&gt;
		elseif calculAge == 0 then&lt;br /&gt;
			age = prefixAge .. &#039;moins d’un\194\160an&#039; .. suffixAge&lt;br /&gt;
		end&lt;br /&gt;
		if complementDate and complementDate:match( &#039;ans?%)&#039; ) then&lt;br /&gt;
			complementDate = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ( prefixeDate or &#039;&#039; ) .. prefix( resultatDate ) .. ( complementDate or &#039;&#039; ) .. age&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fun.dureeInfobox( frame )&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	if type( args ) ~= &#039;table&#039; or not args[1] then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- vérifie si une chaîne semble contenir une durée&lt;br /&gt;
	local function contientDuree( chaine )&lt;br /&gt;
		return chaine and (&lt;br /&gt;
			mw.ustring.match( chaine, &#039;%f[%w]ans?%f[^%w]&#039; ) or&lt;br /&gt;
			mw.ustring.match( chaine, &#039;%f[%w]mois%f[^%w]&#039; ) or&lt;br /&gt;
			mw.ustring.match( chaine, &#039;%f[%w]jours?%f[^%w]&#039; )&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local jour1, mois1, annee1, jour2, mois2, annee2 = &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;&lt;br /&gt;
	local t1, fin1, _, approx1 = analyseDate( args[1] )&lt;br /&gt;
	if approx1 or type( t1 ) ~= &#039;table&#039; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	jour1 = t1.jour or &#039;&#039;&lt;br /&gt;
	mois1 = t1.numMois or &#039;&#039;&lt;br /&gt;
	annee1 = t1.annee or &#039;&#039;&lt;br /&gt;
	if args[2] and args[2] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local t2, fin2, _, approx2 = analyseDate( args[2] )&lt;br /&gt;
		if approx2 or type( t2 ) ~= &#039;table&#039; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		if contientDuree( fin2 ) then&lt;br /&gt;
			-- La durée semble déjà renseignée manuellement&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		jour2 = t2.jour or &#039;&#039;&lt;br /&gt;
		mois2 = t2.numMois or &#039;&#039;&lt;br /&gt;
		annee2 = t2.annee or &#039;&#039;&lt;br /&gt;
		if annee1 == &#039;&#039; or annee2 == &#039;&#039; then&lt;br /&gt;
			-- Mieux vaut ne pas extrapoler l&#039;année&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		if ( jour1 ~= &#039;&#039; and jour2 == &#039;&#039; ) or&lt;br /&gt;
			( mois1 ~= &#039;&#039; and mois2 == &#039;&#039; ) then&lt;br /&gt;
				-- Si la deuxième date est moins précise que la première, mieux vaut ne rien afficher&lt;br /&gt;
				return&lt;br /&gt;
		end&lt;br /&gt;
	elseif annee1 == &#039;&#039; or contientDuree( fin1 ) then&lt;br /&gt;
		-- L&#039;année n&#039;est pas spécifiée ou la durée semble déjà renseignée&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	local duree = (require &#039;Module:Durée&#039;)._duree({ jour1, mois1, annee1, jour2, mois2, annee2, noerror = true })&lt;br /&gt;
	if duree then&lt;br /&gt;
		return &#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(&#039; .. duree .. &#039;)&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- la fonction dateISO renvoie un date au format aaaa-mm-jj (sans liens)&lt;br /&gt;
-- l&#039;année peut être sous la forme 2013 ou [[2013 en litérature|2013]]&lt;br /&gt;
-- le mois peut être en lettres ou en chiffres&lt;br /&gt;
-- le jour peut être sous la forme &#039;05&#039;, &#039;{{1er}}&#039; ou &#039;vendredi 13&#039;&lt;br /&gt;
function fun.dateISO( frame )&lt;br /&gt;
	local args = Outils.extractArgs( frame )&lt;br /&gt;
	local annee = Outils.notEmpty( args[&#039;année&#039;], args.annee, args.year, args.date )&lt;br /&gt;
	-- extraction de l&#039;année&lt;br /&gt;
	if type( annee ) == &#039;string&#039; then&lt;br /&gt;
		annee = ( tonumber( annee )	-- match &#039;2013&#039;&lt;br /&gt;
				or string.match ( annee, &#039;%D(%d%d%d%d)%D&#039; ) -- match &#039;[[2013 en musique|2013]]&#039;&lt;br /&gt;
				or string.match ( annee, &#039;%D(%d%d%d%d)$&#039; )  -- match &#039;17 septembre 2013&#039;&lt;br /&gt;
				or string.match ( annee, &#039;^(%d%d%d%d)%D&#039; )  -- match &#039;2013-09-17&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	annee = tonumber( annee )&lt;br /&gt;
&lt;br /&gt;
	-- le format de date iso est défini suivant le calendrier grégorien.&lt;br /&gt;
	-- Avant l&#039;année 1583 la date est calendrier est probablement du calendrier julien,&lt;br /&gt;
	-- donc autant s&#039;abstenir.&lt;br /&gt;
	if annee and annee &amp;gt; 1582 then&lt;br /&gt;
		local mois = Outils.notEmpty( args.mois, args.month )&lt;br /&gt;
		-- num mois trouve le numéro du mois, qu&#039;il soit numérique ou texte, complet ou abrégé.&lt;br /&gt;
		local nomMois, numMois = fun.determinationMois( mois )&lt;br /&gt;
		if numMois then&lt;br /&gt;
			mois = &#039;-&#039; .. string.sub( &#039;0&#039; .. numMois, -2 )&lt;br /&gt;
&lt;br /&gt;
			local jour = Outils.notEmpty( args.jour, args.day, args[&#039;quantième&#039;] )&lt;br /&gt;
			if type( jour ) == &#039;string&#039; then&lt;br /&gt;
				jour = tonumber( jour ) or tonumber( string.match ( jour, &#039;%d+&#039;) )&lt;br /&gt;
			end&lt;br /&gt;
			jour = tonumber( jour )&lt;br /&gt;
			if jour and jour &amp;lt;= listeMois[numMois].nJour then&lt;br /&gt;
				jour = &#039;-&#039; .. string.sub( &#039;0&#039; .. jour, -2 )&lt;br /&gt;
				return annee .. mois .. jour&lt;br /&gt;
			else&lt;br /&gt;
				return annee .. mois&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return tostring( annee )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- Rang du jour dans l&#039;année&lt;br /&gt;
-- Usage : do_dayRank{année,mois,jour}&lt;br /&gt;
function fun.do_dayRank(arguments)&lt;br /&gt;
	local yr = tonumber(arguments.year or arguments[1]) or 1&lt;br /&gt;
	local mt = tonumber(arguments.month or arguments[2]) or 1&lt;br /&gt;
	local dy = tonumber(arguments.day or arguments[3]) or 1&lt;br /&gt;
	-- Rangs des premiers des mois&lt;br /&gt;
	local ranks = {0,31,59,90,120,151,181,212,243,273,304,334}&lt;br /&gt;
&lt;br /&gt;
	local rank = (ranks[mt] or 0) + dy - 1&lt;br /&gt;
	if(fun.isLeapYear(yr) and (mt &amp;gt;= 3)) then&lt;br /&gt;
		rank = rank+1&lt;br /&gt;
	end&lt;br /&gt;
	return rank&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Nombre de jours entre deux années (du 1er janvier au 1er janvier)&lt;br /&gt;
-- Suit le calendrier grégorien&lt;br /&gt;
function fun.do_daysBetween(arguments)&lt;br /&gt;
	local yr1 = tonumber(arguments[1]) or 0&lt;br /&gt;
	local yr2 = tonumber(arguments[2]) or 0&lt;br /&gt;
&lt;br /&gt;
	return fun.daysSinceOrigin(yr2) - fun.daysSinceOrigin(yr1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Nombre de jours depuis l&#039;année 1 (du 1er janvier au 1er janvier)&lt;br /&gt;
function fun.daysSinceOrigin(year)&lt;br /&gt;
	local yr = year-1&lt;br /&gt;
	return 365*yr + math.floor(yr/4) - math.floor(yr/100) + math.floor(yr/400)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Test d&#039;année bissextile (Suit le calendrier grégorien)&lt;br /&gt;
function fun.isLeapYear(year)&lt;br /&gt;
	local yr = tonumber(year) or 1&lt;br /&gt;
	return (yr%4 == 0) and ((yr%100 ~= 0) or (yr%400 == 0))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Conversion d&#039;un nombre en chiffres romains&lt;br /&gt;
function fun.toRoman(number)&lt;br /&gt;
	local n = math.floor(number)&lt;br /&gt;
	local letters = {&amp;quot;I&amp;quot;,&amp;quot;V&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;L&amp;quot;,&amp;quot;C&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;M&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;}&lt;br /&gt;
	local pattern = {&amp;quot;&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;00&amp;quot;,&amp;quot;000&amp;quot;,&amp;quot;01&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;10&amp;quot;,&amp;quot;100&amp;quot;,&amp;quot;1000&amp;quot;,&amp;quot;02&amp;quot;}&lt;br /&gt;
	local result = &amp;quot;&amp;quot;&lt;br /&gt;
	if(n&amp;lt;=0 or n&amp;gt;=4000) then&lt;br /&gt;
		result = &amp;quot;---&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i=1,7,2 do&lt;br /&gt;
			local p = pattern[n%10 + 1]&lt;br /&gt;
			for j=0,2 do&lt;br /&gt;
				p = string.gsub(p,tostring(j),letters[i+j])&lt;br /&gt;
			end&lt;br /&gt;
			result = p .. result&lt;br /&gt;
			n = math.floor(n/10)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Conversion et affichage d&#039;une date dans le calendrier républicain&lt;br /&gt;
function fun.dateRepublicain(frame)&lt;br /&gt;
	local pframe = frame:getParent()&lt;br /&gt;
	local arguments = pframe.args&lt;br /&gt;
	return fun.formatRepCal(fun.do_toRepCal(arguments))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- Calcul d&#039;une date dans le calendrier républicain&lt;br /&gt;
-- On suppose que les années 4n+3 sont sextiles (3, 7, 11...)&lt;br /&gt;
function fun.do_toRepCal(arguments)&lt;br /&gt;
	local yr = tonumber(arguments.year or arguments[1]) or 2000&lt;br /&gt;
	-- rang absolu du jour demandé, le jour 0 étant le 22 septembre 1792 (1er jour de l&#039;an I)&lt;br /&gt;
	local repDays = fun.do_dayRank(arguments) + fun.do_daysBetween{1792,yr} - fun.do_dayRank{1792,9,22}&lt;br /&gt;
	local repYear = math.floor((repDays+731)/365.25) - 1&lt;br /&gt;
	local repDayRank = repDays - 365*(repYear-1) - math.floor(repYear/4)&lt;br /&gt;
	local repMonth, repDay = math.floor(repDayRank/30)+1, (repDayRank%30)+1&lt;br /&gt;
	return {repYear, repMonth, repDay}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- Formatage d&#039;une date selon le calendrier républicain&lt;br /&gt;
-- Usage : fun.formatRepCal{année,mois,jour}&lt;br /&gt;
function fun.formatRepCal(arguments)&lt;br /&gt;
	local months = {&amp;quot;Vendémiaire&amp;quot;,&amp;quot;Brumaire&amp;quot;,&amp;quot;Frimaire&amp;quot;,&amp;quot;Nivôse&amp;quot;,&amp;quot;Pluviôse&amp;quot;,&amp;quot;Ventôse&amp;quot;,&amp;quot;Germinal&amp;quot;,&amp;quot;Floréal&amp;quot;,&amp;quot;Prairial&amp;quot;,&amp;quot;Messidor&amp;quot;,&amp;quot;Thermidor&amp;quot;,&amp;quot;Fructidor&amp;quot;}&lt;br /&gt;
	local extras = {&amp;quot;de la vertu&amp;quot;,&amp;quot;du génie&amp;quot;,&amp;quot;du travail&amp;quot;,&amp;quot;des récompenses&amp;quot;,&amp;quot;de l&#039;opinion&amp;quot;,&amp;quot;de la Révolution&amp;quot;}&lt;br /&gt;
	local result = &amp;quot;&amp;quot;&lt;br /&gt;
	if(arguments[2] &amp;lt; 13) then&lt;br /&gt;
		result = result .. tostring(arguments[3]) .. &amp;quot;\194\160&amp;quot; .. months[arguments[2]]&lt;br /&gt;
	else&lt;br /&gt;
		result = result .. &amp;quot;jour &amp;quot; .. extras[arguments[3]]&lt;br /&gt;
	end&lt;br /&gt;
	result = result .. &amp;quot; de l&#039;an &amp;quot; .. fun.toRoman(arguments[1])&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- Voir Modèle:Âge&lt;br /&gt;
-- retourne l&#039;âge en fonction de la ou les dates fournies. La valeur retournée est de type &#039;number&#039;&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
-- 1, 2, 3 : année, mois jour de naissance (supposé dans le calendrier grégorien)&lt;br /&gt;
-- 4, 5, 6 : année, mois, jour du calcul (facultatif, par défaut la date UTC courante).&lt;br /&gt;
function fun.age( an, mn, jn, ac, mc, jc )&lt;br /&gt;
	if ac == nil then&lt;br /&gt;
		local today = os.date( &#039;!*t&#039; )&lt;br /&gt;
		ac = today.year&lt;br /&gt;
		mc = today.month&lt;br /&gt;
		jc = today.day&lt;br /&gt;
	else&lt;br /&gt;
		ac = tonumber( ac )&lt;br /&gt;
		mc = tonumber( mc )&lt;br /&gt;
		jc = tonumber( jc )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	an = tonumber( an )&lt;br /&gt;
	mn = tonumber( mn )&lt;br /&gt;
	jn = tonumber( jn )&lt;br /&gt;
&lt;br /&gt;
	if an == nil or ac == nil or mn == nil or mc == nil then&lt;br /&gt;
		-- pas de message d&#039;erreur qui risque de faire planter la fonction appelante&lt;br /&gt;
		-- à elle de gérer ce retour.&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local age = ac - an&lt;br /&gt;
&lt;br /&gt;
	-- si l&#039;intervalle traverse l&#039;année zéro, il faut soustraire une année&lt;br /&gt;
	-- parce que cette année n&#039;existe pas dans les calendriers chrétiens&lt;br /&gt;
	if an &amp;lt; 0 and ac &amp;gt; 0 then&lt;br /&gt;
		age = age - 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if mc == mn then&lt;br /&gt;
		if jc == nil or jn == nil then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		return age - ( jc &amp;lt; jn and 1 or 0 )&lt;br /&gt;
	else&lt;br /&gt;
		return age - ( mc &amp;lt; mn and 1 or 0 )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fun.modeleAge( frame )&lt;br /&gt;
	local args = Outils.extractArgs( frame )&lt;br /&gt;
	local age = fun.age(&lt;br /&gt;
		args[1] or args[&#039;année&#039;],&lt;br /&gt;
		args[2] or args[&#039;mois&#039;],&lt;br /&gt;
		args[3] or args[&#039;jour&#039;],&lt;br /&gt;
		args[4],&lt;br /&gt;
		args[5],&lt;br /&gt;
		args[6]&lt;br /&gt;
	)&lt;br /&gt;
	if age then&lt;br /&gt;
		return age&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Paramètres incorrects ou insuffisants pour calculer l\&#039;âge précis&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- calcul du jour julien à partir d&#039;une date du calendrier grégorien&lt;br /&gt;
function fun.julianDay( year, month, day, hour, min, sec )&lt;br /&gt;
	local julian&lt;br /&gt;
	julian = math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) * 1461 / 4 )&lt;br /&gt;
			- math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) / 100 )&lt;br /&gt;
			+ math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) / 400 )&lt;br /&gt;
			+ math.floor( ( math.fmod( month + 57609, 12 ) + 4 ) * 153 / 5 )&lt;br /&gt;
			+ day + ( hour or 12 ) / 24 + ( min or 0 ) / 1440 + ( sec or 0 ) / 86400&lt;br /&gt;
			- 32167.5&lt;br /&gt;
	return julian&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- calcul du jour julien à partir d&#039;une date du calendrier julien&lt;br /&gt;
function fun.julianDayJulian( year, month, day, hour, min, sec )&lt;br /&gt;
	local julian&lt;br /&gt;
	julian = math.floor( math.floor( ( year * 12 + month + 57609 ) / 12 - 1 ) * 1461 / 4 )&lt;br /&gt;
			+ math.floor( ( math.fmod( month + 57609, 12 ) + 4 ) * 153 / 5 )&lt;br /&gt;
			+ day + ( hour or 12 ) / 24 + ( min or 0 ) / 1440 + ( sec or 0 ) / 86400&lt;br /&gt;
			- 32205.5&lt;br /&gt;
	return julian&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- calcul d&#039;une date dans le calendrier grégorien à partir du jour julien&lt;br /&gt;
function fun.julianDayToGregorian( julianDay )&lt;br /&gt;
	local base = math.floor( julianDay + 32044.5 )  -- 1 March -4800 (proleptic Gregorian date)&lt;br /&gt;
	local nCentury = math.floor( ( base * 4 + 3 ) / 146097 )&lt;br /&gt;
	local sinceCentury = base - math.floor( nCentury * 146097 / 4 )&lt;br /&gt;
	local nYear = math.floor( ( sinceCentury * 4 + 3 ) / 1461 )&lt;br /&gt;
	local sinceYear = sinceCentury - math.floor( nYear * 1461 / 4 )&lt;br /&gt;
	local nMonth = math.floor( ( sinceYear * 5 + 2 ) / 153 )&lt;br /&gt;
&lt;br /&gt;
	local day = sinceYear - math.floor( ( nMonth * 153 + 2 ) / 5 ) + 1&lt;br /&gt;
	local month = nMonth - math.floor( nMonth / 10 ) * 12 + 3&lt;br /&gt;
	local year = math.floor( sinceYear / 306 ) + nYear + 100 * nCentury - 4800&lt;br /&gt;
&lt;br /&gt;
	return year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- calcul d&#039;une date dans le calendrier julien à partir du jour julien&lt;br /&gt;
-- calcul basé sur l&#039;algorithme de la page https://en.wikipedia.org/wiki/Julian_day#Julian_or_Gregorian_calendar_from_Julian_day_number&lt;br /&gt;
function fun.julianDayToJulian( julianDay )&lt;br /&gt;
	local y = 4716&lt;br /&gt;
	local v = 3&lt;br /&gt;
	local j = 1401&lt;br /&gt;
	local u = 5&lt;br /&gt;
	local m = 2&lt;br /&gt;
	local s = 153&lt;br /&gt;
	local n = 12&lt;br /&gt;
	local w = 2&lt;br /&gt;
	local r = 4&lt;br /&gt;
	local B = 274277&lt;br /&gt;
	local p = 1461&lt;br /&gt;
	local C = -38&lt;br /&gt;
	local f = julianDay + j&lt;br /&gt;
	local e = r * f + v&lt;br /&gt;
    local g = math.modf( math.fmod( e, p ) / r )&lt;br /&gt;
    local h = u * g + w&lt;br /&gt;
    local D = math.modf( math.fmod( h, s ) / u ) + 1&lt;br /&gt;
    local M = math.fmod( math.modf( h / s ) + m, n ) + 1&lt;br /&gt;
    local Y = math.modf( e / p ) - y + math.modf( ( n + m - M ) / n )&lt;br /&gt;
    return Y, M, D&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- calcul d&#039;une date dans le calendrier grégorien à partir d&#039;une date dans le calendrier julien&lt;br /&gt;
function fun.julianToGregorian( year, month, day )&lt;br /&gt;
	return fun.julianDayToGregorian( fun.julianDayJulian( year, month, day ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- calcul d&#039;une date dans le calendrier julien à partir d&#039;une date dans le calendrier grégorien&lt;br /&gt;
function fun.gregorianToJulian( year, month, day )&lt;br /&gt;
	year = tonumber(year)&lt;br /&gt;
	if month then month = tonumber(month) else month = 6 end --prend une valeur centrale pour donner un best &amp;quot;guess&amp;quot;&lt;br /&gt;
	if day then day = tonumber(day) else day = 15 end&lt;br /&gt;
	return fun.julianDayToJulian( fun.julianDay( year, month, day ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Cette fonction retourne &amp;quot;CET&amp;quot; ou &amp;quot;CEST&amp;quot; selon que dans la pseudo-timezone en cours&lt;br /&gt;
    c&#039;est l&#039;heure d&#039;été ou l&#039;heure d&#039;hiver.&lt;br /&gt;
  Cette fonction n&#039;a de sens a priori que pour des modèles utilisés en Europe&lt;br /&gt;
&lt;br /&gt;
  Paramètre optionnel non nommé : &amp;quot;sans lien&amp;quot; : retourne le texte CET/CEST. sinon&lt;br /&gt;
    retourne ce même texte avec un wikilien vers les articles correspondants&lt;br /&gt;
--]]&lt;br /&gt;
function fun.CEST(frame)&lt;br /&gt;
	-- option : ne pas créer de wikilien&lt;br /&gt;
	local opt = trim(frame.args[1] or frame:getParent().args[1])&lt;br /&gt;
	-- on récupère l&#039;information dans la zone courante&lt;br /&gt;
	local t = mw.getContentLanguage():formatDate(&amp;quot;I&amp;quot;, nil, true)&lt;br /&gt;
&lt;br /&gt;
	if (t == &amp;quot;1&amp;quot;) then  -- heure d&#039;été&lt;br /&gt;
		if (opt == &amp;quot;sans lien&amp;quot;) then&lt;br /&gt;
			return &amp;quot;CEST&amp;quot;&lt;br /&gt;
		elseif (opt == &amp;quot;décalage&amp;quot;) then&lt;br /&gt;
			return &amp;quot;2&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;[[Heure d&#039;été d&#039;Europe centrale|CEST]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else  -- heure d&#039;hiver (ou autre zone où ça ne s&#039;applique pas)&lt;br /&gt;
		if (opt == &amp;quot;sans lien&amp;quot;) then&lt;br /&gt;
			return &amp;quot;CET&amp;quot;&lt;br /&gt;
		elseif (opt == &amp;quot;décalage&amp;quot;) then&lt;br /&gt;
			return &amp;quot;1&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;[[Heure normale d&#039;Europe centrale|CET]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return fun&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Dictionnaires&amp;diff=331</id>
		<title>Module:Dictionnaires</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Dictionnaires&amp;diff=331"/>
		<updated>2024-09-20T14:16:47Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = {} local wikidata = require &amp;quot;Module:Wikidata&amp;quot; local Outils = require &amp;quot;Module:Outils&amp;quot;  -- Who’s who in france -- Community wants to print this id only if the person is dead.  -- Check to see if there is a « date of death » statement local function whoWhosWhoCondition(item) 	local deathPid = &amp;quot;P570&amp;quot; 	local deathClaims = mw.wikibase.getBestStatements( item, deathPid )	 	if deathClaims[1] then 		return true 	end 	return false end  local bases = { -- { no... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local wikidata = require &amp;quot;Module:Wikidata&amp;quot;&lt;br /&gt;
local Outils = require &amp;quot;Module:Outils&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- Who’s who in france&lt;br /&gt;
-- Community wants to print this id only if the person is dead. &lt;br /&gt;
-- Check to see if there is a « date of death » statement&lt;br /&gt;
local function whoWhosWhoCondition(item)&lt;br /&gt;
	local deathPid = &amp;quot;P570&amp;quot;&lt;br /&gt;
	local deathClaims = mw.wikibase.getBestStatements( item, deathPid )	&lt;br /&gt;
	if deathClaims[1] then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local bases = {&lt;br /&gt;
-- { nom, propriété Wikidata, format URL}&lt;br /&gt;
{&amp;quot;&#039;&#039;1000 célébrités de La Réunion&#039;&#039;&amp;quot;, &amp;quot;P6858&amp;quot;, &amp;quot;https://www.reunionnaisdumonde.com/magazine/1001-celebrites/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;1914-1918-Online&amp;quot;, &amp;quot;P8992&amp;quot;, &amp;quot;https://encyclopedia.1914-1918-online.net/article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;American Battlefield Trust&amp;quot;, &amp;quot;P8624&amp;quot;, &amp;quot;https://www.battlefields.org/learn/biographies/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;American National Biography&#039;&#039;&amp;quot;, &amp;quot;P4823&amp;quot;, &amp;quot;https://doi.org/10.1093/anb/9780198606697.article.$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Archives of Maryland Biographical Series&#039;&#039;&amp;quot;, &amp;quot;P6371&amp;quot;, &amp;quot;https://tools.wmflabs.org/wikidata-externalid-url/?p=6371&amp;amp;url_prefix=https://msa.maryland.gov/msa/speccol/sc3500/sc3520/&amp;amp;id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Australian Dictionary of Biography&#039;&#039;&amp;quot;, &amp;quot;P1907&amp;quot;, &amp;quot;http://adb.anu.edu.au/biography/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;The Australian Women&#039;s Register&#039;&#039;&amp;quot;, &amp;quot;P4186&amp;quot;, &amp;quot;http://www.womenaustralia.info/biogs/$1.htm&amp;quot;},&lt;br /&gt;
{&amp;quot;Base de données des élites suisses&amp;quot;, &amp;quot;P6231&amp;quot;, &amp;quot;https://www2.unil.ch/elitessuisses/index.php?page=detailPerso&amp;amp;idIdentite=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Biografisch Woordenboek van Nederland&#039;&#039;&amp;quot;, &amp;quot;P7941&amp;quot;, &amp;quot;http://resources.huygens.knaw.nl/bwn1880-2000/BWN/lemmata/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Biographie nationale de Belgique&#039;&#039;&amp;quot;, &amp;quot;P6234&amp;quot;, &amp;quot;http://www.academieroyale.be/fr/la-biographie-nationale-personnalites-detail/personnalites/$1/Vrai/&amp;quot;},&lt;br /&gt;
{&amp;quot;Biographie vosgienne&amp;quot;, &amp;quot;P6059&amp;quot;, &amp;quot;https://www.ecrivosges.com/vosgiens/bio.php?id=$1&amp;amp;biochrono=Biographie&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Biografisch Portaal van Nederland&#039;&#039;&amp;quot;, &amp;quot;P651&amp;quot;, &amp;quot;http://www.biografischportaal.nl/persoon/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Biographical Dictionary of Georgia&#039;&#039;&amp;quot;, &amp;quot;P4991&amp;quot;, &amp;quot;http://www.nplg.gov.ge/bios/en/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Biographical Dictionary of Iowa&#039;&#039;&amp;quot;, &amp;quot;P6851&amp;quot;, &amp;quot;http://uipress.lib.uiowa.edu/bdi/DetailsPage.aspx?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Biographisches Lexikon zur Geschichte Südosteuropas&#039;&#039;&amp;quot;, &amp;quot;P7928&amp;quot;, &amp;quot;https://www.biolex.ios-regensburg.de/BioLexViewview.php?ID=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;BiographySampo&#039;&#039;&amp;quot;, &amp;quot;P9324&amp;quot;, &amp;quot;https://biografiasampo.fi/henkilo/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;BlackPast&amp;quot;, &amp;quot;P6723&amp;quot;, &amp;quot;https://www.blackpast.org/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Britannica&#039;&#039;&amp;quot;, &amp;quot;P1417&amp;quot;, &amp;quot;https://www.britannica.com/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Brockhaus&#039;&#039;&amp;quot;, &amp;quot;P5019&amp;quot;, &amp;quot;https://brockhaus.de/ecs/enzy/article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;CALS Encyclopedia of Arkansas&#039;&#039;&amp;quot;, &amp;quot;P7685&amp;quot;, &amp;quot;https://encyclopediaofarkansas.net/entries/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;China Biographical Database Project&#039;&#039;&amp;quot;, &amp;quot;P497&amp;quot;, &amp;quot;http://db1.ihp.sinica.edu.tw/cbdbc/cbdbkmeng?~~AAA$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Collective Biographies of Women&#039;&#039;&amp;quot;, &amp;quot;P4539&amp;quot;, &amp;quot;http://cbw.iath.virginia.edu/women_display.php?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Colorado Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7680&amp;quot;, &amp;quot;https://coloradoencyclopedia.org/article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dansk biografisk leksikon&#039;&#039;&amp;quot;, &amp;quot;P8341&amp;quot;, &amp;quot;https://biografiskleksikon.lex.dk/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dansk kvindebiografisk leksikon&#039;&#039;&amp;quot;, &amp;quot;P7939&amp;quot;, &amp;quot;https://kvindebiografiskleksikon.lex.dk/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Den Store Danske Encyklopædi&#039;&#039;&amp;quot;, &amp;quot;P8313&amp;quot;, &amp;quot;https://denstoredanske.lex.dk//$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Deutsche Biographie&#039;&#039;&amp;quot;, &amp;quot;P7902&amp;quot;, &amp;quot;http://www.deutsche-biographie.de/$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Diccionari biogràfic de dones&#039;&#039;&amp;quot;, &amp;quot;P2498&amp;quot;, &amp;quot;http://dbd.cat/fitxa_biografies.php?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Diccionario Biográfico Español&#039;&#039;&amp;quot;, &amp;quot;P4459&amp;quot;, &amp;quot;http://dbe.rah.es/biografias/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionary of Irish Biography&#039;&#039;&amp;quot;, &amp;quot;P6829&amp;quot;, &amp;quot;https://doi.org/10.3318/dib.$1.v1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionary of New Zealand Biography&#039;&#039;&amp;quot;, &amp;quot;P2745&amp;quot;, &amp;quot;http://www.teara.govt.nz/en/biographies/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionary of Sydney&#039;&#039;&amp;quot;, &amp;quot;P3794&amp;quot;, &amp;quot;http://dictionaryofsydney.org/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionary of Ulster Biography&#039;&#039;&amp;quot;, &amp;quot;P2029&amp;quot;, &amp;quot;http://www.newulsterbiography.co.uk/index.php/home/viewPerson/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionary of Welsh Biography&#039;&#039;&amp;quot;, &amp;quot;P1648&amp;quot;, &amp;quot;http://wbo.llgc.org.uk/en/$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionary of Wisconsin History&#039;&#039;&amp;quot;, &amp;quot;P7614&amp;quot;, &amp;quot;https://www.wisconsinhistory.org/Records/Article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire biographique du Canada&#039;&#039;&amp;quot;, &amp;quot;P2753&amp;quot;, &amp;quot;http://www.biographi.ca/fr/bio/$1F.html&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire biographique du lycée Clemenceau&#039;&#039;&amp;quot;, &amp;quot;P4930&amp;quot;, &amp;quot;https://www.lyceedenantes.fr/julien/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire biographique suédois&#039;&#039;&amp;quot;, &amp;quot;P3217&amp;quot;, &amp;quot;https://sok.riksarkivet.se/sbl/Presentation.aspx?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire des femmes de l&#039;ancienne France&#039;&#039;&amp;quot;, &amp;quot;P7962&amp;quot;, &amp;quot;http://siefar.org/dictionnaire/fr/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire des Vendéens&#039;&#039;&amp;quot;, &amp;quot;P6728&amp;quot;, &amp;quot;http://www.vendeens-archives.vendee.fr/personnalite-$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire des Wallons&#039;&#039;&amp;quot;, &amp;quot;P6342&amp;quot;, &amp;quot;http://connaitrelawallonie.wallonie.be/fr/wallons-marquants/dictionnaire/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire du Jura&#039;&#039;&amp;quot;, &amp;quot;P1276&amp;quot;, &amp;quot;http://www.diju.ch/f/notices/detail/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire historique de la Suisse&#039;&#039;&amp;quot;, &amp;quot;P902&amp;quot;, &amp;quot;http://www.hls-dhs-dss.ch/textes/f/F$1.php&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dictionnaire universel des créatrices&#039;&#039;&amp;quot;, &amp;quot;P7578&amp;quot;, &amp;quot;https://www.dictionnaire-creatrices.com/fiche-$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Digitaal Vrouwenlexicon van Nederland&#039;&#039;&amp;quot;, &amp;quot;P1788&amp;quot;, &amp;quot;http://resources.huygens.knaw.nl/vrouwenlexicon/lemmata/data/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dizionario biografico dei Friulani&#039;&#039;&amp;quot;, &amp;quot;P7203&amp;quot;, &amp;quot;http://www.dizionariobiograficodeifriulani.it/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dizionario biografico degli italiani&#039;&#039;&amp;quot;, &amp;quot;P1986&amp;quot;, &amp;quot;https://www.treccani.it/enciclopedia/$1_(Dizionario-Biografico)&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Dizionario di Storia&#039;&#039;&amp;quot;, &amp;quot;P6404&amp;quot;, &amp;quot;https://www.treccani.it/enciclopedia/$1_(Dizionario-di-Storia)/&amp;quot;},&lt;br /&gt;
{&amp;quot;E-archiv.li&amp;quot;, &amp;quot;P860&amp;quot;, &amp;quot;http://www.e-archiv.li/personDetail.aspx?persID=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Eesti biograafiline andmebaas ISIK&amp;quot;, &amp;quot;P7509&amp;quot;, &amp;quot;http://www2.kirmus.ee/biblioserver/isik/index.php?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Enciclopédia Açoriana&#039;&#039;&amp;quot;, &amp;quot;P1385&amp;quot;, &amp;quot;http://www.culturacores.azores.gov.pt/ea/pesquisa/Default.aspx?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Enciclopedia delle donne&#039;&#039;&amp;quot;, &amp;quot;P6488&amp;quot;, &amp;quot;http://www.enciclopediadelledonne.it/biografie/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Enciclopedia italiana&#039;&#039;&amp;quot;, &amp;quot;P4223&amp;quot;, &amp;quot;https://www.treccani.it/enciclopedia/$1_(Enciclopedia-Italiana)/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Enciclopedia De Agostini&#039;&#039;&amp;quot;, &amp;quot;P6706&amp;quot;, &amp;quot;http://www.sapere.it/enciclopedia/$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Enciclopédia Itaú Cultural&#039;&#039;&amp;quot;, &amp;quot;P4399&amp;quot;, &amp;quot;http://enciclopedia.itaucultural.org.br/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopædia Iranica&#039;&#039;&amp;quot;, &amp;quot;P3021&amp;quot;, &amp;quot;http://www.iranicaonline.org/articles/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia Ternopil&#039;&#039;&amp;quot;, &amp;quot;P8144&amp;quot;, &amp;quot;https://ternopedia.te.ua/index.php?curid=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia of Alabama&#039;&#039;&amp;quot;, &amp;quot;P6010&amp;quot;, &amp;quot;http://www.encyclopediaofalabama.org/article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia of Chicago&#039;&#039;&amp;quot;, &amp;quot;P7901&amp;quot;, &amp;quot;http://www.encyclopedia.chicagohistory.org/pages/$1.html&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia of Cleveland History&#039;&#039;&amp;quot;, &amp;quot;P7644&amp;quot;, &amp;quot;https://case.edu/ech/articles/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia of Greater Philadelphia&#039;&#039;&amp;quot;, &amp;quot;P9281&amp;quot;, &amp;quot;https://philadelphiaencyclopedia.org/archive/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;The Encyclopedia of Oklahoma History and Culture&#039;&#039;&amp;quot;, &amp;quot;P7723&amp;quot;, &amp;quot;https://www.okhistory.org/publications/enc/entry.php?entry=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia of the Great Plains&#039;&#039;&amp;quot;, &amp;quot;P7686&amp;quot;, &amp;quot;http://plainshumanities.unl.edu/encyclopedia/doc/egp.$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopedia Virginia&#039;&#039;&amp;quot;, &amp;quot;P5981&amp;quot;, &amp;quot;https://www.encyclopediavirginia.org/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;L&#039;Encyclopédie canadienne&#039;&#039;&amp;quot;, &amp;quot;P5395&amp;quot;, &amp;quot;https://www.thecanadianencyclopedia.ca/fr/article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopédie de l&#039;histoire de Brno&#039;&#039;&amp;quot;, &amp;quot;P8116&amp;quot;, &amp;quot;https://encyklopedie.brna.cz/home-mmb/?acc=profil_osobnosti&amp;amp;load=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Encyclopédie de l&#039;Ukraine moderne&#039;&#039;&amp;quot;, &amp;quot;P4613&amp;quot;, &amp;quot;http://esu.com.ua/search_articles.php?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Frankfurter Personenlexikon&#039;&#039;&amp;quot;, &amp;quot;P8044&amp;quot;, &amp;quot;https://frankfurter-personenlexikon.de/node/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Gran Enciclopedia Aragonesa&#039;&#039;&amp;quot;, &amp;quot;P1807&amp;quot;, &amp;quot;http://www.enciclopedia-aragonesa.com/voz.asp?voz_id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Gran Enciclopèdia Catalana&#039;&#039;&amp;quot;, &amp;quot;P1296&amp;quot;, &amp;quot;https://www.enciclopedia.cat/EC-GEC-$1.xml&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Gran Enciclopedia de Navarra&#039;&#039;&amp;quot;, &amp;quot;P7388&amp;quot;, &amp;quot;http://www.enciclopedianavarra.com/?page_id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Handbook of Texas Online&#039;&#039;&amp;quot;, &amp;quot;P6015&amp;quot;, &amp;quot;https://tshaonline.org/handbook/online/articles/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;House Divided&amp;quot;, &amp;quot;P8400&amp;quot;, &amp;quot;http://hd.housedivided.dickinson.edu/node/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Hrvatska Enciklopedija&#039;&#039;&amp;quot;, &amp;quot;P7982&amp;quot;, &amp;quot;http://www.enciklopedija.hr/Natuknica.aspx?ID=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Kansallisbiografia&#039;&#039;&amp;quot;, &amp;quot;P2180&amp;quot;, &amp;quot;https://kansallisbiografia.fi/kansallisbiografia/henkilo/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Kansaspedia&#039;&#039;&amp;quot;, &amp;quot;P7687&amp;quot;, &amp;quot;https://www.kshs.org/kansapedia/wd/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Larousse&#039;&#039;&amp;quot;, &amp;quot;P6058&amp;quot;, &amp;quot;https://www.larousse.fr/encyclopedie/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Nationalencyklopedin&#039;&#039;&amp;quot;, &amp;quot;P3222&amp;quot;, &amp;quot;https://www.ne.se/uppslagsverk/encyklopedi/lång/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Macdonald Dictionary&#039;&#039;&amp;quot;, &amp;quot;P8067&amp;quot;, &amp;quot;	https://collection.canterburymuseum.com/objects/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Maine: An Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7697&amp;quot;, &amp;quot;https://maineanencyclopedia.com/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Mississippi Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7688&amp;quot;, &amp;quot;https://mississippiencyclopedia.org/entries/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;MNopedia&amp;quot;, &amp;quot;P6283&amp;quot;, &amp;quot;https://www.mnopedia.org/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Munzinger&amp;quot;, &amp;quot;P1284&amp;quot;, &amp;quot;https://www.munzinger.de/search/go/document.jsp?id=$1&amp;quot;},&lt;br /&gt;
{&amp;quot;NCpedia&amp;quot;, &amp;quot;P6284&amp;quot;, &amp;quot;https://www.ncpedia.org/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Notable Kentucky African Americans Database&amp;quot;, &amp;quot;P8156&amp;quot;, &amp;quot;https://nkaa.uky.edu/nkaa/items/show/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Nouveau dictionnaire de biographie alsacienne&#039;&#039;&amp;quot;, &amp;quot;P4992&amp;quot;, &amp;quot;http://www.alsace-histoire.org/netdba/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;New Georgia Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P4903&amp;quot;, &amp;quot;http://www.georgiaencyclopedia.org/articles/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Norsk biografisk leksikon&#039;&#039;&amp;quot;, &amp;quot;P5080&amp;quot;, &amp;quot;https://nbl.snl.no/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;Online Nevada Encyclopedia&amp;quot;, &amp;quot;P7689&amp;quot;, &amp;quot;http://www.onlinenevada.org/articles/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;The Oregon Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7691&amp;quot;, &amp;quot;https://oregonencyclopedia.org/articles/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Österreichisches Biographisches Lexikon 1815–1950&#039;&#039;&amp;quot;, &amp;quot;P6194&amp;quot;, &amp;quot;http://www.biographien.ac.at/oebl/oebl_$1.xml&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Oxford Dictionary of National Biography&#039;&#039;&amp;quot;, &amp;quot;P1415&amp;quot;, &amp;quot;https://www.oxforddnb.com/view/article/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Polski Słownik Biograficzny&#039;&#039;&amp;quot;, &amp;quot;P8130&amp;quot;, &amp;quot;https://www.ipsb.nina.gov.pl/a/biografia/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Proleksis enciklopedija&#039;&#039;&amp;quot;, &amp;quot;P8349&amp;quot;, &amp;quot;https://proleksis.lzmk.hr/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Sächsische Biografie&#039;&#039;&amp;quot;, &amp;quot;P1710&amp;quot;, &amp;quot;http://saebi.isgv.de/gnd/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Slovenska biografija&#039;&#039;&amp;quot;, &amp;quot;P1254&amp;quot;, &amp;quot;http://www.slovenska-biografija.si/oseba/sbi$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;South Carolina Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7690&amp;quot;, &amp;quot;http://www.scencyclopedia.org/sce/entries/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;Stadtlexikon Karlsruhe&amp;quot;, &amp;quot;P9285&amp;quot;, &amp;quot;https://stadtlexikon.karlsruhe.de/index.php/De:Lexikon:$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Store norske leksikon&#039;&#039;&amp;quot;, &amp;quot;P4342&amp;quot;, &amp;quot;https://snl.no/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Svenskt kvinnobiografiskt lexikon&#039;&#039;&amp;quot;, &amp;quot;P4963&amp;quot;, &amp;quot;https://www.skbl.se/sv/artikel/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Tennessee Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P6016&amp;quot;, &amp;quot;https://tennesseeencyclopedia.net/entries/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Thomas Jefferson Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P8630&amp;quot;, &amp;quot;https://www.monticello.org/site/research-and-collections/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Treccani&#039;&#039;&amp;quot;, &amp;quot;P3365&amp;quot;, &amp;quot;http://www.treccani.it/enciclopedia/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Universalis&#039;&#039;&amp;quot;, &amp;quot;P3219&amp;quot;, &amp;quot;https://www.universalis.fr/encyclopedie/$1/&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Uppslagsverket Finland&#039;&#039;&amp;quot;, &amp;quot;P4854&amp;quot;, &amp;quot;https://uppslagsverket.fi/sv/sok/view-170045-$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Utah History Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7692&amp;quot;, &amp;quot;https://www.uen.org/utah_history_encyclopedia/$1.shtml&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Visuotinė lietuvių enciklopedija&#039;&#039;&amp;quot;, &amp;quot;P7666&amp;quot;, &amp;quot;https://www.vle.lt/Straipsnis/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;The West Virginia Encyclopedia&#039;&#039;&amp;quot;, &amp;quot;P7695&amp;quot;, &amp;quot;https://www.wvencyclopedia.org/articles/$1&amp;quot;},&lt;br /&gt;
{&amp;quot;&#039;&#039;Who&#039;s Who in France&#039;&#039;&amp;quot;, &amp;quot;P4124&amp;quot;, &amp;quot;https://www.whoswho.fr/bio/-_$1&amp;quot;, condition = whoWhosWhoCondition},&lt;br /&gt;
{&amp;quot;WyoHistory.org&amp;quot;, &amp;quot;P7693&amp;quot;, &amp;quot;https://www.wyohistory.org/encyclopedia/$1&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)	&lt;br /&gt;
	local args = Outils.extractArgs(frame)&lt;br /&gt;
	local id = Outils.validTextArg(args , &#039;id&#039;, &#039;wikidata&#039;, &#039;entity&#039;, 1)&lt;br /&gt;
	local nocat = args.nocat or mw.title.getCurrentTitle().namespace ~= 0&lt;br /&gt;
&lt;br /&gt;
	id = id or mw.wikibase.getEntityIdForCurrentPage() or &#039;&#039;&lt;br /&gt;
	if not (mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id)) then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Article utilisant le modèle Dictionnaires inactif]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, base in pairs(bases) do&lt;br /&gt;
		&lt;br /&gt;
		if not(base.condition) or base.condition(id) then&lt;br /&gt;
			local val = wikidata.formatStatements{entity = id, text = base[1], property = base[2], urlpattern = base[3], numval = 1, addcat = true}&lt;br /&gt;
			if val then &lt;br /&gt;
				table.insert(vals, val)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #vals == 0 then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Article utilisant le modèle Dictionnaires inactif]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local header = &#039;&#039;&lt;br /&gt;
	if #vals &amp;gt; 1 then&lt;br /&gt;
		header = &amp;quot;Notices dans des dictionnaires ou encyclopédies généralistes&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		header = &#039;Notice dans un dictionnaire ou une encyclopédie généraliste&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cats = &#039;&#039;&lt;br /&gt;
	if not nocat then&lt;br /&gt;
		cats = &amp;quot;[[Catégorie:Page pointant vers des bases externes]][[Catégorie:Page pointant vers des dictionnaires ou encyclopédies généralistes]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = wikidata.addLinkBack(header, id, &#039;identifiers&#039;) -- lien vers la section approriété de Wikidata&lt;br /&gt;
	local valsHtml = mw.html.create(&#039;div&#039;)&lt;br /&gt;
		:addClass(&#039;liste-horizontale&#039;)&lt;br /&gt;
		:wikitext(title .. &#039; : &#039;)&lt;br /&gt;
		:tag(&#039;ul&#039;)&lt;br /&gt;
	for _, val in pairs(vals) do&lt;br /&gt;
		valsHtml:tag(&#039;li&#039;):wikitext(val):done():wikitext(&#039; &#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(valsHtml:allDone()) .. cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Weblink&amp;diff=330</id>
		<title>Module:Weblink</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Weblink&amp;diff=330"/>
		<updated>2024-09-20T14:16:27Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = {}  function p.makelink(url, showntext) 	if (not url) or (url == &amp;quot;-&amp;quot;) then  		return nil 	end  	--I validation de l&amp;#039;url (paramètre URL) 	url = mw.text.trim(url)   	-- II texte à afficher (paramètre &amp;quot;showntext&amp;quot;)  	--- valeur spéciale : aucun texte 	if showntext == &amp;quot;-&amp;quot; then 		return url 	end  	--- laissé vide : texte basé sur l&amp;#039;URL 	if not showntext then 		if mw.ustring.sub(url, 1, 1) == &amp;quot;[&amp;quot; then 			return url 		end 		local sub12 = mw.ustring.sub(ur... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.makelink(url, showntext)&lt;br /&gt;
	if (not url) or (url == &amp;quot;-&amp;quot;) then &lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--I validation de l&#039;url (paramètre URL)&lt;br /&gt;
	url = mw.text.trim(url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- II texte à afficher (paramètre &amp;quot;showntext&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--- valeur spéciale : aucun texte&lt;br /&gt;
	if showntext == &amp;quot;-&amp;quot; then&lt;br /&gt;
		return url&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--- laissé vide : texte basé sur l&#039;URL&lt;br /&gt;
	if not showntext then&lt;br /&gt;
		if mw.ustring.sub(url, 1, 1) == &amp;quot;[&amp;quot; then&lt;br /&gt;
			return url&lt;br /&gt;
		end&lt;br /&gt;
		local sub12 = mw.ustring.sub(url, 1, 12)&lt;br /&gt;
		if sub12 == &#039;&amp;lt;span class=&#039; or sub12 == &#039;&amp;lt;cite class=&#039; or sub12 == &#039;&amp;lt;abbr class=&#039; then&lt;br /&gt;
			-- résultat produit par [[modèle:URL]], [[modèle:Lien web]], [[modèle:Site officiel]], ou [[modèle:en]]&lt;br /&gt;
			return url&lt;br /&gt;
		end&lt;br /&gt;
		local space = mw.ustring.find(url, &#039; &#039;) -- si le nom du site est passé par mégarde dans l&#039;URL, le séparer&lt;br /&gt;
		if space then&lt;br /&gt;
			local full = url&lt;br /&gt;
			url = mw.ustring.sub(full, 1, space - 1)&lt;br /&gt;
			showntext = mw.ustring.sub(full, space + 1)&lt;br /&gt;
		else&lt;br /&gt;
			showntext = string.gsub( url, &#039;https?://&#039;, &#039;&#039;)&lt;br /&gt;
			---- remove trailing slash&lt;br /&gt;
			if string.sub(showntext, #showntext, #showntext) == &#039;/&#039; then&lt;br /&gt;
				showntext = string.sub(showntext, 1, #showntext - 1)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &#039;[&#039; .. url .. &#039; &#039; .. showntext .. &#039;]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makelinks(stringlist, separator)&lt;br /&gt;
	if not type(stringlist) == table then&lt;br /&gt;
		return error(&#039;stringlist should be table&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if not separator then&lt;br /&gt;
		separator = &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	for i, j in pairs(stringlist) do&lt;br /&gt;
		stringlist[i] = p.makelink(j)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(stringlist, separator)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Autres_projets&amp;diff=329</id>
		<title>Modèle:Autres projets</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Autres_projets&amp;diff=329"/>
		<updated>2024-09-20T14:15:22Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Autres projets/styles.css&amp;quot; /&amp;gt;&amp;lt;div class=&amp;quot;autres-projets boite-grise boite-a-droite noprint js-interprojets&amp;quot;&amp;gt; {{#if:{{{1|}}}{{{commons|}}}{{{Commons|}}}{{{wikispecies|}}}{{{Wikispecies|}}}{{{species|}}}{{{wiktionary|}}}{{{Wiktionary|}}}{{{wikt|}}}{{{wikiversity|}}}{{{Wikiversity|}}}{{{v|}}}{{{wikibooks|}}}{{{Wikibooks|}}}{{{b|}}}{{{wikisource|}}}{{{Wikisource|}}}{{{s|}}}{{{wikiquote|}}}{{{Wikiquote|}}}{{{q|}}}{{{wikinews|}}}{{{Wik... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Autres projets/styles.css&amp;quot; /&amp;gt;&amp;lt;div class=&amp;quot;autres-projets boite-grise boite-a-droite noprint js-interprojets&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{1|}}}{{{commons|}}}{{{Commons|}}}{{{wikispecies|}}}{{{Wikispecies|}}}{{{species|}}}{{{wiktionary|}}}{{{Wiktionary|}}}{{{wikt|}}}{{{wikiversity|}}}{{{Wikiversity|}}}{{{v|}}}{{{wikibooks|}}}{{{Wikibooks|}}}{{{b|}}}{{{wikisource|}}}{{{Wikisource|}}}{{{s|}}}{{{wikiquote|}}}{{{Wikiquote|}}}{{{q|}}}{{{wikinews|}}}{{{Wikinews|}}}{{{n|}}}{{{meta|}}}{{{m|}}}{{{outreach|}}}{{{wikidata|}}}{{{Wikidata|}}}{{{d|}}}{{{wikivoyage|}}}{{{Wikivoyage|}}}{{{voy|}}}{{{incubator|}}}{{{Incubator|}}}{{{incubateur|}}}{{{Incubateur|}}}|&lt;br /&gt;
&amp;lt;p class=&amp;quot;titre&amp;quot;&amp;gt;Sur les autres projets Wikimedia :&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul class=&amp;quot;noarchive plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{commons|{{{1|{{{Commons|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;commons&amp;quot;&amp;gt;[{{fullurl:Commons:{{{commons|{{{1|{{{Commons|}}}}}}}}}}}?uselang=fr {{#if:{{{commons titre|}}}|{{{commons titre}}}|{{PAGENAME}}}}], sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikimedia Commons&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{commons2|{{{Commons2|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;commons&amp;quot;&amp;gt;[{{fullurl:Commons:{{{commons2|{{{Commons2|}}}}}}}}?uselang=fr {{#if:{{{commons titre2|}}}|{{{commons titre2}}}|{{PAGENAME}}}}], sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikimedia Commons&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{commons3|{{{Commons3|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;commons&amp;quot;&amp;gt;[{{fullurl:Commons:{{{commons3|{{{Commons3|}}}}}}}}?uselang=fr {{#if:{{{commons titre3|}}}|{{{commons titre3}}}|{{PAGENAME}}}}], sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikimedia Commons&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikispecies|{{{species|{{{Wikispecies|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikispecies&amp;quot;&amp;gt;[[wikispecies:{{{wikispecies|{{{species|{{{Wikispecies|}}}}}}}}}|{{#if:{{{wikispecies titre|}}}|{{{wikispecies titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikispecies&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikispecies2|{{{species2|{{{Wikispecies2|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikispecies&amp;quot;&amp;gt;[[wikispecies:{{{wikispecies2|{{{species2|{{{Wikispecies2|}}}}}}}}}|{{#if:{{{wikispecies titre2|}}}|{{{wikispecies titre2}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikispecies&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikispecies3|{{{species3|{{{Wikispecies3|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikispecies&amp;quot;&amp;gt;[[wikispecies:{{{wikispecies3|{{{species3|{{{Wikispecies3|}}}}}}}}}|{{#if:{{{wikispecies titre3|}}}|{{{wikispecies titre3}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikispecies&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wiktionary|{{{wikt|{{{Wiktionary|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wiktionary&amp;quot;&amp;gt;[[wikt:{{{wiktionary|{{{wikt|{{{Wiktionary|}}}}}}}}}|{{#if:{{{wiktionary titre|}}}|{{{wiktionary titre}}}|{{{wiktionary|{{{wikt|{{{Wiktionary|}}}}}}}}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur le &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wiktionnaire&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;{{#if:{{{wiktionary thésaurus|{{{wikt thésaurus|}}}}}}|{{espace}}([[wikt:Thésaurus:{{{wiktionary thésaurus|{{{wikt thésaurus|}}}}}}{{#if:{{#titleparts:{{{wiktionary thésaurus|{{{wikt thésaurus|}}}}}}||2}}||/français}}|thésaurus]])}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wiktionary2|{{{wikt2|{{{Wiktionary2|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wiktionary&amp;quot;&amp;gt;[[wikt:{{{wiktionary2|{{{wikt2|{{{Wiktionary2|}}}}}}}}}|{{#if:{{{wiktionary titre2|}}}|{{{wiktionary titre2}}}|{{{wiktionary2|{{{wikt2|{{{Wiktionary2|}}}}}}}}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur le &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wiktionnaire&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wiktionary3|{{{wikt3|{{{Wiktionary3|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wiktionary&amp;quot;&amp;gt;[[wikt:{{{wiktionary3|{{{wikt3|{{{Wiktionary3|}}}}}}}}}|{{#if:{{{wiktionary titre3|}}}|{{{wiktionary titre3}}}|{{{wiktionary3|{{{wikt3|{{{Wiktionary3|}}}}}}}}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur le &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wiktionnaire&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wiktionary4|{{{wikt4|{{{Wiktionary4|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wiktionary&amp;quot;&amp;gt;[[wikt:{{{wiktionary4|{{{wikt4|{{{Wiktionary4|}}}}}}}}}|{{#if:{{{wiktionary titre4|}}}|{{{wiktionary titre4}}}|{{{wiktionary4|{{{wikt4|{{{Wiktionary4|}}}}}}}}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur le &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wiktionnaire&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wiktionary5|{{{wikt5|{{{Wiktionary5|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wiktionary&amp;quot;&amp;gt;[[wikt:{{{wiktionary5|{{{wikt5|{{{Wiktionary5|}}}}}}}}}|{{#if:{{{wiktionary titre5|}}}|{{{wiktionary titre5}}}|{{{wiktionary5|{{{wikt5|{{{Wiktionary5|}}}}}}}}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur le &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wiktionnaire&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikiversity|{{{v|{{{Wikiversity|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikiversity&amp;quot;&amp;gt;[[v:{{{wikiversity|{{{v|{{{Wikiversity|}}}}}}}}}|{{#if:{{{wikiversity titre|}}}|{{{wikiversity titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikiversity&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikiversity2|{{{Wikiversity2|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikiversity&amp;quot;&amp;gt;[[v:{{{wikiversity2|{{{Wikiversity2|}}}}}}|{{#if:{{{wikiversity titre2|}}}|{{{wikiversity titre2}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikiversity&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikibooks|{{{b|{{{Wikibooks|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikibooks&amp;quot;&amp;gt;[[b:{{{wikibooks|{{{b|{{{Wikibooks|}}}}}}}}}|{{#if:{{{wikibooks titre|}}}|{{{wikibooks titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikibooks&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikibooks2|{{{b2|{{{Wikibooks2|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikibooks&amp;quot;&amp;gt;[[b:{{{wikibooks2|{{{b2|{{{Wikibooks2|}}}}}}}}}|{{#if:{{{wikibooks titre2|}}}|{{{wikibooks titre2}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikibooks&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikisource|{{{s|{{{Wikisource|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikisource&amp;quot;&amp;gt;[[s:{{{wikisource|{{{s|{{{Wikisource|}}}}}}}}}|{{#if:{{{wikisource titre|}}}|{{{wikisource titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikisource&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikisource2|{{{Wikisource2|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikisource&amp;quot;&amp;gt;[[s:{{{wikisource2|{{{Wikisource2|}}}}}}|{{#if:{{{wikisource titre2|}}}|{{{wikisource titre2}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikisource&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikisource3|{{{Wikisource3|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikisource&amp;quot;&amp;gt;[[s:{{{wikisource3|{{{Wikisource3|}}}}}}|{{#if:{{{wikisource titre3|}}}|{{{wikisource titre3}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikisource&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikiquote|{{{q|{{{Wikiquote|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikiquote&amp;quot;&amp;gt;[[q:{{{wikiquote|{{{q|{{{Wikiquote|}}}}}}}}}|{{#if:{{{wikiquote titre|}}}|{{{wikiquote titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikiquote&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikinews|{{{n|{{{Wikinews|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikinews&amp;quot;&amp;gt;[[n:{{{wikinews|{{{n|{{{Wikinews|}}}}}}}}}|{{#if:{{{wikinews titre|}}}|{{{wikinews titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikinews&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikinews2|{{{Wikinews2|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikinews&amp;quot;&amp;gt;[[n:{{{wikinews2|{{{Wikinews2|}}}}}}|{{#if:{{{wikinews titre2|}}}|{{{wikinews titre2}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikinews&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikinews3|{{{Wikinews3|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikinews&amp;quot;&amp;gt;[[n:{{{wikinews3|{{{Wikinews3|}}}}}}|{{#if:{{{wikinews titre3|}}}|{{{wikinews titre3}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikinews&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{meta|{{{m|}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;metawiki&amp;quot;&amp;gt;[[m:{{{meta|{{{m|}}}}}}|{{#if:{{{meta titre|}}}|{{{meta titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Meta-Wiki&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{outreach|}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikimedia&amp;quot;&amp;gt;[[outreach:{{{outreach}}}|{{#if:{{{outreach titre|}}}|{{{outreach titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Outreach&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{wikidata|{{{d|{{{Wikidata|}}}}}}}}}|{{#ifeq:{{NAMESPACE}}|{{ns:0}}|[[Catégorie:Page avec lien wikidata dans Autres projets]]|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikidata&amp;quot;&amp;gt;[[d:{{{wikidata|{{{d|{{{Wikidata|}}}}}}}}}|{{#if:{{{wikidata titre|}}}|{{{wikidata titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikidata&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}}}{{#if:{{{wikivoyage|{{{voy|{{{Wikivoyage|}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;wikivoyage&amp;quot;&amp;gt;[[voy:{{{wikivoyage|{{{voy|{{{Wikivoyage|}}}}}}}}}|{{#if:{{{wikivoyage titre|}}}|{{{wikivoyage titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;sur &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;Wikivoyage&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{incubator|{{{Incubator|{{{incubateur|{{{Incubateur|}}}}}}}}}}}}|&lt;br /&gt;
&amp;lt;li class=&amp;quot;incubator&amp;quot;&amp;gt;[[incubator:{{{incubator|{{{Incubator|{{{incubateur|{{{Incubateur|}}}}}}}}}}}}|{{#if:{{{incubateur titre|}}}|{{{incubateur titre}}}|{{PAGENAME}}}}]], &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;dans &amp;lt;span class=&amp;quot;project&amp;quot;&amp;gt;l’Incubateur Wikimédia&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
|{{#ifeq:{{NAMESPACE}}|{{ns:0}}{{ns:4}}{{ns:10}}{{ns:12}}{{ns:14}}|&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Erreur d&#039;utilisation : au moins un paramètre est requis ([[Modèle:Autres projets|aide]]).&amp;lt;/span&amp;gt;[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Autres projets]]}}&lt;br /&gt;
}}&amp;lt;!--fin du premier #if--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Toutes les métadonnées (catégories, interwikis) dans la page de documentation SVP ! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- Quelques catégories de maintenance en rapport avec Wikidata --&amp;gt;&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#switch:{{NAMESPACE}}||{{ns:14}}=&amp;lt;!-- Articles et catégories seulement. --&amp;gt;&lt;br /&gt;
 {{#if:{{#property:P373}}&lt;br /&gt;
 | {{#if:{{{commons|{{{1|{{{Commons|}}}}}}}}}&lt;br /&gt;
  | {{#ifeq:{{FULLPAGENAMEE:Category:{{#property:P373}}}}|{{FULLPAGENAMEE:{{{commons|{{{1|{{{Commons|}}}}}}}}}}}&lt;br /&gt;
   | [[Catégorie:Catégorie Commons avec lien local identique sur Wikidata]] &amp;lt;!-- Objectif --&amp;gt;&lt;br /&gt;
   | [[Catégorie:Catégorie Commons avec lien local différent sur Wikidata]] &amp;lt;!-- Le bon lien est à déterminer--&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
 | {{#if:{{{commons|{{{1|{{{Commons|}}}}}}}}}&lt;br /&gt;
   | [[Catégorie:Catégorie Commons sans lien sur Wikidata]] &amp;lt;!-- Il faut importer ceux-là sur Wikidata --&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
 }}&lt;br /&gt;
 }}&lt;br /&gt;
}}{{#ifeq:{{NAMESPACE}}|{{ns:0}}&lt;br /&gt;
    | {{#if:{{{commons|{{{1|{{{Commons|}}}}}}}}}{{{wikispecies|{{{species|{{{Wikispecies|}}}}}}}}}{{{wiktionary|{{{wikt|{{{Wiktionary|}}}}}}}}}{{{wikiversity|{{{v|{{{Wikiversity|}}}}}}}}}{{{wikibooks|{{{b|{{{Wikibooks|}}}}}}}}}{{{wikisource|{{{s|{{{Wikisource|}}}}}}}}}{{{wikiquote|{{{q|{{{Wikiquote|}}}}}}}}}{{{wikinews|{{{n|{{{Wikinews|}}}}}}}}}{{{meta|{{{m|}}}}}}{{{outreach|}}}{{{wikidata|{{{d|{{{Wikidata|}}}}}}}}}{{{wikivoyage|{{{voy|{{{Wikivoyage|}}}}}}}}}{{{incubator|{{{Incubator|{{{incubateur|{{{Incubateur|}}}}}}}}}}}}&lt;br /&gt;
        |&lt;br /&gt;
        | [[Catégorie:Autres projets vide]]&lt;br /&gt;
      }}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Bases&amp;diff=328</id>
		<title>Modèle:Bases</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Bases&amp;diff=328"/>
		<updated>2024-09-20T14:14:46Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;includeonly&amp;gt;{{#invoke:Bases|tout}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{Documentation}} &amp;lt;/noinclude&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Bases|tout}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Class%C3%A9_MH&amp;diff=327</id>
		<title>Modèle:Classé MH</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Class%C3%A9_MH&amp;diff=327"/>
		<updated>2024-09-20T14:14:29Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;includeonly&amp;gt;alt=Logo monument historique&amp;amp;nbsp; Classé }} MH{{#if:{{{date|{{{1|}}}}}}|{{espace}}&amp;lt;small&amp;gt;({{{1}}}}}}{{#if:{{{2|}}}|,{{espace}}}}}}}{{#if:{{{3|}}}|,{{espace}}{{{3|}}}}})&amp;lt;/small&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{Documentation de source}} &amp;lt;/noinclude&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Fichier:Logo monument historique - rouge sans texte.svg|18px|link=|Monument historique|alt=Logo monument historique]]&amp;amp;nbsp;[[Monument historique (France)|{{ #ifeq: {{{accord|masculin}}} | féminin | Classée | Classé }} MH]]{{#if:{{{date|{{{1|}}}}}}|{{espace}}&amp;lt;small&amp;gt;([[{{{date|{{{1}}}}}}]]{{#if:{{{2|}}}|,{{espace}}[[{{{2|}}}]]}}{{#if:{{{3|}}}|,{{espace}}{{{3|}}}}})&amp;lt;/small&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation de source}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Dictionnaires&amp;diff=326</id>
		<title>Modèle:Dictionnaires</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Dictionnaires&amp;diff=326"/>
		<updated>2024-09-20T14:14:11Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;includeonly&amp;gt;{{#invoke:Dictionnaires|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;/noinclude&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Dictionnaires|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Mus%C3%A9e_de_France&amp;diff=325</id>
		<title>Modèle:Musée de France</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Mus%C3%A9e_de_France&amp;diff=325"/>
		<updated>2024-09-20T14:13:46Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;includeonly&amp;gt;alt=Logo Musée de France{{espace}}Musée de France{{#if:{{{date|{{{1|}}}}}}|{{espace}}&amp;lt;small&amp;gt;({{{1}}}}}}{{#if:{{{2|}}}|,{{espace}}}}}}}{{#if:{{{3|}}}|,{{espace}}{{{3|}}}}})&amp;lt;/small&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{Documentation de source}} Catégorie:Modèle lien interne Catégorie:Modèle affichant une icône &amp;lt;/noinclude&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Fichier:Logo label musée de France (icon only).svg|18px|Musée de France|alt=Logo Musée de France]]{{espace}}[[Musée de France]]{{#if:{{{date|{{{1|}}}}}}|{{espace}}&amp;lt;small&amp;gt;([[{{{date|{{{1}}}}}}]]{{#if:{{{2|}}}|,{{espace}}[[{{{2|}}}]]}}{{#if:{{{3|}}}|,{{espace}}{{{3|}}}}})&amp;lt;/small&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation de source}}&lt;br /&gt;
[[Catégorie:Modèle lien interne]]&lt;br /&gt;
[[Catégorie:Modèle affichant une icône]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Adresse/Formats&amp;diff=324</id>
		<title>Module:Adresse/Formats</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Adresse/Formats&amp;diff=324"/>
		<updated>2024-09-20T14:13:30Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « return { --[[ id du pays = { 	streetline = indiquer l&amp;#039;ordre numéro de rue, nom de la rue 	div1 = liste des types divisions administratives à afficher en premier 	div2 = liste des types divisions administratives à afficher en deuxième 	div3 = liste des types de divisions administrative à afficher en troisième 	div3vals = liste des subdivisions (pas de type de subdivisions à utiliser (plus efficient) 	directions = mots à ajouter pour &amp;quot;sud&amp;quot; &amp;quot;nord&amp;quot; etc. Par e... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
--[[&lt;br /&gt;
id du pays = {&lt;br /&gt;
	streetline = indiquer l&#039;ordre numéro de rue, nom de la rue&lt;br /&gt;
	div1 = liste des types divisions administratives à afficher en premier&lt;br /&gt;
	div2 = liste des types divisions administratives à afficher en deuxième&lt;br /&gt;
	div3 = liste des types de divisions administrative à afficher en troisième&lt;br /&gt;
	div3vals = liste des subdivisions (pas de type de subdivisions à utiliser (plus efficient)&lt;br /&gt;
	directions = mots à ajouter pour &amp;quot;sud&amp;quot; &amp;quot;nord&amp;quot; etc. Par exemple Canada: &amp;quot;sud, nord&amp;quot; ou états-unis &amp;quot;south, north&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
]]--&lt;br /&gt;
Q16 = { -- Canada&lt;br /&gt;
	streetline = &#039;$number $street $direction&#039;,&lt;br /&gt;
	directions = {Q659 = &#039;Nord&#039;, Q679 = &#039;Ouest&#039;, Q684 = &#039;Est&#039;, Q667 = &#039;Sud&#039;},&lt;br /&gt;
	div1 = {&#039;Q515&#039;, &#039;Q155239&#039;, &#039;Q3327873&#039;, &#039;Q3327899&#039;, &#039;Q3788231&#039;, &#039;Q3518810&#039;}, -- ville, ça marche ?&lt;br /&gt;
	div2vals = {&#039;Q176&#039;, &#039;Q1904&#039;, &#039;Q1948&#039;, &#039;Q1951&#039;, &#039;Q1952&#039;, &#039;Q1965&#039;, &#039;Q1974&#039;, &#039;Q1979&#039;, &#039;Q1989&#039;, &#039;Q2003&#039;, &#039;Q2007&#039;, &#039;Q2009&#039;, &#039;Q2023&#039;}, -- province ou territoire&lt;br /&gt;
	},&lt;br /&gt;
Q30 = {--USA&lt;br /&gt;
	streetline = &#039;$number $street $direction&#039;,&lt;br /&gt;
	directions = {Q659 = &#039;North&#039;, Q679 = &#039;West&#039;, Q684 = &#039;East&#039;, Q667 = &#039;South&#039;},&lt;br /&gt;
	cityline = &#039;$admindivs $postcode&#039;,&lt;br /&gt;
	div1 = {&#039;-&#039;},&lt;br /&gt;
	div2 = {&#039;Q13360155&#039;}, -- comté ou équivalent comté&lt;br /&gt;
	div3vals = { -- état claim[31:35657]&lt;br /&gt;
		&#039;Q99&#039;,&#039;Q173&#039;,&#039;Q724&#039;,&#039;Q759&#039;,&#039;Q771&#039;,&#039;Q779&#039;,&#039;Q782&#039;,&#039;Q797&#039;,&#039;Q812&#039;,&#039;Q816&#039;,&#039;Q824&#039;,&#039;Q829&#039;,&#039;Q1166&#039;,&#039;Q1204&#039;,&#039;Q1207&#039;,&#039;Q1211&#039;,&#039;Q1212&#039;,&#039;Q1214&#039;,&lt;br /&gt;
		&#039;Q1221&#039;,&#039;Q1223&#039;,&#039;Q1227&#039;,&#039;Q1261&#039;,&#039;Q1370&#039;,&#039;Q1371&#039;,&#039;Q1384&#039;,&#039;Q1387&#039;,&#039;Q1391&#039;,&#039;Q1393&#039;,&#039;Q1397&#039;,&#039;Q1400&#039;,&#039;Q1408&#039;,&#039;Q1415&#039;,&#039;Q1428&#039;,&#039;Q1439&#039;,&lt;br /&gt;
		&#039;Q1454&#039;,&#039;Q1456&#039;,&#039;Q1494&#039;,&#039;Q1509&#039;,&#039;Q1522&#039;,&#039;Q1527&#039;,&#039;Q1537&#039;,&#039;Q1546&#039;,&#039;Q1553&#039;,&#039;Q1558&#039;,&#039;Q1581&#039;,&#039;Q1588&#039;,&#039;Q1603&#039;,&#039;Q1612&#039;,&#039;Q1649&#039;,&#039;Q16551&#039;&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
Q31 = {-- Belgique (à vérifier)&lt;br /&gt;
	streetline = &#039;$street $number&#039;,&lt;br /&gt;
	cityline = &#039;$postcode $admindivs&#039;,&lt;br /&gt;
	div1 = {&#039;Q493522&#039;}, -- commune&lt;br /&gt;
	div2vals = {&#039;Q1095&#039; , &#039;Q1113&#039;, &#039;Q1114&#039;,&#039;Q1116&#039;, &#039;Q1118&#039;, &#039;Q1122&#039;, &#039;Q1125&#039;, &#039;Q1126&#039;, &#039;Q1127&#039;, &#039;Q1129&#039; , &#039;Q848831&#039;}, -- province&lt;br /&gt;
	},&lt;br /&gt;
Q39 = { -- Suisse&lt;br /&gt;
	div1 = {&#039;Q70208&#039;}, -- communes&lt;br /&gt;
	div2vals = { -- canton / Q23058 &lt;br /&gt;
		&#039;Q834&#039;,&#039;Q11911&#039;,&#039;Q11917&#039;,&#039;Q11922&#039;,&#039;Q11925&#039;,&#039;Q11929&#039;,&#039;Q11933&#039;,&#039;Q11943&#039;,&#039;Q11972&#039;,&#039;Q12079&#039;,&#039;Q12094&#039;,&#039;Q12121&#039;,&#039;Q12146&#039;,&#039;Q12172&#039;,&lt;br /&gt;
		&#039;Q12404&#039;,&#039;Q12433&#039;,&#039;Q12573&#039;,&#039;Q12592&#039;,&#039;Q12640&#039;,&#039;Q12697&#039;,&#039;Q12713&#039;,&#039;Q12724&#039;,&#039;Q12738&#039;,&#039;Q12746&#039;,&#039;Q12755&#039;,&#039;Q12771&#039;,&#039;Q688257&#039;&lt;br /&gt;
		},&lt;br /&gt;
	streetline = &#039;$street $number&#039;,&lt;br /&gt;
	cityline = &#039;$postcode $admindivs&#039;,&lt;br /&gt;
	},&lt;br /&gt;
Q142 = { --France&lt;br /&gt;
	streetline = &#039;$number $street&#039;,&lt;br /&gt;
	cityline = &#039;$postcode $admindivs&#039;,&lt;br /&gt;
	div1 = {&#039;Q702842&#039;, &#039;Q484170&#039;}, -- arrondissement municipal ou commune&lt;br /&gt;
	div2vals = {  -- divisions à ajouter en deuxième : département / collectivités d&#039;outre mer&lt;br /&gt;
		&#039;Q90&#039;,&#039;Q3068&#039;,&#039;Q3083&#039;,&#039;Q3093&#039;,&#039;Q3105&#039;,&#039;Q3113&#039;,&#039;Q3120&#039;,&#039;Q3125&#039;,&#039;Q3131&#039;,&#039;Q3139&#039;,&#039;Q3148&#039;,&#039;Q3164&#039;,&#039;Q3184&#039;,&#039;Q3194&#039;,&#039;Q3207&#039;,&lt;br /&gt;
		&#039;Q3216&#039;,&#039;Q3240&#039;,&#039;Q3249&#039;,&#039;Q3259&#039;,&#039;Q3266&#039;,&#039;Q3278&#039;,&#039;Q3286&#039;,&#039;Q3326&#039;,&#039;Q3334&#039;,&#039;Q3336&#039;,&#039;Q3342&#039;,&#039;Q3349&#039;,&#039;Q3353&#039;,&#039;Q3357&#039;,&#039;Q3361&#039;,&lt;br /&gt;
		&#039;Q3364&#039;,&#039;Q3368&#039;,&#039;Q3372&#039;,&#039;Q3377&#039;,&#039;Q3389&#039;,&#039;Q12515&#039;,&#039;Q12517&#039;,&#039;Q12526&#039;,&#039;Q12538&#039;,&#039;Q12543&#039;,&#039;Q12545&#039;,&#039;Q12549&#039;,&#039;Q12553&#039;,&#039;Q12556&#039;,&#039;Q12559&#039;,&lt;br /&gt;
		&#039;Q12563&#039;,&#039;Q12564&#039;,&#039;Q12569&#039;,&#039;Q12572&#039;,&#039;Q12574&#039;,&#039;Q12576&#039;,&#039;Q12578&#039;,&#039;Q12580&#039;,&#039;Q12584&#039;,&#039;Q12589&#039;,&#039;Q12594&#039;,&#039;Q12607&#039;,&#039;Q12620&#039;,&#039;Q12626&#039;,&#039;Q12631&#039;,&lt;br /&gt;
		&#039;Q12642&#039;,&#039;Q12652&#039;,&#039;Q12657&#039;,&#039;Q12661&#039;,&#039;Q12675&#039;,&#039;Q12679&#039;,&#039;Q12689&#039;,&#039;Q12694&#039;,&#039;Q12700&#039;,&#039;Q12703&#039;,&#039;Q12709&#039;,&#039;Q12717&#039;,&#039;Q12722&#039;,&#039;Q12730&#039;,&#039;Q12736&#039;,&lt;br /&gt;
		&#039;Q12740&#039;,&#039;Q12745&#039;,&#039;Q12751&#039;,&#039;Q12753&#039;,&#039;Q12758&#039;,&#039;Q12761&#039;,&#039;Q12765&#039;,&#039;Q12770&#039;,&#039;Q12772&#039;,&#039;Q12779&#039;,&#039;Q12782&#039;,&#039;Q12784&#039;,&#039;Q12788&#039;,&#039;Q12789&#039;,&#039;Q12792&#039;,&lt;br /&gt;
		&#039;Q12798&#039;,&#039;Q12804&#039;,&#039;Q12808&#039;,&#039;Q12816&#039;,&#039;Q12820&#039;,&#039;Q34617&#039;,&#039;Q46130&#039;,&lt;br /&gt;
		-- outre mer&lt;br /&gt;
		&#039;Q17012&#039;, &#039;Q17054&#039;, &#039;Q3769&#039;, &#039;Q17070&#039;, &#039;Q33788&#039;&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
Q145 = { -- Royaume uni&lt;br /&gt;
	--  --données à nettoyer ici ou sur Wikidata&lt;br /&gt;
	div1 = {&#039;Q515&#039;, &#039;Q1160920&#039;}, -- ville, unitary authority / à compléter&lt;br /&gt;
	div2 = {&#039;Q180673&#039;}, -- comté cérémonial / à compléter&lt;br /&gt;
	div3vals = {&#039;Q21&#039;, &#039;Q22&#039;, &#039;Q25&#039;, &#039;Q26&#039;} -- Angleterre, Écosse, Pays de Galle, Irlande du Nord&lt;br /&gt;
	},&lt;br /&gt;
Q213 = { -- République tchèque&lt;br /&gt;
	streetline = &#039;$number $street&#039;,&lt;br /&gt;
	div1 = {&#039;Q5153359&#039;}, &lt;br /&gt;
	div2vals = {&#039;Q1085&#039;, &#039;Q46070&#039;, &#039;Q188373&#039;, &#039;Q188399&#039;, &#039;Q190550&#039;, &#039;Q190930&#039;, &#039;Q191091&#039;, &#039;Q192536&#039;, &#039;Q192697&#039;, &#039;Q192702&#039;, &#039;Q193266&#039;, &#039;Q193295&#039;, &#039;Q193307&#039;, &#039;Q193317&#039;}, -- région tchèque&lt;br /&gt;
	},&lt;br /&gt;
Q668 = {-- Inde (à améliorer&lt;br /&gt;
	div1 = {&#039;Q515&#039;}, -- ville&lt;br /&gt;
	div2vals = {&#039;Q1162&#039;, &#039;Q1164&#039;, &#039;Q1165&#039;, &#039;Q1168&#039;, &#039;Q1171&#039;, &#039;Q1061&#039;, &#039;Q1174&#039;, &#039;Q1177&#039;, &#039;Q1180&#039;, &#039;Q1184&#039;, &#039;Q1185&#039;, &#039;Q1186&#039;, &#039;Q1188&#039;, &#039;Q1191&#039;, &#039;Q1193&#039;, &#039;Q1195&#039;, &#039;Q1502&#039;, &#039;Q1599&#039;, &#039;Q22048&#039;, &#039;Q22424&#039;, &#039;Q1437&#039;, &#039;Q1505&#039; , &#039;Q1445&#039;, &#039;Q1363&#039;, &#039;Q1498&#039;, &#039;Q1499&#039;, &#039;Q1356&#039;, &#039;Q40088&#039;, &#039;Q43433&#039;, &#039;Q46107&#039;, &#039;Q26927&#039;, &#039;Q1353&#039;, &#039;Q66743&#039;, &#039;Q66710&#039;, &#039;Q677037&#039;, &#039;Q1159&#039; }-- provinces&lt;br /&gt;
},&lt;br /&gt;
Q148 = { -- Chine&lt;br /&gt;
	--  -- on francise&#039;,&#039;Q et on met du plus petit au plus grand pour que ce soit compréhensible&lt;br /&gt;
	div1 = {&#039;Q16755104&#039;, &#039;Q1065118&#039;}, -- xian ou équivalent, les divisions de rang inférieur ne paraissent pas utiles ?&lt;br /&gt;
	div2 = {&#039;Q9316670&#039;}, -- préfecture ou équivalent &lt;br /&gt;
	div3vals = {-- province ou équivalent (classe = Q13396669)&lt;br /&gt;
	 &#039;Q956&#039;, &#039;Q8646&#039;, &#039;Q8686&#039;, &#039;Q11725&#039;, &#039;Q11736&#039;, &#039;Q14773&#039;, &#039;Q15175&#039;, &#039;Q15176&#039;, &#039;Q16963&#039;, &#039;Q16967&#039;,&#039;Q17269&#039;,&lt;br /&gt;
	 &#039;Q19206&#039;, &#039;Q19770&#039;, &#039;Q21208&#039;, &#039;Q34800&#039;, &#039;Q40956&#039;, &#039;Q41079&#039;, &#039;Q41705&#039;, &#039;Q42200&#039;, &#039;Q42392&#039;, &#039;Q43194&#039;,&#039;Q43407&#039;,&lt;br /&gt;
	 &#039;Q43684&#039;, &#039;Q43934&#039;, &#039;Q45208&#039;, &#039;Q45761&#039; , &#039;Q45833&#039;, &#039;Q46862&#039;, &#039;Q46913&#039;, &#039;Q47097&#039;, &#039;Q47974&#039;, &#039;Q57052&#039;, &#039;Q57251&#039;, &#039;Q57448&#039;	&lt;br /&gt;
	}&lt;br /&gt;
	},&lt;br /&gt;
Q865 = { -- Taiwan&lt;br /&gt;
	div1 = {&#039;Q12081657&#039;}, --division de niveau cantonal &lt;br /&gt;
	div2 = {&#039;Q12084012&#039;},	&lt;br /&gt;
	},&lt;br /&gt;
Q403 = { -- Serbie&lt;br /&gt;
	streetline = &#039;$street $number&#039;,&lt;br /&gt;
	div1 = {&#039;Q37800986&#039;, &#039;Q783930&#039;}, --ville ou municipalité&lt;br /&gt;
	div2 = {&#039;Q648681&#039;},-- district (non affiché sur l&#039;adresse postale)&lt;br /&gt;
	div3vals = {&#039;Q44749&#039;} -- Voivodine / on ne précise pas pour les autres Régions statistiques de Serbie qui ne sont pas très connues&lt;br /&gt;
	},&lt;br /&gt;
default = {&lt;br /&gt;
	streetline = &#039;$number $street $direction&#039;,&lt;br /&gt;
	div1 = {&#039;-&#039;}, -- on prend la première venue, en espérant que ça ait un intérêt&lt;br /&gt;
	div2 = {&#039;-&#039;},&lt;br /&gt;
	directions = {Q659 = &#039;Nord&#039;, Q679 = &#039;Ouest&#039;, Q684 = &#039;Est&#039;, Q667 = &#039;Sud&#039;},&lt;br /&gt;
	cityline = &#039;$postcode $admindivs&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Autorit%C3%A9&amp;diff=323</id>
		<title>Module:Autorité</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Autorit%C3%A9&amp;diff=323"/>
		<updated>2024-09-20T14:12:55Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local wd = require( &amp;#039;Module:Wikidata&amp;#039; ) local Outils = require( &amp;#039;Module:Outils&amp;#039; )  --nombre maximum de référence &amp;quot;autorité&amp;quot; qui doivent être affichée. La valeur de 18 a été acté par défaut en 2017. local nbMaxReferenceParPage = 18  local function blbnbUrl( id ) 	if not id:match( &amp;#039;^%d%d%d%d%d%d%d%d%d$&amp;#039; ) then 		return false 	end 	return &amp;#039;http://acervo.bn.br/sophia_web/autoridade/detalhe/&amp;#039; .. id end  local function nlgUrl( id ) 	if not id:match( &amp;#039;^[1-9]%d*... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local wd = require( &#039;Module:Wikidata&#039; )&lt;br /&gt;
local Outils = require( &#039;Module:Outils&#039; )&lt;br /&gt;
&lt;br /&gt;
--nombre maximum de référence &amp;quot;autorité&amp;quot; qui doivent être affichée. La valeur de 18 a été acté par défaut en 2017.&lt;br /&gt;
local nbMaxReferenceParPage = 18&lt;br /&gt;
&lt;br /&gt;
local function blbnbUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://acervo.bn.br/sophia_web/autoridade/detalhe/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nlgUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://catalogue.nlg.gr/Authority/Record?id=au.&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bneUrl( id )&lt;br /&gt;
	if id:match( &#039;^XX%d%d%d%d%d?%d?%d?$&#039; ) then&lt;br /&gt;
		return &#039;http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&amp;amp;authority_id=&#039; .. id&lt;br /&gt;
	elseif ( id:match( &#039;^[Mb]ise%d%d%d%d%d%d%d%d%d%d$&#039; ) or id:match( &#039;^bivi%d%d%d%d%d%d%d%d%d%d$&#039; ) ) then&lt;br /&gt;
		return &#039;https://datos.bne.es/edicion/&#039; .. id&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function sbnUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%u%u[%u%d]%u%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://opac.sbn.it/nome/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ndlUrl( id )&lt;br /&gt;
	if not id:match( &#039;^0?%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://id.ndl.go.jp/auth/ndlna/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ntaUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d.$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://data.bibliotheken.nl/id/thes/p&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nlpUrl( id )&lt;br /&gt;
	-- nouveau format valide (P7293) - 981[0-9]{8}05606 : 981066973640560&lt;br /&gt;
	-- ou ancien format Wikidata (P1695) - A[0-9]{7}[0-9X] modifié depuis 2023 en a[0-9]{13}&lt;br /&gt;
	if id:match( &#039;^981%d%d%d%d%d%d%d%d05606$&#039; ) or id:match( &#039;^a%d%d%d%d%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return &#039;https://dbn.bn.org.pl/descriptor-details/&#039; .. id&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nliUrl( id )&lt;br /&gt;
	if not id:match( &#039;^9870[01]%d%d%d%d%d%d%d%d05171$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://olduli.nli.org.il/F/?func=find-b&amp;amp;local_base=NLX10&amp;amp;find_code=UID&amp;amp;request=&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nukatUrl( id )&lt;br /&gt;
	if not id:match( &#039;^n%d%d%d%d%d%d%d%d$&#039; ) and not id:match( &#039;^n%d%d%d%d%d%d%d%d%d%d$&#039; ) and &lt;br /&gt;
	   not id:match( &#039;^p %d%d%d%d%d%d%d%d$&#039; ) and not id:match( &#039;^p %d%d%d%d%d%d%d%d%d%d$&#039; ) and &lt;br /&gt;
	   not id:match( &#039;^s  %d%d%d%d%d%d%d%d$&#039; ) and not id:match( &#039;^s  %d%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	id = id:gsub( &#039; &#039;, &#039;%%20&#039; ) -- pour les ids commencent par s ou p&lt;br /&gt;
	if id:len() == 9 then&lt;br /&gt;
		id = id:gsub( &#039;n&#039;, &#039;n%%20%%20&#039; ) -- pour les ids commencent par n&lt;br /&gt;
	else &lt;br /&gt;
		id = id:gsub( &#039;n&#039;, &#039;n%%20&#039; ) -- pour les ids commencent par n20&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://nukat.edu.pl/aut/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function catalUrl( id)&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		if not id:match( &#039;^a?%d%d%d%d%d%d%d.$&#039; ) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
		return &#039;https://cantic.bnc.cat/registres/CUCId/&#039; .. id&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://cantic.bnc.cat/registre/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function selibrUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d%d%d%d$&#039; ) and not id:match( &#039;^[1-9]%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://libris.kb.se/auth/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function reroUrl( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 01-R008412216, 02-A000173676&lt;br /&gt;
	if not id:match( &#039;^0[1234]%-[AR]%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://data.rero.ch/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bavUrl( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 494/9793&lt;br /&gt;
	if not id:match( &#039;^49%d/[1-9]%d*$&#039; ) then -- 49\d\/[1-9]\d{0,5}&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	id = id:gsub( &#039;/&#039;, &#039;_&#039; )&lt;br /&gt;
	return &#039;https://opac.vatlib.it/auth/detail/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function idCanadia( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 1024H9993&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d[A-Z]%d%d%d%d[EF]?$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://www.collectionscanada.gc.ca/canadiana-authorities/index/view?index_name=cdnAutNbr&amp;amp;lang=fr&amp;amp;search_text=&#039; .. id .. &#039;&amp;amp;page=1&amp;amp;cdnAutNbr&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nlaUrl( id )&lt;br /&gt;
	--exemple d&#039;un code valide est nm1942312&lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://nla.gov.au/anbd.aut-an&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[ en attendant que la bibliothèque du Québec ait une page sur son site web pour les articles référencés par l&#039;idBAnQ (actuellement, page du site Viaf&lt;br /&gt;
local function idBAnQa( id )&lt;br /&gt;
	exemple d&#039;un code valide est 0001215324&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://viaf.org/processed/B2Q|&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function bibsysUrl( id )&lt;br /&gt;
--	exemple d&#039;un code valide est 0001215324&lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;https://authority.bibsys.no/authority/rest/authorities/html/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function n6iUrl( id )&lt;br /&gt;
--	exemple d&#039;un code valide est vtls000033830 mais pas de format officiel précisé pour les tests dans le module&lt;br /&gt;
	if not id:match( &#039;^vtls%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://catalogue.nli.ie/Record/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nskUrl( id )&lt;br /&gt;
--	exemple d&#039;un code valide est 000339950 &lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://katalog.nsk.hr/F/?func=direct&amp;amp;doc_number=&#039; .. id .. &#039;&amp;amp;local_base=nsk10&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Bibliothèque Nationale de Russie (NLR ou RSL)&lt;br /&gt;
local function rslUrl( id )&lt;br /&gt;
--	exemple d&#039;un code valide est 000080362 &lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://aleph.rsl.ru/F?func=find-b&amp;amp;find_code=SYS&amp;amp;adjacent=Y&amp;amp;local_base=RSL11&amp;amp;request=&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
--Bibliothèque Nationale Tchèque (NKCL)&lt;br /&gt;
local function nkcUrl( id )&lt;br /&gt;
--	exemple d&#039;un code valide est jcu2014834887 format [a-z]{2,4}[0-9]{2,14}&lt;br /&gt;
	if not id:match( &#039;^%a%a+%d%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://aut.nkp.cz/&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
--Bibliothèque Nationale du Québec pour les ouvrages&lt;br /&gt;
local function idBAnQo( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 1986863&lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://collections.banq.qc.ca/ark:/52327/|&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
--Bibliothèque Nationale du Danemark&lt;br /&gt;
--[=[ en attendant que la bibliothèque du Québec ait une page sur son site web pour les articles référencés par l&#039;idDBC (actuellement, page du site Viaf&lt;br /&gt;
local function idDbc( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 87097968101751&lt;br /&gt;
	if not id:match( &#039;^87%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;https://viaf.org/processed/DBC|&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
]=]&lt;br /&gt;
--Bibliothèque Nationale du Chili&lt;br /&gt;
local function idBnchl( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 10000000000000000063660&lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://www.bncatalogo.cl/F?func=direct&amp;amp;local_base=BNC01&amp;amp;doc_number=&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
--Bibliothèque Nationale du Portugal&lt;br /&gt;
local function idPtbnp( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 130325&lt;br /&gt;
	if not id:match( &#039;^%d%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://urn.bn.pt/nca/unimarc-authorities/txt?id=&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
--Bibliothèque nationale de Lettonie&lt;br /&gt;
local function idLnb( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 000001327&lt;br /&gt;
	if not id:match( &#039;^%d%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;https://kopkatalogs.lv/F/?func=direct&amp;amp;local_base=lnc10&amp;amp;doc_number=&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Bibliothèque nationale du Luxembourg&lt;br /&gt;
local function idBNL( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 000035166&lt;br /&gt;
	if not id:match( &#039;^%d%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://viaf.org/processed/BNL|&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function idworldcat( id )&lt;br /&gt;
	--exemple d&#039;un code valide est viaf-000001327&lt;br /&gt;
	if not id:match( &#039;^viaf.%d+$&#039; ) and not id:match( &#039;^lccn.n[a-z]?[0-9\-]+$&#039;) and not id:match( &#039;^n[pc]..+$&#039;) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://www.worldcat.org/identities/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
local function idOclc( id )&lt;br /&gt;
	--exemple d&#039;un code valide est 000001327&lt;br /&gt;
	if not id:match( &#039;^0*[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
    end&lt;br /&gt;
	return &#039;http://www.worldcat.org/oclc/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function kbrUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://opac.kbr.be/LIBRARY/doc/AUTHORITY/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----***********************************************************************************************************************&lt;br /&gt;
-- ajouter ici les nouvelles fonctions pour références&lt;br /&gt;
----***********************************************************************************************************************&lt;br /&gt;
&lt;br /&gt;
local function leonoreUrl( id )&lt;br /&gt;
-- Identifiants allant de LH/1/1 à LH/2794/54 (légionnaires)&lt;br /&gt;
-- Identifiants allant de C/0/1 à C/0/84 (84 légionnaires célèbres)&lt;br /&gt;
-- Identifiants allant de 19800035/1/1 à 19800035/385/51670 (légionnaires décédés entre 1954 et 1977, et quelques dossiers de légionnaires décédés avant 1954)&lt;br /&gt;
	if not id:match( &#039;^LH/%d%d?%d?%d?/%d%d?%d?$&#039; ) and&lt;br /&gt;
	   not id:match( &#039;^C/0/%d%d?$&#039; ) and&lt;br /&gt;
	   not id:match( &#039;^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$&#039; ) and&lt;br /&gt;
	   not id:match( &#039;^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?Bis$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&amp;amp;FIELD_1=COTE&amp;amp;VALUE_1=&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--Returns the ISNI check digit isni must be a string where the 15 first elements are digits&lt;br /&gt;
local function getIsniCheckDigit( isni )&lt;br /&gt;
	local total = 0&lt;br /&gt;
	for i = 1, 15 do&lt;br /&gt;
		local digit = isni:byte( i ) - 48 --Get integer value&lt;br /&gt;
		total = ( total + digit ) * 2&lt;br /&gt;
	end&lt;br /&gt;
	local remainder = total % 11&lt;br /&gt;
	local result = ( 12 - remainder ) % 11&lt;br /&gt;
	if result == 10 then&lt;br /&gt;
		return &amp;quot;X&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return tostring( result )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Validate ISNI and returns it as a 16 characters string or returns false if it&#039;s invalid&lt;br /&gt;
--See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier&lt;br /&gt;
local function validateIsni( id )&lt;br /&gt;
	id = id:gsub( &#039;[ %-]&#039;, &#039;&#039; ):upper()&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	if getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isniUrl( id )&lt;br /&gt;
	id = validateIsni( id )&lt;br /&gt;
	if not id then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://isni.org/isni/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ciniiUrl( id )&lt;br /&gt;
	return &#039;http://ci.nii.ac.jp/author/&#039; .. id .. &#039;?l=en&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function sudocUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d[%dxX]$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://www.idref.fr/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function archivesnationalesUrl( id )&lt;br /&gt;
	if not id:match( &#039;^FRAN_NP_%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://www.siv.archives-nationales.culture.gouv.fr/siv/NP/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bnfUrls( id )&lt;br /&gt;
	--Add cb prefix if it has been removed&lt;br /&gt;
	if not id:match( &#039;^cb.+$&#039; ) then&lt;br /&gt;
		id = &#039;cb&#039; .. id&lt;br /&gt;
	end&lt;br /&gt;
	return {&lt;br /&gt;
		&#039;https://catalogue.bnf.fr/ark:/12148/&#039; .. id,&lt;br /&gt;
		&#039;https://data.bnf.fr/ark:/12148/&#039; .. id }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function viafUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d+$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://viaf.org/viaf/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitLccn( id )&lt;br /&gt;
	if id:match( &#039;^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$&#039; ) then&lt;br /&gt;
		id = id:gsub( &#039;^(%l+)(%d+)(%d%d%d%d%d%d)$&#039;, &#039;%1/%2/%3&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if id:match( &#039;^%l%l?%l?/%d%d%d?%d?/%d+$&#039; ) then&lt;br /&gt;
		 return mw.text.split( id, &#039;/&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function padLeft( str, c, length )&lt;br /&gt;
	return c:rep( length - #str ) .. str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function lccnUrl( id )&lt;br /&gt;
	local parts = splitLccn( id )&lt;br /&gt;
	if not parts then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	id = parts[1] .. parts[2] .. padLeft( parts[3], &#039;0&#039;, 6 )&lt;br /&gt;
	return &#039;http://id.loc.gov/authorities/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function gndUrl( id )&lt;br /&gt;
	return &#039;http://d-nb.info/gnd/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nszlUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://viaf.org/processed/NSZL|&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ltiUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://library.ltikorea.or.kr/node/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function krnlkUrl( id )&lt;br /&gt;
	if not id:match( &#039;^KA[BC]%d%d%d%d%a?%d%d%d%d%d?%d?$&#039; ) and&lt;br /&gt;
		not id:match( &#039;^KMU%d%d%d%d%a?%d%d%d%d%d?%d?$&#039; ) and&lt;br /&gt;
		not id:match( &#039;^KSH%d%d%d%d%a?%d%d%d%d%d?%d?$&#039; ) and&lt;br /&gt;
		not id:match( &#039;^CNTS%-%d%d%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
			return false&lt;br /&gt;
	end &lt;br /&gt;
	return &#039;https://lod.nl.go.kr/resource/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bnaUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://catalogo.bn.gov.ar/F/?func=direct&amp;amp;doc_number=&#039; .. id ..&#039;&amp;amp;local_base=GENER&#039; &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bnsUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://www.helveticarchives.ch/detail.aspx?ID=&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function arbabnUrl( id )&lt;br /&gt;
	if not id:match( &#039;^%d%d%d%d%d%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://catalogo.bn.gov.ar/F/?func=direct&amp;amp;local_base=BNA10&amp;amp;doc_number=&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
--Bibliothèque Nationale d&#039;Arménie, en 3 modules distincts&lt;br /&gt;
local function nlaBookUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://haygirk.nla.am/cgi-bin/koha/opac-detail.pl?biblionumber=&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
local function nlaPersUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://armunicat.nla.am/cgi-bin/koha/opac-authoritiesdetail.pl?marc=1&amp;amp;authid=&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
local function nlaResUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[1-9]%d*$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;http://tert.nla.am/cgi-bin/koha/opac-detail.pl?biblionumber=&#039; .. id &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function glottoUrl( id )&lt;br /&gt;
	if not id:match( &#039;^[a-z][a-z][a-z][a-z]%d%d%d%d$&#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;https://glottolog.org/resource/languoid/id/&#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeLink( url, label )&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;nowrap uid noarchive&amp;quot;&amp;gt;[&#039; .. url .. &#039; &#039; .. label .. &#039;]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function createRow( id, label, rawValue, url )&lt;br /&gt;
	if type( url ) == &#039;table&#039; then&lt;br /&gt;
		return makeLink( url[1], label[1] ) .. &#039; (&#039; .. makeLink( url[2], label[2] ) .. &#039;)&#039;&lt;br /&gt;
	elseif url then&lt;br /&gt;
		return makeLink( url, label )&lt;br /&gt;
	else&lt;br /&gt;
		local cat = &#039;&#039;&lt;br /&gt;
		if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
			cat = &#039;[[Catégorie:Page utilisant le modèle Autorité avec un paramètre erroné]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;L\&#039;identifiant &#039; .. id .. &#039; &amp;quot;&#039; .. rawValue .. &#039;&amp;quot; n\&#039;est pas valide.&amp;lt;/span&amp;gt;&#039; .. cat&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getIdsFromWikidata( entity, property )&lt;br /&gt;
	local ids = {}&lt;br /&gt;
	for _, statement in ipairs(mw.wikibase.getBestStatements(entity, property)) do&lt;br /&gt;
		if type( statement.mainsnak.datavalue ) == &#039;table&#039; then&lt;br /&gt;
			table.insert( ids, statement.mainsnak.datavalue.value )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ids&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local BiblioNat = &amp;quot;Bibliothèque nationale&amp;quot;&lt;br /&gt;
--In this order: name of the parameter, label, propertyId in Wikidata, formatting function&lt;br /&gt;
&lt;br /&gt;
-- optionally, a named parameter &amp;quot;condition&amp;quot; that is a predicate function with the entity object as a parameter&lt;br /&gt;
-- this function specifies conditions on which the identifier url should be shown, for example only if a person is dead&lt;br /&gt;
local conf = {&lt;br /&gt;
		{ &#039;VIAF&#039;, &#039;VIAF&#039;, 214, viafUrl },&lt;br /&gt;
		{ &#039;ISNI&#039;, &#039;ISNI&#039;, 213, isniUrl },&lt;br /&gt;
		{ &#039;BNF&#039;, {&#039;BnF&#039;, &#039;données&#039; }, 268, bnfUrls },&lt;br /&gt;
		{ &#039;AN&#039;, &#039;Archives nationales (France)&#039;, 3599, archivesnationalesUrl },&lt;br /&gt;
		{ &#039;SUDOC&#039;, &#039;IdRef&#039;, 269, sudocUrl },&lt;br /&gt;
		{ &#039;LCCN&#039;, &#039;LCCN&#039;, 244, lccnUrl },&lt;br /&gt;
		{ &#039;GND&#039;, &#039;GND&#039;, 227, gndUrl },&lt;br /&gt;
		{ &#039;SBN&#039;, &#039;Italie&#039;, 396, sbnUrl },&lt;br /&gt;
		{ &#039;NDL&#039;, &#039;Japon&#039;, 349, ndlUrl },&lt;br /&gt;
		{ &#039;CINII&#039;, &#039;CiNii&#039;, 271, ciniiUrl },&lt;br /&gt;
		{ &#039;BNE&#039;, &#039;Espagne&#039;, 950, bneUrl },&lt;br /&gt;
		{ &#039;KBR&#039;, &#039;Belgique&#039;, 11249, kbrUrl },&lt;br /&gt;
		{ &#039;NTA&#039;, &#039;Pays-Bas&#039;, 1006, ntaUrl },&lt;br /&gt;
		{ &#039;NLP1&#039;, &#039;Pologne&#039;, 1695, nlpUrl, condition = function(entity)&lt;br /&gt;
			-- affichage de l’ancien identifiant uniquement si le nouvel identifiant n’est pas renseigné&lt;br /&gt;
			return wd.getClaims{entity = entity, property = &#039;P7293&#039;} == nil&lt;br /&gt;
		end },  --ancien identifiant&lt;br /&gt;
		{ &#039;NLP&#039;, &#039;Pologne&#039;, 7293, nlpUrl },  --nouvel identifiant&lt;br /&gt;
		{ &#039;NLI&#039;, &#039;Israël&#039;, 8189, nliUrl },&lt;br /&gt;
		{ &#039;NUKAT&#039;, &#039;NUKAT&#039;, 1207, nukatUrl },&lt;br /&gt;
		{ &#039;CATAL&#039;, &#039;Catalogne&#039;, 9984, catalUrl, 1273 },&lt;br /&gt;
		{ &#039;SELIBR&#039;, &#039;Suède&#039;, 906, selibrUrl },&lt;br /&gt;
	--	{ &#039;RERO&#039;, &#039;Réseau des bibliothèques de Suisse occidentale&#039;, 3065, reroUrl },&lt;br /&gt;
		{ &#039;BAV&#039;, &#039;Vatican&#039;, 8034, bavUrl },&lt;br /&gt;
		{ &#039;LAC&#039;, &#039;Canada&#039;, 1670, idCanadia },&lt;br /&gt;
		{ &#039;NLA&#039;, &#039;Australie&#039;, 409, nlaUrl },&lt;br /&gt;
	--{ &#039;BAnQa&#039;, &#039;Bibliothèque nationale du Québec&#039;, 3280, idBAnQa }, -- pour les auteurs -- à activer si BAnQ crée un espace dédié sur son site web.&lt;br /&gt;
		{ &#039;BIBSYS&#039;, &#039;Norvège&#039;, 1015, bibsysUrl },&lt;br /&gt;
	--{ &#039;N6I&#039;, &#039;Bibliothèque nationale d’Irlande&#039;, 1946, n6iUrl }, -- propriété supprimé de wikidata, ne concerne pas les auteurs, voir https://www.wikidata.org/wiki/Wikidata:Requests_for_deletions/Archive/2019/Properties/1#P1946_(P1946)&lt;br /&gt;
		{ &#039;NSK&#039;, &#039;Croatie&#039;, 1375, nskUrl },&lt;br /&gt;
		{ &#039;RSL&#039;, &#039;Russie&#039;, 947, rslUrl },&lt;br /&gt;
		{ &#039;NKC&#039;, &#039;Tchéquie&#039;, 691, nkcUrl },&lt;br /&gt;
		{ &#039;BAnQo&#039;, &#039;Québec&#039;, 1823, idBAnQo },  --pour les ouvrages&lt;br /&gt;
	--{ &#039;DBC&#039;, &#039;Danemark&#039;, 3846, idDbc },  -- à activer si DBC crée un espace dédié sur son site web.&lt;br /&gt;
		{ &#039;BNCHL&#039;, &#039;Chili&#039;, 1966, idBnchl }, &lt;br /&gt;
		{ &#039;PTBNP&#039;, &#039;Portugal&#039;, 1005, idPtbnp }, &lt;br /&gt;
		{ &#039;LNB&#039;, &#039;Lettonie&#039;, 1368, idLnb },&lt;br /&gt;
		{ &#039;BNL&#039;, &#039;Luxembourg&#039;, 7028, idBNL },&lt;br /&gt;
		{ &#039;BLBNB&#039;, &#039;Brésil&#039;, 4619, blbnbUrl },&lt;br /&gt;
		{ &#039;NLG&#039;, &#039;Grèce&#039;, 3348, nlgUrl },&lt;br /&gt;
	--{ &#039;NSZL&#039;, BiblioNat .. &#039; de Hongrie&#039;, 951, nszlUrl },  -- à activer si NSZL crée un espace dédié sur son site web.&lt;br /&gt;
		{ &#039;LTI&#039;, &#039;LTI&#039;, 4760, ltiUrl },&lt;br /&gt;
		{ &#039;KRNLK&#039;, &#039;Corée du Sud&#039;, 5034, krnlkUrl },&lt;br /&gt;
		{ &#039;BN&#039;, &#039;Argentine&#039;, 1143, bnaUrl },&lt;br /&gt;
		{ &#039;BNS&#039;, &#039;Suisse&#039;, 1255, bnsUrl },&lt;br /&gt;
		{ &#039;ARBABN&#039;, &#039;Argentine&#039;, 3788, arbabnUrl },&lt;br /&gt;
	-- La bibliothèque d&#039;Arménie fournit 3 sites web différents pour 3 types de documents différents Livre, Personne et ouvrage)&lt;br /&gt;
		{ &#039;NLABOOK&#039;, &#039;Arménie&#039;, 9398, nlaBookUrl },&lt;br /&gt;
		{ &#039;NLAPERS&#039;, &#039;Arménie&#039;, 8833, nlaPersUrl },&lt;br /&gt;
		{ &#039;NLARES&#039;, &#039;Arménie&#039;, 9147, nlaResUrl },&lt;br /&gt;
		{ &#039;WORLDCATID&#039;, &#039;WorldCat Id&#039;, 7859 , idworldcat },&lt;br /&gt;
		{ &#039;OCLC&#039;, &#039;WorldCat&#039;, 243, idOclc }, &lt;br /&gt;
		{ &#039;GLOTTOLANG&#039;, &#039;Glottocode&#039;, 1394 , glottoUrl },&lt;br /&gt;
&lt;br /&gt;
----***********************************************************************************************************************&lt;br /&gt;
--- ajouter ici les nouvelles références (appels des fonctions construisant les URL)&lt;br /&gt;
----***********************************************************************************************************************&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.authorityControl( frame )&lt;br /&gt;
	local args = Outils.extractArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	--Build a map of valid local arguments&lt;br /&gt;
	local goodArgs = {}&lt;br /&gt;
	for _, params in ipairs( conf ) do&lt;br /&gt;
		goodArgs[params[1]] = true&lt;br /&gt;
	end&lt;br /&gt;
	goodArgs.entity = true&lt;br /&gt;
	goodArgs.id = true&lt;br /&gt;
	goodArgs.wikidata = true&lt;br /&gt;
&lt;br /&gt;
	local hasLocalArgs = false&lt;br /&gt;
	local hasInvalidArgs = false&lt;br /&gt;
	for name, value in pairs( args ) do&lt;br /&gt;
		if name ~= &#039;id&#039; and name ~= &#039;wikidata&#039; and name ~= &#039;entity&#039; then --&amp;quot;entity&amp;quot; parameter doesn&#039;t add to category&lt;br /&gt;
			hasLocalArgs = true&lt;br /&gt;
		end&lt;br /&gt;
		if not goodArgs[name] then&lt;br /&gt;
			hasInvalidArgs = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local entityArg = Outils.validTextArg(args , &#039;id&#039;, &#039;wikidata&#039;, &#039;entity&#039;)&lt;br /&gt;
&lt;br /&gt;
	local entity -- The entity id string variable&lt;br /&gt;
	if entityArg then&lt;br /&gt;
		if entityArg ~= &#039;-&#039; then&lt;br /&gt;
			entity = entityArg:upper()&lt;br /&gt;
		else&lt;br /&gt;
			entity = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		entity = mw.wikibase.getEntityIdForCurrentPage() -- (if nil, no entity for current page )&lt;br /&gt;
	end&lt;br /&gt;
    &lt;br /&gt;
	if entity then&lt;br /&gt;
		for _, params in ipairs( conf ) do&lt;br /&gt;
			if params[3] ~= 0 then&lt;br /&gt;
				local val = args[params[1]]&lt;br /&gt;
				if not val or val == &#039;&#039; then&lt;br /&gt;
					local wikidataIds = getIdsFromWikidata( entity, &#039;P&#039; .. params[3] )&lt;br /&gt;
					if wikidataIds[1] then&lt;br /&gt;
						args[params[1]] = wikidataIds[1]&lt;br /&gt;
					elseif params[5] ~= nil and params[5] ~= 0 then&lt;br /&gt;
						wikidataIds = getIdsFromWikidata( entity, &#039;P&#039; .. params[5] )&lt;br /&gt;
						if wikidataIds[1] then&lt;br /&gt;
							args[params[1]] = wikidataIds[1]&lt;br /&gt;
						end	&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--Create rows&lt;br /&gt;
	local elements = {}&lt;br /&gt;
&lt;br /&gt;
	--compteur utilisé pour les références aujouté dans le module &amp;quot;autorité&amp;quot;. Ce nombre est &amp;lt;= à nbMaxReferenceParPage&lt;br /&gt;
	local nbReferenceValide = 0&lt;br /&gt;
	--Configured rows&lt;br /&gt;
	for _, params in ipairs( conf ) do&lt;br /&gt;
		--l&#039;id OCLC (ou WORLDCATID) est affiché en dernier par le code spécifique WorldCat en dehors de cette boucle.&lt;br /&gt;
		if params[1] ~= &#039;OCLC&#039; and params[1] ~= &#039;WORLDCATID&#039; then &lt;br /&gt;
			local val = args[params[1]]&lt;br /&gt;
			if val and val ~= &#039;&#039; and nbReferenceValide &amp;lt; nbMaxReferenceParPage then&lt;br /&gt;
				local show_authority = params[&amp;quot;condition&amp;quot;] or function() return true end&lt;br /&gt;
				if show_authority(entity) then&lt;br /&gt;
					elements[#elements+1] = createRow( params[1], params[2], val, params[4](val) )&lt;br /&gt;
					nbReferenceValide = nbReferenceValide+1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--Worldcat&lt;br /&gt;
	if args[&#039;WORLDCATID&#039;] and args[&#039;WORLDCATID&#039;] ~= &#039;&#039; then&lt;br /&gt;
		if args[&#039;WORLDCATID&#039;] ~= &#039;-&#039; then&lt;br /&gt;
			elements[#elements+1] = createRow( &#039;WORLDCATID&#039;, &#039;WorldCat&#039;, args[&#039;WORLDCATID&#039;], idworldcat(args[&#039;WORLDCATID&#039;]) ) -- avec vérification de la validité du paramètre.&lt;br /&gt;
		end&lt;br /&gt;
	elseif args[&#039;LCCN&#039;] and args[&#039;LCCN&#039;] ~= &#039;&#039; then&lt;br /&gt;
		local lccnParts = splitLccn( args[&#039;LCCN&#039;] )&lt;br /&gt;
		if lccnParts and lccnParts[1] ~= &#039;sh&#039; then&lt;br /&gt;
			elements[#elements+1] = createRow( &#039;LCCN&#039;, &#039;WorldCat&#039;, args[&#039;LCCN&#039;], &#039;http://www.worldcat.org/identities/lccn-&#039; .. lccnParts[1] .. lccnParts[2] .. &#039;-&#039; .. lccnParts[3] ) -- L&#039;éventuelle invalidité de la valeur du paramètre aurait déjà déclenché un message d&#039;erreur plus haut lors de l&#039;affichage du lien « Bibliothèque du Congrès ».&lt;br /&gt;
		end&lt;br /&gt;
	elseif args[&#039;OCLC&#039;] and args[&#039;OCLC&#039;] ~= &#039;&#039; then&lt;br /&gt;
		elements[#elements+1] = createRow( &#039;OCLC&#039;, &#039;WorldCat&#039;, args[&#039;OCLC&#039;], idOclc(args[&#039;OCLC&#039;]) ) &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local entityInfo = &#039;&#039;&lt;br /&gt;
	if entityArg and entityArg ~= &#039;-&#039; and entity ~= mw.wikibase.getEntityIdForCurrentPage() then --Has &amp;quot;entity&amp;quot; parameter&lt;br /&gt;
		local label = mw.wikibase.getLabel(entity)&lt;br /&gt;
		local link = wd.siteLink(entity)&lt;br /&gt;
		if label then&lt;br /&gt;
			if link then&lt;br /&gt;
				entityInfo = &#039; (pour [[&#039; .. link .. &#039;|&#039; .. label  .. &#039;]])&#039;&lt;br /&gt;
			else&lt;br /&gt;
				entityInfo = &#039; (pour &#039; .. label  .. &#039;)&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif link then&lt;br /&gt;
			entityInfo = &#039; (pour [[&#039; .. link .. &#039;]])&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #elements == 0 then&lt;br /&gt;
		return &#039;[[Catégorie:Page utilisant le modèle Autorité inactif]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cats = &amp;quot;[[Catégorie:Article de Wikipédia avec notice d&#039;autorité]]&amp;quot;&lt;br /&gt;
	if hasLocalArgs then&lt;br /&gt;
		cats = cats .. &#039;[[Catégorie:Page utilisant le modèle Autorité avec un paramètre local]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if hasInvalidArgs then&lt;br /&gt;
		cats = cats .. &#039;[[Catégorie:Page utilisant le modèle Autorité avec un paramètre invalide]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = wd.addLinkBack(&amp;quot;[[Autorité (sciences de l&#039;information)|Notices d&#039;autorité]]&amp;quot; .. entityInfo, entity, &amp;quot;identifiers&amp;quot;)&lt;br /&gt;
	local elementsHtml = mw.html.create(&#039;div&#039;)&lt;br /&gt;
		:addClass(&#039;liste-horizontale&#039;)&lt;br /&gt;
		:wikitext(title .. &#039; : &#039;)&lt;br /&gt;
		:tag(&#039;ul&#039;)&lt;br /&gt;
	for _, element in pairs(elements) do&lt;br /&gt;
		elementsHtml:tag(&#039;li&#039;):wikitext(element):done():wikitext(&#039; &#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(elementsHtml:allDone()) .. cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Correction_syntaxique&amp;diff=322</id>
		<title>Module:Correction syntaxique</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Correction_syntaxique&amp;diff=322"/>
		<updated>2024-09-20T14:12:29Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local p = {}  local function sanitize(text) 	return mw.text.nowiki(tostring(text):gsub(&amp;#039;\n&amp;#039;, &amp;#039; ↲ &amp;#039;)) end  local function _verif(passed_args, modele_args, cat) 	local rv = &amp;quot;&amp;quot; 	local nombre = 0 	for a,b in pairs(passed_args) do 		if (modele_args[a] == nil and b ~= &amp;quot;&amp;quot;) then 			nombre = nombre + 1 			rv = rv .. 				&amp;#039;&amp;lt;span class=&amp;quot;erreur_syntaxe_modele&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;L’argument &amp;#039; .. 				sanitize(a) .. 				&amp;quot; (valeur &amp;quot; .. 				sanitize(b) .. 				&amp;quot;) n’existe p... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local function sanitize(text)&lt;br /&gt;
	return mw.text.nowiki(tostring(text):gsub(&#039;\n&#039;, &#039; ↲ &#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _verif(passed_args, modele_args, cat)&lt;br /&gt;
	local rv = &amp;quot;&amp;quot;&lt;br /&gt;
	local nombre = 0&lt;br /&gt;
	for a,b in pairs(passed_args) do&lt;br /&gt;
		if (modele_args[a] == nil and b ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			nombre = nombre + 1&lt;br /&gt;
			rv = rv ..&lt;br /&gt;
				&#039;&amp;lt;span class=&amp;quot;erreur_syntaxe_modele&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;L’argument &#039; ..&lt;br /&gt;
				sanitize(a) ..&lt;br /&gt;
				&amp;quot; (valeur &amp;quot; ..&lt;br /&gt;
				sanitize(b) ..&lt;br /&gt;
				&amp;quot;) n’existe pas dans le modèle appelé&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (nombre &amp;gt; 0) then&lt;br /&gt;
		local categorie&lt;br /&gt;
		if (cat) and (cat ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			categorie = tostring(mw.title.new(cat, &amp;quot;Catégorie&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			categorie = &amp;quot;Catégorie:Page appelant un modèle avec un paramètre inconnu&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if (nombre &amp;gt; 10) then&lt;br /&gt;
			rv = rv .. &amp;quot;[[&amp;quot; .. categorie .. &amp;quot;|+]]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			rv = rv .. &amp;quot;[[&amp;quot; .. categorie .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return rv&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.verif( passed_args, modele_args_list, cat )&lt;br /&gt;
	local modele_args = {}&lt;br /&gt;
	for i, v in ipairs( modele_args_list ) do&lt;br /&gt;
		if tonumber( v ) then&lt;br /&gt;
			modele_args[ tonumber( v ) ] = true&lt;br /&gt;
		else&lt;br /&gt;
			modele_args[ v ] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return _verif( passed_args, modele_args, cat )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.verifierLesArguments(frame)&lt;br /&gt;
	local passed_args = frame:getParent().args&lt;br /&gt;
	local modele_args = frame.args&lt;br /&gt;
	local cat = modele_args[&amp;quot;_catégorie&amp;quot;]&lt;br /&gt;
	return _verif(passed_args, modele_args, cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Biblio/Ouvrage&amp;diff=321</id>
		<title>Module:Biblio/Ouvrage</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Biblio/Ouvrage&amp;diff=321"/>
		<updated>2024-09-20T14:12:05Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local Ouvrage = { }   local Commun = require( &amp;#039;Module:Biblio/Commun&amp;#039; ) local References = require( &amp;#039;Module:Biblio/Références&amp;#039; ) local Nombre2texte = require( &amp;#039;Module:Nombre2texte&amp;#039; ) local TableBuilder = require( &amp;#039;Module:TableBuilder&amp;#039; ) local Langue = require( &amp;#039;Module:Langue&amp;#039; )   function Ouvrage.chapitre( args ) 	-- validArg renvoie le premier paramètre non vide, ou nil s&amp;#039;ils sont tous vides. 	-- Seul les noms des paramètres doivent être transmis à la fonct... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Ouvrage = { }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local Commun = require( &#039;Module:Biblio/Commun&#039; )&lt;br /&gt;
local References = require( &#039;Module:Biblio/Références&#039; )&lt;br /&gt;
local Nombre2texte = require( &#039;Module:Nombre2texte&#039; )&lt;br /&gt;
local TableBuilder = require( &#039;Module:TableBuilder&#039; )&lt;br /&gt;
local Langue = require( &#039;Module:Langue&#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function Ouvrage.chapitre( args )&lt;br /&gt;
	-- validArg renvoie le premier paramètre non vide, ou nil s&#039;ils sont tous vides.&lt;br /&gt;
	-- Seul les noms des paramètres doivent être transmis à la fonction.&lt;br /&gt;
	local validArg = function ( ... ) return Commun.validTextArg( args, ... ) end&lt;br /&gt;
	&lt;br /&gt;
	-- titreChap est un paramètre différent de ceux du modèle ouvrage pour utiliser le même programme&lt;br /&gt;
	args.numChap = validArg( &#039;numéro chapitre&#039; )&lt;br /&gt;
	args.titreChap = validArg( &#039;titre chapitre&#039;, &#039;chap&#039;, &#039;titre&#039;, &#039;title&#039;, &#039;Titel&#039; )&lt;br /&gt;
	if args.titre == args.titreChap then&lt;br /&gt;
		args.titre = false&lt;br /&gt;
	end&lt;br /&gt;
	args.titre = validArg( &#039;titre ouvrage&#039;, &#039;ouvrage&#039;, &#039;titre&#039;, &#039;title&#039;, &#039;Titel&#039;) or false&lt;br /&gt;
	args[&#039;numéro chapitre&#039;] = false&lt;br /&gt;
	args[&#039;titre chapitre&#039;] = false&lt;br /&gt;
	args[&#039;traduction titre chapitre&#039;] = validArg( &#039;traduction titre chapitre&#039;) or nil&lt;br /&gt;
	args.chap = false&lt;br /&gt;
	args[&#039;sous-titre chapitre&#039;] = validArg( &#039;sous-titre chapitre&#039;, &#039;sous-titre&#039; ) or false&lt;br /&gt;
	args[&#039;sous-titre&#039;] = validArg( &#039;sous-titre ouvrage&#039;, &#039;sous-titre&#039; )&lt;br /&gt;
	if args[&#039;sous-titre chapitre&#039;] == args[&#039;sous-titre&#039;] then&lt;br /&gt;
		args[&#039;sous-titre&#039;] = false&lt;br /&gt;
	end&lt;br /&gt;
	args[&#039;lien titre&#039;] = validArg( &#039;lien titre ouvrage&#039;, &#039;lien titre&#039; )&lt;br /&gt;
	local preface = validArg( &#039;préface&#039; )&lt;br /&gt;
	local auteurOuvrage = validArg( &#039;auteurs ouvrage&#039;, &#039;auteur ouvrage&#039; )&lt;br /&gt;
	if preface and auteurOuvrage then&lt;br /&gt;
		args[&#039;auteurs ouvrage&#039;] = ( validArg( &#039;auteurs ouvrage&#039;, &#039;auteur ouvrage&#039; ) or &#039;&#039; ) .. &#039; (préf. &#039; .. preface .. &#039;)&#039;&lt;br /&gt;
		args[&#039;préface&#039;] = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return Ouvrage.ouvrage( args, true )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function Ouvrage.ouvrage( args, chapitre )&lt;br /&gt;
	-- La table wiki va recevoir tout les petits bouts de texte, et sera concaténée à la fin.&lt;br /&gt;
	-- Elle utilise la meta-table de TableBuilder, permettant d&#039;utiliser les fonctions de la&lt;br /&gt;
	-- librairie table comme des méthodes. minsert permet d&#039;insérer plusieurs éléments en une&lt;br /&gt;
	-- seule fois en, ignorant les paramètres nil.&lt;br /&gt;
	local wiki = TableBuilder.new()&lt;br /&gt;
	&lt;br /&gt;
	-- validArg renvoie le premier paramètre non vide, ou nil s&#039;ils sont tous vides.&lt;br /&gt;
	-- Seul les noms des paramètres doivent être transmis à la fonction.&lt;br /&gt;
	local validArg = function ( ... ) return Commun.validTextArg( args, ... ) or false end&lt;br /&gt;
	local genre = ( chapitre and &#039;chapitre&#039; ) or &#039;ouvrage&#039;&lt;br /&gt;
	&lt;br /&gt;
	--Table servant à la catégorisation&lt;br /&gt;
	args.categ = {}&lt;br /&gt;
&lt;br /&gt;
	local modeNormal = not validArg( &#039;nocat&#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- Clarification des paramètres  nécessaires pour les COinS&lt;br /&gt;
	args.titre = validArg( &#039;titre&#039;, &#039;title&#039;, &#039;Titel&#039; )&lt;br /&gt;
	args[&#039;pages totales&#039;] = validArg( &#039;pages totales&#039;, &#039;pages&#039; )&lt;br /&gt;
	args.pages = &#039;&#039;&lt;br /&gt;
	local lienExternes = validArg( &#039;lire en ligne&#039;, &#039;url texte&#039;, &#039;url&#039;, &#039;texte&#039;, &#039;Online&#039; )&lt;br /&gt;
	if args.format and not args[&#039;format électronique&#039;] and lienExternes and string.match( args.format,&amp;quot;pdf&amp;quot; ) then&lt;br /&gt;
		args[&#039;format électronique&#039;] = args.format&lt;br /&gt;
		args.format = false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	-- span initial (id) et libellé&lt;br /&gt;
	local spanInitial, spanFinal = Commun.spanInitial ( args, validArg )&lt;br /&gt;
	wiki.minsert( spanInitial,  Commun.libelle( args ) )&lt;br /&gt;
	&lt;br /&gt;
	-- Indication de langue&lt;br /&gt;
	local indicLangue, codeLangue = Commun.indicationDeLangue ( args, validArg )&lt;br /&gt;
	local dir, attributsLangue -- attention, la variable &amp;quot;dir&amp;quot; est aussi utilisée à la fin du code&lt;br /&gt;
	if indicLangue and indicLangue ~= &#039;&#039; then&lt;br /&gt;
		wiki.minsert( indicLangue, &#039; &#039; )&lt;br /&gt;
		if codeLangue then&lt;br /&gt;
			dir = Langue.directionLangue( codeLangue )&lt;br /&gt;
			if dir == &#039;rtl&#039; then &lt;br /&gt;
				attributsLangue = &#039; lang=&amp;quot;&#039; .. codeLangue .. &#039;&amp;quot; dir=&amp;quot;rtl&amp;quot;&#039;&lt;br /&gt;
			else &lt;br /&gt;
				dir = nil&lt;br /&gt;
				attributsLangue = &#039; lang=&amp;quot;&#039; .. codeLangue .. &#039;&amp;quot;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Liste des auteurs et de leurs responsabilités (principales et secondaires)&lt;br /&gt;
	local auteur = validArg( &#039;nom1&#039;, &#039;nom&#039;, &#039;auteur1&#039;, &#039;auteur&#039;, &#039;auteurs&#039;, &#039;auteur institutionnel&#039;, &#039;last1&#039;, &#039;last&#039;, &#039;author1&#039;, &#039;author&#039;, &#039;Autor&#039; )&lt;br /&gt;
	if auteur then&lt;br /&gt;
		if validArg( &#039;auteurs&#039; ) then&lt;br /&gt;
			wiki.minsert( args.auteurs )&lt;br /&gt;
		else&lt;br /&gt;
			wiki.minsert( Commun.responsabilitePrincipale( args, validArg ) )&lt;br /&gt;
		end&lt;br /&gt;
		local coauteur = validArg( &#039;co-auteur&#039;, &#039;coauteurs&#039;, &#039;coauteur&#039;, &#039;coauthors&#039; )&lt;br /&gt;
		if coauteur then&lt;br /&gt;
			wiki.minsert( &#039;, &#039;, coauteur )&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), &#039;, &#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Pour le modèle chapitre : affichage du chapitre&lt;br /&gt;
	if chapitre then&lt;br /&gt;
		if args.numChap then&lt;br /&gt;
			wiki.minsert( Commun.chap, args.numChap, &#039; &#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if args.titreChap then&lt;br /&gt;
			wiki.minsert( &#039;&amp;lt;cite style=&amp;quot;font-style:normal&amp;quot;&#039;, attributsLangue, &#039;&amp;gt;« &#039;, args.titreChap )&lt;br /&gt;
			if args[&#039;sous-titre chapitre&#039;] then&lt;br /&gt;
				wiki.minsert( &#039; : &#039;, args[&#039;sous-titre chapitre&#039;] )&lt;br /&gt;
			end&lt;br /&gt;
			wiki.minsert( &#039; »&#039; )&lt;br /&gt;
			if args[&amp;quot;traduction titre chapitre&amp;quot;] then&lt;br /&gt;
				wiki.minsert(&#039; [« &#039;, args[&amp;quot;traduction titre chapitre&amp;quot;],&#039; »]&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			wiki.minsert( &#039;&amp;lt;/cite&amp;gt;&#039; )&lt;br /&gt;
		elseif modeNormal then&lt;br /&gt;
			wiki.minsert( &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;[[Modèle:Chapitre|{{Chapitre}}]] : paramètre &amp;lt;code&amp;gt;titre chapitre&amp;lt;/code&amp;gt; manquant&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
			args.categ.titreChapitre = true&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		wiki.minsert( &#039;, dans &#039; )&lt;br /&gt;
		&lt;br /&gt;
		local auteurOuvrage = validArg( &#039;auteurs ouvrage&#039;, &#039;auteur ouvrage&#039; )&lt;br /&gt;
		if auteurOuvrage then&lt;br /&gt;
			wiki.minsert( auteurOuvrage, &#039;, &#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Titre&lt;br /&gt;
	if args.titre then&lt;br /&gt;
		local titre, sousTitre = args.titre, validArg( &#039;sous-titre&#039; )&lt;br /&gt;
		-- retrait italique, ne doit normalement pas être mis mais l&#039;erreur est très fréquente&lt;br /&gt;
		titre = titre:gsub( &amp;quot;^&#039;&#039;%f[^&#039;](.+)%f[&#039;]&#039;&#039;$&amp;quot;, &amp;quot;%1&amp;quot; )&lt;br /&gt;
		if sousTitre then&lt;br /&gt;
			-- retrait italique, erreur moins fréquente avec les sous-titres mais autant être consistant&lt;br /&gt;
			sousTitre = sousTitre:gsub( &amp;quot;^&#039;&#039;%f[^&#039;](.+)%f[&#039;]&#039;&#039;$&amp;quot;, &amp;quot;%1&amp;quot; )&lt;br /&gt;
			titre =  titre .. &#039; : &#039; .. sousTitre&lt;br /&gt;
		end&lt;br /&gt;
		titre = Commun.fusionTexteLien( titre, args[&#039;lien titre&#039;], args.categ )&lt;br /&gt;
		local graphie = &#039; class=&amp;quot;italique&amp;quot;&#039;&lt;br /&gt;
		if Langue.nonLatin( titre ) then&lt;br /&gt;
			graphie = &#039; style=&amp;quot;font-style:normal&amp;quot;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( &#039;&amp;lt;cite&#039;, graphie, attributsLangue, &#039;&amp;gt;&#039;, titre, &#039;&amp;lt;/cite&amp;gt;&#039; )&lt;br /&gt;
		&lt;br /&gt;
	elseif modeNormal then&lt;br /&gt;
		if chapitre then&lt;br /&gt;
			args.categ.titreOuvrage = true&lt;br /&gt;
			if args.categ.titreChapitre then&lt;br /&gt;
				wiki.minsert( &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;paramètre &amp;lt;code&amp;gt;titre ouvrage&amp;lt;/code&amp;gt; manquant&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				wiki.minsert( &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;[[Modèle:Chapitre|{{Chapitre}}]] : paramètre &amp;lt;code&amp;gt;titre ouvrage&amp;lt;/code&amp;gt; manquant&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			args.categ.titre = true&lt;br /&gt;
			wiki.minsert( &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;[[Modèle:Ouvrage|{{Ouvrage}}]] : paramètre &amp;lt;code&amp;gt;titre&amp;lt;/code&amp;gt; manquant&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Titre original et traducteur&lt;br /&gt;
	local original = validArg( &#039;titre original&#039;, &#039;titre vo&#039;)&lt;br /&gt;
	local traduction_titre = validArg(&#039;traduction titre&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if original and original ~= args.titre then&lt;br /&gt;
		if validArg( &#039;langue originale&#039; ) then&lt;br /&gt;
			wiki.minsert( &#039; [« &#039;, Langue.langue{ args[&#039;langue originale&#039;], original }, &#039; »]&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			wiki.minsert( &#039; [« &#039;, original, &#039; »]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if traduction_titre then&lt;br /&gt;
		wiki.minsert( &#039; [« &#039;, traduction_titre, &#039; »]&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not auteur then&lt;br /&gt;
		local responsabiliteSecondaire = Commun.responsabiliteSecondaire( args, validArg )&lt;br /&gt;
		if responsabiliteSecondaire then&lt;br /&gt;
			wiki.minsert( &#039; &#039;, responsabiliteSecondaire )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- Volume, tome&lt;br /&gt;
	local volume = validArg( &#039;volume&#039;, &#039;vol&#039;, &#039;Band&#039; )&lt;br /&gt;
	if volume then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.vol, volume )&lt;br /&gt;
	end&lt;br /&gt;
	local tome = validArg( &#039;tome&#039; )&lt;br /&gt;
	if tome then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.tome, tome )&lt;br /&gt;
	end&lt;br /&gt;
	local titreVolTome = validArg( &#039;titre volume&#039;, &#039;titre tome&#039; )&lt;br /&gt;
	if titreVolTome then&lt;br /&gt;
		if volume or tome then&lt;br /&gt;
			wiki.minsert( &#039; : &#039; )&lt;br /&gt;
		else&lt;br /&gt;
			wiki.minsert( &#039;, &#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if codeLangue then&lt;br /&gt;
			wiki.minsert( Langue.langue{ codeLangue, titreVolTome, class=&#039;italique&#039; } )&lt;br /&gt;
		else&lt;br /&gt;
			wiki.minsert( &#039;&amp;lt;span class=&amp;quot;italique&amp;quot;&amp;gt;&#039;, titreVolTome,  &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		local tradTitreVolTome = validArg( &#039;traduction titre volume&#039;, &#039;traduction titre tome&#039; )&lt;br /&gt;
		if tradTitreVolTome then&lt;br /&gt;
			wiki.minsert( &#039; [« &#039;, tradTitreVolTome, &#039; »]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Nature du document et établissement (pour les thèses...)&lt;br /&gt;
	local nature = validArg( &#039;nature ouvrage&#039; )&lt;br /&gt;
	if nature then&lt;br /&gt;
		wiki.minsert( &#039; (&#039;, nature, &#039;)&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local etablissement = validArg( &#039;établissement&#039; )&lt;br /&gt;
	if etablissement then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, etablissement )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Lieu et éditeur&lt;br /&gt;
	local lieu = validArg( &#039;lieu&#039;, &#039;location&#039;, &#039;Ort&#039; )&lt;br /&gt;
	if lieu then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, lieu )&lt;br /&gt;
	end&lt;br /&gt;
	local editeur = validArg( &#039;éditeur&#039;, &#039;édition&#039;, &#039;editeur&#039;, &#039;edition&#039;, &#039;publisher&#039;, &#039;Verlag&#039; )&lt;br /&gt;
	if editeur then&lt;br /&gt;
		local lienEditeur = validArg( &#039;lien éditeur&#039; )&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.fusionTexteLien( editeur, lienEditeur, args.categ ) )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Collecion et numéro&lt;br /&gt;
	local collection = validArg( &#039;collection&#039;, &#039;series&#039; )&lt;br /&gt;
	if collection then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.coll, &#039;« &#039;, collection )&lt;br /&gt;
		local serie = validArg( &#039;série&#039; )&lt;br /&gt;
		if serie then&lt;br /&gt;
			wiki.minsert( &#039; / &#039;, serie )&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( &#039; »&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local numeroCollection = validArg( &#039;numéro dans collection&#039;, &#039;numéro dans la collection&#039; )&lt;br /&gt;
	if numeroCollection then&lt;br /&gt;
		wiki.minsert( &#039; (&#039;, Commun.numero, numeroCollection, &#039;)&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Date, réimpression et éditions&lt;br /&gt;
	local annee = validArg( &#039;année&#039;, &#039;date&#039;, &#039;year&#039;, &#039;Datum&#039;, &#039;Jahr&#039; )&lt;br /&gt;
	if annee then&lt;br /&gt;
		local lrm&lt;br /&gt;
		if Langue.nonLatin( wiki.concat() ) then&lt;br /&gt;
			lrm = &#039;&amp;amp;lrm;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( &#039;,&#039;, lrm, &#039; &#039;, Commun.inscriptionDate( args ) )&lt;br /&gt;
		-- le &amp;amp;lrm est une marque de texte gauche à droite, utile si le texte qui précède est en droite à gauche (arabe, hébreux...)&lt;br /&gt;
	end&lt;br /&gt;
	local publi = validArg( &#039;réimpression&#039;, &#039;publi&#039; )&lt;br /&gt;
	if publi then&lt;br /&gt;
		wiki.minsert( &#039; (&#039;, Commun.reimpr, publi, &#039;)&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local numeroEdition = validArg( &amp;quot;numéro d&#039;édition&amp;quot;, &amp;quot;numéro édition&amp;quot;  )&lt;br /&gt;
	if numeroEdition then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Nombre2texte.ordinal( numeroEdition, true ), Commun.ed )&lt;br /&gt;
	end&lt;br /&gt;
	local premiereEdition = validArg( &#039;année première édition&#039;, &#039;origyear&#039; )&lt;br /&gt;
	if premiereEdition then&lt;br /&gt;
		wiki.minsert( &#039; (&#039;, Commun.premiere, Commun.ed, &#039; &#039;, premiereEdition, &#039;)&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Pages et format&lt;br /&gt;
	local pages = validArg( &#039;pages totales&#039;, &#039;pages&#039; )&lt;br /&gt;
	if pages then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.formatePagesTotales( pages ) )&lt;br /&gt;
	end&lt;br /&gt;
	local format = validArg( &#039;format livre&#039;, &#039;format&#039; )&lt;br /&gt;
	if format then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, format )&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- Références&lt;br /&gt;
	local reference = validArg( &#039;référence&#039; )&lt;br /&gt;
	if reference then&lt;br /&gt;
		wiki.minsert( &#039; &#039;, Commun.detailEditions( reference ) )&lt;br /&gt;
	end&lt;br /&gt;
	local refSimple = validArg( &#039;référence simplifiée&#039;, &#039;ref&#039; )&lt;br /&gt;
	if refSimple then&lt;br /&gt;
		wiki.minsert( &#039; &#039;, Commun.detailEdition( refSimple ) )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	-- Lien vers l&#039;ouvrage en ligne (isbn, issn, pmid, doi, lire en ligne, résumé...)&lt;br /&gt;
	wiki.minsert( References.affichageLiensExternes( args, validArg, true, false ) )&lt;br /&gt;
	-- consulté le n&#039;est plus affiché, voir [[Discussion_modèle:Ouvrage#Évolution documentation]]&lt;br /&gt;
	&lt;br /&gt;
	-- Précision sur le passage concerné&lt;br /&gt;
	local partie = validArg( &#039;partie&#039; )&lt;br /&gt;
	if partie then&lt;br /&gt;
		if partie:match( &#039;^[%dIVXLCM]+$&#039; ) then&lt;br /&gt;
			wiki.minsert( &#039;, partie&amp;amp;nbsp;&#039;, partie )&lt;br /&gt;
		elseif partie:match( &#039;^[ivxlcmIVXLCM]+$&#039; ) then&lt;br /&gt;
			wiki.minsert( &#039;, partie&amp;amp;nbsp;&#039;, Commun.romain( partie ) )&lt;br /&gt;
		else&lt;br /&gt;
			wiki.minsert( &#039;, &#039;, partie )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local numeroChapitre = validArg( &#039;numéro chapitre&#039;, &#039;numéro&#039; )&lt;br /&gt;
	if numeroChapitre then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.chap, numeroChapitre )&lt;br /&gt;
	end&lt;br /&gt;
	local titreChapitre = validArg( &#039;titre chapitre&#039;, &#039;chap&#039;, &#039;chapitre&#039;, &#039;chapter&#039; )&lt;br /&gt;
	if titreChapitre then&lt;br /&gt;
		if numeroChapitre then&lt;br /&gt;
			titreChapitre = &#039; (« &#039; .. titreChapitre .. &#039; »)&#039;&lt;br /&gt;
		else&lt;br /&gt;
			titreChapitre = &#039;, « &#039; .. titreChapitre .. &#039; »&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if codeLangue then&lt;br /&gt;
			titreChapitre = Langue.langue{ codeLangue, titreChapitre }&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( titreChapitre )&lt;br /&gt;
		local tradTitreChap = validArg( &#039;traduction titre chapitre&#039; )&lt;br /&gt;
		if tradTitreChap then&lt;br /&gt;
			wiki.minsert( &#039; [« &#039;, tradTitreChap, &#039; »]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local passage = validArg( &#039;passage&#039;, &#039;page&#039; )&lt;br /&gt;
	if passage then&lt;br /&gt;
		wiki.minsert( &#039;, &#039;, Commun.formatePassage( passage ) )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Ajout des méthadonnées COinS (ContextObjects in Spans)&lt;br /&gt;
	wiki.minsert( Commun.COinS( args, validArg, genre ) )&lt;br /&gt;
	&lt;br /&gt;
	-- Fin du span (id) et de la description de l&#039;ouvrage&lt;br /&gt;
	wiki.minsert( spanFinal )&lt;br /&gt;
	&lt;br /&gt;
	-- Plume &amp;quot;Ouvrage utilisé pour la rédaction de l&#039;article&amp;quot;&lt;br /&gt;
	if validArg( &#039;plume&#039; ) then&lt;br /&gt;
		local patternPonct = &#039;[,.;:!?]$&#039;&lt;br /&gt;
		local ponctuation = wiki.concat():gsub( &#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039; ):match( patternPonct )&lt;br /&gt;
		if not ponctuation then&lt;br /&gt;
			wiki.minsert( &#039;.&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( Commun.plume )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Citation et commentaire de cet ouvrage&lt;br /&gt;
	local citation = validArg( &#039;extrait&#039;, &#039;citation&#039; )&lt;br /&gt;
	if citation then&lt;br /&gt;
		if codeLangue then&lt;br /&gt;
			citation = Langue.lang{ codeLangue, citation }&lt;br /&gt;
		end&lt;br /&gt;
		wiki.minsert( &#039;&amp;amp;nbsp;:&amp;lt;blockquote&amp;gt;«&amp;amp;nbsp;&#039;, citation, &#039;&amp;amp;nbsp;»&amp;lt;/blockquote&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	wiki.minsert( Commun.commentaire( args ) )&lt;br /&gt;
	&lt;br /&gt;
	local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true, [104] = true }&lt;br /&gt;
	if namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] and modeNormal then&lt;br /&gt;
		wiki.minsert(&lt;br /&gt;
			args.categ.langue and &#039;[[Catégorie:Page du modèle Ouvrage comportant une erreur|langue]]&#039;,&lt;br /&gt;
			args.categ.titre and &#039;[[Catégorie:Page du modèle Ouvrage comportant une erreur|titre]]&#039;,&lt;br /&gt;
			args.categ.titreChapitre and &#039;[[Catégorie:Page du modèle Chapitre comportant une erreur|Chapitre]]&#039;,&lt;br /&gt;
			args.categ.titreOuvrage and &#039;[[Catégorie:Page du modèle Chapitre comportant une erreur|Ouvrage]]&#039;,&lt;br /&gt;
			args.categ.lienExterne and &#039;[[Catégorie:Page du modèle Ouvrage comportant une erreur|Externe]]&#039;,&lt;br /&gt;
			args.categ.isbnInvalid and &#039;[[Catégorie:Page avec ISBN invalide]]&#039;,&lt;br /&gt;
			args.categ.issnInvalid and &#039;[[Catégorie:Page avec ISSN invalide]]&#039;,&lt;br /&gt;
			args.categ.eanInvalid and &#039;[[Catégorie:Page avec EAN invalide]]&#039;&lt;br /&gt;
		)&lt;br /&gt;
		if dir then&lt;br /&gt;
			wiki.minsert( &#039;[[Catégorie:Recension temporaire pour le modèle Ouvrage|rtl]]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	return wiki.concat()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return Ouvrage&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Biblio/Lien_web&amp;diff=320</id>
		<title>Module:Biblio/Lien web</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Biblio/Lien_web&amp;diff=320"/>
		<updated>2024-09-20T14:11:37Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local Lien = { }  local Commun = require( &amp;#039;Module:Biblio/Commun&amp;#039; ) local References = require( &amp;#039;Module:Biblio/Références&amp;#039; )  -- Si un concat est effectué pendant les traitements, -- permet de réutiliser ensuite son résultat, au lieu de refaire un concat complet à la fin des traitements. local function intermediateConcat( array ) 	local state = table.concat( array )  	array[ 1 ] = state 	for i = 2, #array do 		array[ i ] = nil 	end  	return state end  local... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Lien = { }&lt;br /&gt;
&lt;br /&gt;
local Commun = require( &#039;Module:Biblio/Commun&#039; )&lt;br /&gt;
local References = require( &#039;Module:Biblio/Références&#039; )&lt;br /&gt;
&lt;br /&gt;
-- Si un concat est effectué pendant les traitements,&lt;br /&gt;
-- permet de réutiliser ensuite son résultat, au lieu de refaire un concat complet à la fin des traitements.&lt;br /&gt;
local function intermediateConcat( array )&lt;br /&gt;
	local state = table.concat( array )&lt;br /&gt;
&lt;br /&gt;
	array[ 1 ] = state&lt;br /&gt;
	for i = 2, #array do&lt;br /&gt;
		array[ i ] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return state&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLien( args, dead )&lt;br /&gt;
	-- La table wiki va recevoir tous les petits morceaux de texte, et sera concaténée à la fin.&lt;br /&gt;
	local wiki = {}&lt;br /&gt;
&lt;br /&gt;
	-- permet d&#039;écrire &amp;quot;insert( value )&amp;quot; au lieu de &amp;quot;wiki[#wiki+1] = value&amp;quot;&lt;br /&gt;
	local function insert( value )&lt;br /&gt;
		wiki[#wiki+1] = value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local modele = &#039;[[Modèle:Lien web|{{Lien web}}]]&#039;&lt;br /&gt;
	if dead then&lt;br /&gt;
		modele = &#039;[[Modèle:Lien brisé|{{Lien brisé}}]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- validArg renvoie le premier paramètre non vide, ou nil s&#039;ils sont tous vides.&lt;br /&gt;
	-- Seuls les noms des paramètres doivent être transmis à la fonction.&lt;br /&gt;
	local function validArg( ... )&lt;br /&gt;
		return Commun.validTextArg( args, ... )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Variables servant à la catégorisation&lt;br /&gt;
	args.categ = {}&lt;br /&gt;
	if validArg( &#039;dead-url&#039;, &#039;deadurl&#039;, &#039;brisé le&#039;, &#039;lien brisé&#039; ) then&lt;br /&gt;
		dead = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Span initial, id&lt;br /&gt;
	local spanInitial, spanFinal = Commun.spanInitial( args, validArg )&lt;br /&gt;
	insert( spanInitial )&lt;br /&gt;
&lt;br /&gt;
	-- libellé&lt;br /&gt;
	insert( Commun.libelle( args ) or nil )&lt;br /&gt;
&lt;br /&gt;
	-- indication de langue&lt;br /&gt;
	local indicLangue, codeLangue = Commun.indicationDeLangue( args, validArg )&lt;br /&gt;
	if indicLangue and indicLangue ~= &#039;&#039; then&lt;br /&gt;
		insert( indicLangue .. &#039; &#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Liste des auteurs et de leurs responsabilités (principales et secondaires)&lt;br /&gt;
	local auteur = validArg( &#039;nom1&#039;, &#039;nom&#039;, &#039;auteur1&#039;, &#039;auteur&#039;, &#039;auteurs&#039;, &#039;auteur institutionnel&#039;, &#039;last1&#039;, &#039;last&#039;, &#039;author1&#039;, &#039;author&#039; )&lt;br /&gt;
	if auteur then&lt;br /&gt;
		if validArg( &#039;auteurs&#039; ) then&lt;br /&gt;
			insert( args.auteurs )&lt;br /&gt;
		else&lt;br /&gt;
			insert( Commun.responsabilitePrincipale( args, validArg ) or nil )&lt;br /&gt;
		end&lt;br /&gt;
		local coauteur = validArg( &#039;co-auteur&#039;, &#039;coauteurs&#039;, &#039;coauteur&#039;, &#039;coauthors&#039; )&lt;br /&gt;
		if coauteur then&lt;br /&gt;
			insert( &#039;, &#039; .. coauteur )&lt;br /&gt;
		end&lt;br /&gt;
		insert( Commun.responsabiliteSecondaire( args, validArg ) or nil )&lt;br /&gt;
		insert( &#039;, &#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local url = validArg( &#039;url&#039;, &#039;lire en ligne&#039;, &#039;url texte&#039;, &#039;lien&#039; )&lt;br /&gt;
	local archiveUrl = validArg( &#039;archive-url&#039;, &#039;archiveurl&#039; )&lt;br /&gt;
	local titre = validArg( &#039;titre&#039;, &#039;title&#039; )&lt;br /&gt;
	local description = validArg( &#039;description&#039; )&lt;br /&gt;
	-- url&lt;br /&gt;
	if url then&lt;br /&gt;
		-- remplacement des crochets et espaces par leur équivalent HTML&lt;br /&gt;
		url = url:gsub( &#039;%[&#039;, &#039;%%5B&#039; ):gsub( &#039;%]&#039;, &#039;%%5D&#039; ):gsub( &#039; &#039;, &#039;%%20&#039; )&lt;br /&gt;
		-- ajout http:// si nécessaire :&lt;br /&gt;
		if not ( url:match( &#039;^https?://&#039; ) or url:match( &#039;^ftp://&#039; ) or url:match( &#039;^//&#039; ) ) then&lt;br /&gt;
			url = &#039;http://&#039; .. url&lt;br /&gt;
		end&lt;br /&gt;
		if dead or archiveUrl then&lt;br /&gt;
			insert( &#039;&amp;lt;span class=&amp;quot;noarchive&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	elseif not validArg( &#039;pmid&#039;, &#039;pmcid&#039;, &#039;doi&#039;, &#039;jstor&#039;, &#039;bibcod&#039;, &#039;math reviews&#039;, &#039;zbl&#039;, &#039;zbmath&#039;, &#039;arxiv&#039; ) then&lt;br /&gt;
		args.categ.url = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- titre&lt;br /&gt;
	if titre then&lt;br /&gt;
		-- suppression des retours ligne éventuels, sinon MediaWiki ne reconnaît pas le lien externe&lt;br /&gt;
		-- et remplacement des crochets par leur équivalent HTML (uniquement le crochet de fermeture)&lt;br /&gt;
		titre = titre:gsub( &#039;\n&#039;, &#039; &#039; ):gsub( &#039;%]&#039;, &#039;&amp;amp;#93;&#039; )&lt;br /&gt;
&lt;br /&gt;
		-- on teste d&#039;abord si titre contient déjà des guillemets&lt;br /&gt;
		local lQuote = &#039;« &#039;&lt;br /&gt;
		local rQuote = &#039; »&#039;&lt;br /&gt;
		if titre:match( &#039;^«.+»$&#039; ) then&lt;br /&gt;
			lQuote = &#039;&#039;&lt;br /&gt;
			rQuote = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- par précaution, ne pas modifier la valeur de la variable locale &amp;quot;titre&amp;quot;&lt;br /&gt;
		local sousTitre = validArg( &#039;sous-titre&#039; )&lt;br /&gt;
		if sousTitre then&lt;br /&gt;
			sousTitre = &#039; : &#039; .. sousTitre&lt;br /&gt;
		else&lt;br /&gt;
			sousTitre = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local attributStyle = &#039; style=&amp;quot;font-style:normal;&amp;quot;&#039;&lt;br /&gt;
		if dead and not archiveUrl then&lt;br /&gt;
			attributStyle = &#039; style=&amp;quot;font-style:normal; color:var(--color-link-red, #d73333);&amp;quot;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local attributLang = &#039;&#039;&lt;br /&gt;
		if codeLangue then&lt;br /&gt;
			attributLang = &#039; lang=&amp;quot;&#039; .. codeLangue .. &#039;&amp;quot;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		insert( lQuote )&lt;br /&gt;
		if url then&lt;br /&gt;
			insert( &#039;[&#039; .. url .. &#039; &#039; )&lt;br /&gt;
		end&lt;br /&gt;
		insert( &#039;&amp;lt;cite&#039; .. attributStyle .. attributLang .. &#039;&amp;gt;&#039; )&lt;br /&gt;
		insert( titre .. sousTitre )&lt;br /&gt;
		insert( &#039;&amp;lt;/cite&amp;gt;&#039; )&lt;br /&gt;
		if url then&lt;br /&gt;
			insert( &#039;]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		insert( rQuote )&lt;br /&gt;
&lt;br /&gt;
		-- traduction titre&lt;br /&gt;
		local traductionTitre = validArg( &#039;traduction titre&#039; )&lt;br /&gt;
		if traductionTitre and traductionTitre ~= args.titre then&lt;br /&gt;
			insert( &#039; [« &#039; .. traductionTitre .. &#039; »]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if description then&lt;br /&gt;
			insert( &#039;, &#039; .. description )&lt;br /&gt;
		end&lt;br /&gt;
	elseif description then&lt;br /&gt;
		if url then&lt;br /&gt;
			insert( &#039;[&#039; .. url .. &#039; &#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if dead and not archiveUrl then&lt;br /&gt;
			insert( &#039;&amp;lt;span style=&amp;quot;color:var(--color-link-red, #d73333);&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
			insert( description )&lt;br /&gt;
			insert( &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			insert( description )&lt;br /&gt;
		end&lt;br /&gt;
		if url then&lt;br /&gt;
			insert( &#039;]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		args.categ.titre = true&lt;br /&gt;
		if url then&lt;br /&gt;
			insert( &#039;[&#039; .. url .. &#039;]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- message d&#039;erreur&lt;br /&gt;
	if args.categ.url or args.categ.titre then&lt;br /&gt;
		local absent = { }&lt;br /&gt;
		if args.categ.url then&lt;br /&gt;
			table.insert( absent, &#039;« &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; »&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if args.categ.titre then&lt;br /&gt;
			table.insert( absent, &#039;« &amp;lt;code&amp;gt;titre&amp;lt;/code&amp;gt; »&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( wiki, 1, &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Modèle &#039;&lt;br /&gt;
			.. modele .. &#039; : paramètre&#039; .. ( #absent &amp;gt; 1 and &#039;s &#039; or &#039; &#039; )&lt;br /&gt;
			.. mw.text.listToText( absent ) .. &#039; manquant&#039; .. ( #absent &amp;gt; 1 and &#039;s&#039; or &#039;&#039; )&lt;br /&gt;
			.. &#039;.&amp;amp;ensp;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- liens archives pour les liens brisés&lt;br /&gt;
	if url and dead and not archiveUrl then&lt;br /&gt;
		insert( &#039;&amp;lt;sup class=&amp;quot;plainlinks&amp;quot;&amp;gt;(&#039;&lt;br /&gt;
			.. &#039;[https://web.archive.org/web/*/&#039; .. url .. &#039; Archive.org] • &#039;&lt;br /&gt;
			.. &#039;[https://archive.wikiwix.com/cache/?url=&#039; .. url .. &#039; Wikiwix] • &#039;&lt;br /&gt;
			.. &#039;[https://archive.is/&#039; .. url .. &#039; Archive.is] • &#039;&lt;br /&gt;
			.. &#039;[https://webcache.googleusercontent.com/search?hl=fr&amp;amp;q=cache:&#039; .. url .. &#039; Google] • &#039;&lt;br /&gt;
			.. &#039;[[Projet:Correction des liens externes#J\&#039;ai trouvé un lien mort, que faire ?|Que faire ?]]&#039;&lt;br /&gt;
			.. &#039;)&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	elseif archiveUrl then&lt;br /&gt;
		if not ( archiveUrl:match( &#039;^http&#039; ) or archiveUrl:match( &#039;^//&#039; ) ) then&lt;br /&gt;
			archiveUrl = &#039;http://&#039; .. archiveUrl&lt;br /&gt;
		end&lt;br /&gt;
		local textArchive = &#039;archive&#039;&lt;br /&gt;
		local dateArchive = validArg( &#039;archive-date&#039;, &#039;archivedate&#039; )&lt;br /&gt;
		if dateArchive then&lt;br /&gt;
			dateArchive = Commun.inscriptionDate{ date = dateArchive }&lt;br /&gt;
			if dateArchive and dateArchive ~= &#039;&#039; then&lt;br /&gt;
				textArchive = textArchive .. &#039; du &#039; .. dateArchive&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		insert( &#039; &amp;lt;small class=&amp;quot;plainlinks cachelinks&amp;quot;&amp;gt;&amp;amp;#91;[&#039; .. archiveUrl .. &#039; &#039; .. textArchive .. &#039;]&amp;amp;#93;&amp;lt;/small&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if url and ( dead or archiveUrl ) then&lt;br /&gt;
		insert( &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- affichage de l&#039;icône du niveau d&#039;accès à l&#039;information&lt;br /&gt;
	local paywall = validArg( &#039;accès url&#039; )&lt;br /&gt;
	if paywall then&lt;br /&gt;
		local suffixeIcone = References.indicationIconeAcces( paywall )&lt;br /&gt;
		if suffixeIcone and suffixeIcone ~= &#039;&#039; then&lt;br /&gt;
			insert( suffixeIcone )&lt;br /&gt;
		else&lt;br /&gt;
			table.insert( wiki, 1, &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Modèle &#039;&lt;br /&gt;
				.. modele .. &#039; : paramètre « &amp;lt;code&amp;gt;accès url&amp;lt;/code&amp;gt; » utilisé avec la valeur &amp;lt;code&amp;gt;&#039;&lt;br /&gt;
				.. paywall .. &#039;&amp;lt;/code&amp;gt; inconnue.&amp;amp;ensp;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- format&lt;br /&gt;
	local indicationDeFormat = References.indicationDeFormat( validArg( &#039;format électronique&#039;, &#039;format&#039; ) )&lt;br /&gt;
	if indicationDeFormat and indicationDeFormat ~= &#039;&#039; then&lt;br /&gt;
		insert( indicationDeFormat )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Nature du document&lt;br /&gt;
	local nature = validArg( &#039;nature document&#039; )&lt;br /&gt;
	if nature then&lt;br /&gt;
		insert( &#039; (&#039; .. nature .. &#039;)&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- série, site, éditeur&lt;br /&gt;
	local serie = validArg( &#039;série&#039;, &#039;work&#039; )&lt;br /&gt;
	if serie then&lt;br /&gt;
		insert( &#039;, &amp;lt;span class=&amp;quot;italique&amp;quot;&amp;gt;&#039; .. serie .. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
		args.categ.work = validArg( &#039;work&#039; )	-- il y a ambiguïté sur l&#039;utilisation de ce paramètre&lt;br /&gt;
	end&lt;br /&gt;
	local site = validArg( &#039;site&#039;, &#039;website&#039; )&lt;br /&gt;
	if site then&lt;br /&gt;
		insert( &#039;, sur &amp;lt;span class=&amp;quot;italique&amp;quot;&amp;gt;&#039; .. site .. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local periodique = validArg( &#039;périodique&#039; )&lt;br /&gt;
	if periodique then&lt;br /&gt;
		insert( &#039;, &amp;lt;i&amp;gt;&#039; .. periodique .. &#039;&amp;lt;/i&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local lieu = validArg( &#039;lieu&#039;, &#039;lieu édition&#039;, &#039;location&#039; )&lt;br /&gt;
	if lieu then&lt;br /&gt;
		insert( &#039;, &#039; .. lieu )&lt;br /&gt;
	end&lt;br /&gt;
	local editeur = validArg( &#039;éditeur&#039;, &#039;publisher&#039;, &#039;editeur&#039; )&lt;br /&gt;
	if editeur then&lt;br /&gt;
		local lienEditeur = validArg( &#039;lien éditeur&#039; )&lt;br /&gt;
		if lienEditeur then&lt;br /&gt;
			insert( &#039;, [[&#039; .. lienEditeur .. &#039;|&#039; .. editeur .. &#039;]]&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			insert( &#039;, &#039; .. editeur )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- date&lt;br /&gt;
	if validArg( &#039;année&#039;, &#039;date&#039;, &#039;year&#039;, &#039;en ligne le&#039;, &#039;en ligne&#039; ) then&lt;br /&gt;
		args.categ.enLigneLe = validArg( &#039;date&#039; ) and validArg( &#039;en ligne le&#039; ) and args.date ~= args[&#039;en ligne le&#039;]&lt;br /&gt;
		args.date = validArg( &#039;date&#039;, &#039;en ligne le&#039;, &#039;en ligne&#039; )&lt;br /&gt;
		local dateFormatee = Commun.inscriptionDate( args )&lt;br /&gt;
		if dateFormatee and dateFormatee ~= &#039;&#039; then&lt;br /&gt;
			local Langue = require( &#039;Module:Langue&#039; )&lt;br /&gt;
			local lrm = &#039;&#039;&lt;br /&gt;
			if Langue.nonLatin( intermediateConcat( wiki ) ) then&lt;br /&gt;
				lrm = &#039;&amp;amp;lrm;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			insert( &#039;,&#039; .. lrm .. &#039; &#039; .. dateFormatee )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- liens externes (isbn, doi...) et &amp;quot;consulté le&amp;quot; entre parenthèses, et en plus petit, sauf en note&lt;br /&gt;
	local liensExternes = References.affichageLiensExternes( args, validArg, false, true )&lt;br /&gt;
	if liensExternes and liensExternes ~= &#039;&#039; then&lt;br /&gt;
		insert( liensExternes )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- fin du span&lt;br /&gt;
	insert( spanFinal )&lt;br /&gt;
&lt;br /&gt;
	-- citation et passage&lt;br /&gt;
	local citation = validArg( &#039;citation&#039;, &#039;extrait&#039;, &#039;quote&#039; )&lt;br /&gt;
	if citation then&lt;br /&gt;
		if codeLangue then&lt;br /&gt;
			local Langue = require( &#039;Module:Langue&#039; )&lt;br /&gt;
			citation = Langue.lang{ codeLangue, citation }&lt;br /&gt;
		end&lt;br /&gt;
		insert( &#039;\194\160: &amp;lt;span class=&amp;quot;citation&amp;quot;&amp;gt;« &#039; .. citation .. &#039; »&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local passage = validArg( &#039;page&#039;, &#039;pages&#039;, &#039;passage&#039; )&lt;br /&gt;
	if passage then&lt;br /&gt;
		insert( &#039;, &#039; .. Commun.formatePassage( passage ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Plume &amp;quot;Ouvrage utilisé pour la rédaction de l&#039;article&amp;quot;&lt;br /&gt;
	if validArg( &#039;plume&#039; ) then&lt;br /&gt;
		local patternPonct = &#039;[,.;:!?] ?»?$&#039;&lt;br /&gt;
		local ponctuation = intermediateConcat( wiki ):gsub( &#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039; ):match( patternPonct )&lt;br /&gt;
		if not ponctuation then&lt;br /&gt;
			insert( &#039;.&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		insert( Commun.plume )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		insert(&lt;br /&gt;
			( args.categ.langue and &#039;[[Catégorie:Page du modèle Lien web comportant une erreur|langue]]&#039; or &#039;&#039; )&lt;br /&gt;
			.. ( args.categ.url and &#039;[[Catégorie:Page du modèle Lien web comportant une erreur|Url]]&#039; or &#039;&#039; )&lt;br /&gt;
			.. ( args.categ.titre and &#039;[[Catégorie:Page du modèle Lien web comportant une erreur|titre]]&#039; or &#039;&#039; )&lt;br /&gt;
			.. ( args.categ.enLigneLe and &#039;[[Catégorie:Page du modèle Lien web comportant une erreur|enLigneLe]]&#039; or &#039;&#039; )&lt;br /&gt;
			.. ( args.categ.isbnInvalid and &#039;[[Catégorie:Page avec ISBN invalide]]&#039; or &#039;&#039; )&lt;br /&gt;
			.. ( args.categ.issnInvalid and &#039;[[Catégorie:Page avec ISSN invalide]]&#039; or &#039;&#039; )&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dead and not validArg( &#039;nocat&#039; ) then&lt;br /&gt;
		if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
			insert( &#039;[[Catégorie:Article contenant un lien mort]]&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			insert( &#039;[[Catégorie:Page contenant un lien mort]]&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat( wiki )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Lien.lienWeb( args )&lt;br /&gt;
	return formatLien( args, false )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Lien.lienBrise( args )&lt;br /&gt;
	args.titre = Commun.validTextArg( args, &#039;titre&#039;, &#039;title&#039;, &#039;url&#039;, &#039;lire en ligne&#039;, &#039;url texte&#039;, &#039;lien&#039; )&lt;br /&gt;
	return formatLien( args, true )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Lien&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Biblio/Commun&amp;diff=319</id>
		<title>Module:Biblio/Commun</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Biblio/Commun&amp;diff=319"/>
		<updated>2024-09-20T14:11:16Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « -- Les fonctions du module Biblio/Commun sont des éléments nécessaire au modules Biblio/Ouvrage, Biblio/Article, Biblio/Lien web.  local Commun = {}   local Date = require( &amp;#039;Module:Date&amp;#039; ) local Langue -- = require( &amp;#039;Module:Langue&amp;#039; ) ne sera chargé que si nécessaire local Languedata -- = mw.loadData( &amp;#039;Module:Langue/Data&amp;#039; ) ne sera chargé que si nécessaire   --[=[ 	Trouve le premier lien interwiki &amp;#039;texte&amp;#039; de str et retourne : texte, lien 	Si le lie... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Les fonctions du module Biblio/Commun sont des éléments nécessaire au modules Biblio/Ouvrage, Biblio/Article, Biblio/Lien web.&lt;br /&gt;
&lt;br /&gt;
local Commun = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local Date = require( &#039;Module:Date&#039; )&lt;br /&gt;
local Langue -- = require( &#039;Module:Langue&#039; ) ne sera chargé que si nécessaire&lt;br /&gt;
local Languedata -- = mw.loadData( &#039;Module:Langue/Data&#039; ) ne sera chargé que si nécessaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
	Trouve le premier lien interwiki &#039;[[lien|texte]]&#039; de str et retourne : texte, lien&lt;br /&gt;
	Si le lien est &#039;[[texte]]&#039;, retourne : texte, texte.&lt;br /&gt;
	Si str ne contient pas de lien interwiki, retourne : str (et nil)&lt;br /&gt;
	Les fichiers et images ne sont pas considérés comme des liens.&lt;br /&gt;
	Si str n&#039;est pas une chaine, retourne : nil&lt;br /&gt;
]=]&lt;br /&gt;
local function texteLien( str )&lt;br /&gt;
	if type( str ) == &#039;string&#039; then&lt;br /&gt;
		for lien, texte in string.gmatch( str, &#039;%[%[ *([^%[%]|]*)|? *([^%[%]]*)%]%]&#039; ) do&lt;br /&gt;
			texte = ( texte ~= &#039;&#039; and texte ) or lien or str&lt;br /&gt;
			if not lien then&lt;br /&gt;
				return str&lt;br /&gt;
			end&lt;br /&gt;
			local testlien = string.lower( lien )&lt;br /&gt;
			local fichier = string.match( testlien, &#039;^fichier:&#039; ) &lt;br /&gt;
				or  string.match( testlien, &#039;^image:&#039; )&lt;br /&gt;
				or  string.match( testlien, &#039;^file:&#039; )&lt;br /&gt;
			if not fichier then &lt;br /&gt;
				return texte, lien&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return str&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Copie de Outils.validTextArg sans trim, pour performances avec les paramètres nommés ?&lt;br /&gt;
-- refs [[Spécial:Diff/105796198]]&lt;br /&gt;
function Commun.validTextArg( args, name, ... )&lt;br /&gt;
	local texte = args[name]&lt;br /&gt;
	if type( texte ) == &#039;string&#039; and texte ~= &#039;&#039; then&lt;br /&gt;
		return texte&lt;br /&gt;
	elseif #{ ... } &amp;gt; 0 then&lt;br /&gt;
		return Commun.validTextArg( args, ... )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Génère une abréviation discrète&lt;br /&gt;
	paramètres : &lt;br /&gt;
		1 = abréviation,&lt;br /&gt;
		2 = texte,&lt;br /&gt;
		nbsp = &#039;-&#039; pour une espace insécable avant l&#039;abréviation, &#039;+&#039; pour l&#039;avoir après.&lt;br /&gt;
]]&lt;br /&gt;
local function abr( args )&lt;br /&gt;
	return ( args.nbsp == &#039;-&#039; and &#039;&amp;amp;nbsp;&#039; or &#039;&#039; )&lt;br /&gt;
		.. &#039;&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;&#039; .. args[2] .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. args[1]&lt;br /&gt;
		.. &#039;&amp;lt;/abbr&amp;gt;&#039;&lt;br /&gt;
		.. ( args.nbsp == &#039;+&#039; and &#039;&amp;amp;nbsp;&#039; or &#039;&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Abréviation utiles&lt;br /&gt;
Commun.chap       = abr{ &#039;chap.&#039;, &#039;chapitre(s)&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.coll       = abr{ &#039;coll.&#039;, &#039;collection&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.ed         = abr{ &#039;éd.&#039;, &#039;édition&#039;, nbsp=&#039;-&#039; }&lt;br /&gt;
Commun.nbp        = abr{ &#039;p.&#039;, &#039;pages&#039;, nbsp=&#039;-&#039; }&lt;br /&gt;
Commun.numero     = abr{ &#039;n&amp;lt;sup&amp;gt;o&amp;lt;/sup&amp;gt;&#039;, &#039;numéro&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.numeros    = abr{ &#039;n&amp;lt;sup&amp;gt;os&amp;lt;/sup&amp;gt;&#039;, &#039;numéros&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.page       = abr{ &#039;p.&#039;, &#039;page&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.pages      = abr{ &#039;p.&#039;, &#039;pages&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun[&#039;page(s)&#039;] = abr{ &#039;p.&#039;, &#039;page(s)&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.plume      = &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot; title=&amp;quot;Ouvrage utilisé pour la rédaction de l\&#039;article&amp;quot;&amp;gt;\194\160[[Fichier:Icon_flatdesign_plume.svg|20px|link=|alt=Ouvrage utilisé pour la rédaction de l\&#039;article]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
Commun.premiere   = abr{ &#039;1&amp;lt;sup&amp;gt;re&amp;lt;/sup&amp;gt;&#039;, &#039;première&#039; }&lt;br /&gt;
Commun.reimpr     = abr{ &#039;réimpr.&#039;, &#039;réimpression&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.tome       = abr{ &#039;t.&#039;, &#039;tome&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
Commun.vol        = abr{ &#039;vol.&#039;, &#039;volume&#039;, nbsp=&#039;+&#039; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function Commun.detailEdition( ref )&lt;br /&gt;
	return &#039;&amp;lt;small&amp;gt;&amp;amp;#91;[[&#039; .. ref .. &#039;|détail de l’édition]]&amp;amp;#93;&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Commun.detailEditions( ref )&lt;br /&gt;
	return &#039;&amp;lt;small&amp;gt;&amp;amp;#91;[[&#039; .. ref .. &#039;|détail des éditions]]&amp;amp;#93;&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- affiche le texte en nombre romain majuscule.&lt;br /&gt;
function Commun.romain( texte )&lt;br /&gt;
    local a = &#039;&amp;lt;span class=&amp;quot;romain&amp;quot; style=&amp;quot;text-transform:uppercase&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    local b = &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    return a, texte, b&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Commun.fusionTexteLien( texte, lien, categ )&lt;br /&gt;
	local categorisation, result&lt;br /&gt;
	local message = &#039;&amp;lt;sup style=&amp;quot;color:red;&amp;quot;&amp;gt;[le lien externe a été retiré]&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
	if lien and lien ~= &#039;&#039; then&lt;br /&gt;
		if texte:match( &#039;%[%[&#039; ) then&lt;br /&gt;
			result = Commun.fusionTexteLien( texte, nil, categ )&lt;br /&gt;
		elseif lien:match( &#039;^http&#039; ) or lien:match( &#039;//&#039; ) then&lt;br /&gt;
			lien = false&lt;br /&gt;
			categorisation = true&lt;br /&gt;
			result = texte .. message&lt;br /&gt;
		else&lt;br /&gt;
			result = string.format( &#039;[[%s|%s]]&#039;, lien, texte )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		--[=[ if texte:match( &#039;//&#039; ) then&lt;br /&gt;
			result = texte:gsub( &#039;%[https?://[^%[%] ]* *([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
								:gsub( &#039;%[//[^%[%] ]* *([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
			if result ~= texte then&lt;br /&gt;
				result = result .. message&lt;br /&gt;
				categorisation = true&lt;br /&gt;
			end&lt;br /&gt;
		end ]=] -- désactivé pour le moment (peut être activé si quelqu&#039;un est prêt à corriger les erreurs)&lt;br /&gt;
	end&lt;br /&gt;
	if categorisation and type( categ ) == &#039;table&#039; then&lt;br /&gt;
		categ.lienExterne = true&lt;br /&gt;
	end&lt;br /&gt;
	return result or texte&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/span initial&lt;br /&gt;
function Commun.spanInitial( args, validArg )&lt;br /&gt;
	local id = validArg( &#039;id&#039; )&lt;br /&gt;
	local id2&lt;br /&gt;
&lt;br /&gt;
	if id then&lt;br /&gt;
		id = &#039; id=&amp;quot;&#039; .. id .. &#039;&amp;quot;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		local nom = validArg( &#039;nom1&#039;, &#039;nom&#039;, &#039;last1&#039;, &#039;last&#039;, &#039;author&#039; )&lt;br /&gt;
		local prenom = validArg( &#039;prénom1&#039;, &#039;prénom&#039;, &#039;firt1&#039;, &#039;first&#039; )&lt;br /&gt;
		local postnom = validArg( &#039;postnom1&#039;, &#039;postnom&#039; )&lt;br /&gt;
		local auteur_i = validArg( &#039;auteur1&#039;, &#039;author1&#039;, &#039;auteur&#039; )&lt;br /&gt;
		local i = 1&lt;br /&gt;
		local idTab, id2Tab = { }, { }&lt;br /&gt;
&lt;br /&gt;
		while nom or auteur_i do&lt;br /&gt;
			if auteur_i and not nom then&lt;br /&gt;
				-- tentative de séparation de l&#039;auteur en prénom nom.&lt;br /&gt;
				-- Enregistre le résultat dans args pour les COinS.&lt;br /&gt;
				auteur_i = texteLien( auteur_i )&lt;br /&gt;
				if auteur_i == &#039;&#039; then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				local a1, a2, a3 = string.match( auteur_i, &#039;^([^ ]+) *([^ ]*) *(.*)$&#039; )&lt;br /&gt;
				if a3 ~= &#039;&#039; then&lt;br /&gt;
					local a2len = mw.ustring.len( a2 )&lt;br /&gt;
					if a2len == 1 or ( a2len == 2 and mw.ustring.sub( a2, -1 ) == &amp;quot;.&amp;quot; ) then&lt;br /&gt;
						-- a1 est le prénom, a2 une initiale et a3 le nom&lt;br /&gt;
						nom = a3&lt;br /&gt;
						if i == 1 then&lt;br /&gt;
							args.nom = a3&lt;br /&gt;
							args[&#039;prénom&#039;] = a1 .. &#039; &#039; .. a2&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						-- a2 peut être le deuxième prénon ou le début du nom&lt;br /&gt;
						nom = a2 .. &#039; &#039; .. a3&lt;br /&gt;
					end&lt;br /&gt;
				elseif a2 ~= &#039;&#039; then&lt;br /&gt;
					-- a1 prénom, a2 nom&lt;br /&gt;
					nom = a2&lt;br /&gt;
					if i == 1 then&lt;br /&gt;
						args.nom = a2&lt;br /&gt;
						args[&#039;prénom&#039;] = a1&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					nom = a1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not auteur_i then&lt;br /&gt;
				if prenom and postnom then&lt;br /&gt;
					auteur_i = prenom .. &#039; &#039; .. nom .. &#039; &#039; .. postnom&lt;br /&gt;
				elseif prenom then&lt;br /&gt;
					auteur_i = prenom .. &#039; &#039; .. nom&lt;br /&gt;
				elseif postnom then&lt;br /&gt;
					auteur_i = nom .. &#039; &#039; .. postnom&lt;br /&gt;
				else&lt;br /&gt;
					auteur_i = nom&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( idTab, mw.uri.anchorEncode( nom ) )&lt;br /&gt;
			table.insert( id2Tab, mw.uri.anchorEncode( auteur_i ) )&lt;br /&gt;
&lt;br /&gt;
			if i == 4 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1&lt;br /&gt;
			nom = validArg( &#039;nom&#039; .. i, &#039;last&#039; .. i )&lt;br /&gt;
			prenom = validArg( &#039;prénom&#039; .. i, &#039;first&#039; .. i )&lt;br /&gt;
			postnom = validArg( &#039;postnom&#039; .. i)&lt;br /&gt;
			auteur_i = validArg( &#039;auteur&#039; .. i, &#039;author&#039; .. i )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #idTab &amp;lt; 4 and validArg( &#039;auteur institutionnel&#039; ) then&lt;br /&gt;
			table.insert( idTab, mw.uri.anchorEncode( validArg( &#039;auteur institutionnel&#039; ) ) )&lt;br /&gt;
			table.insert( id2Tab, idTab[#idTab] )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local annee = validArg( &#039;année&#039;, &#039;year&#039;, &#039;date&#039; )&lt;br /&gt;
		if annee then&lt;br /&gt;
			local t, d = Date.separationJourMoisAnnee( annee )&lt;br /&gt;
			if t and d.annee and annee ~= d.annee then&lt;br /&gt;
				annee = tostring( d.annee )&lt;br /&gt;
				args[&#039;année&#039;] = annee&lt;br /&gt;
				if d.mois then&lt;br /&gt;
					args.mois = validArg( &#039;mois&#039; ) or tostring( d.mois )&lt;br /&gt;
				end&lt;br /&gt;
				if d.jour then&lt;br /&gt;
					args.jour = validArg( &#039;jour&#039; ) or tostring( d.jour )&lt;br /&gt;
				end&lt;br /&gt;
			elseif mw.ustring.find( annee, &amp;quot;%a&amp;quot; ) and annee:find( &amp;quot;%f[%d]%d%d%d%d%f[%D][a-h]?&amp;quot; ) then&lt;br /&gt;
				-- le [a-h]? final est destiné à accepter les lettres ajoutées lorsqu&#039;il y a plusieurs ouvrages d&#039;un même auteur la même année (cf. [[:en:Template:Harvard citation no brackets#More than one work in a year]])&lt;br /&gt;
				annee = annee:match( &amp;quot;%f[%d]%d%d%d%d%f[%D][a-h]?&amp;quot; )&lt;br /&gt;
			end&lt;br /&gt;
			annee = mw.uri.anchorEncode( tostring( annee ) )&lt;br /&gt;
			table.insert( idTab, annee )&lt;br /&gt;
			table.insert( id2Tab, annee )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #idTab &amp;gt; 0 then&lt;br /&gt;
			id = &#039; id=&amp;quot;&#039; .. table.concat( idTab ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
			id2 = &#039; id=&amp;quot;&#039; .. table.concat( id2Tab ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
			if id2 == id then&lt;br /&gt;
				id2 = false&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			id = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local spaninitial, spanfinal&lt;br /&gt;
	if id2 then&lt;br /&gt;
		spaninitial = &#039;&amp;lt;span class=&amp;quot;ouvrage&amp;quot;&#039; .. id .. &#039;&amp;gt;&amp;lt;span class=&amp;quot;ouvrage&amp;quot;&#039; .. id2 .. &#039;&amp;gt;&#039;&lt;br /&gt;
		spanfinal = &#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		spaninitial = &#039;&amp;lt;span class=&amp;quot;ouvrage&amp;quot;&#039; .. id .. &#039;&amp;gt;&#039;&lt;br /&gt;
		spanfinal = &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return spaninitial, spanfinal&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/libellé&lt;br /&gt;
function Commun.libelle( args )&lt;br /&gt;
	local lib = args[&#039;libellé&#039;]&lt;br /&gt;
	if lib and lib ~= &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;small&amp;gt;[&#039; .. lib .. &#039;]&amp;lt;/small&amp;gt; &#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Commentaire biblio&lt;br /&gt;
function Commun.commentaire( args )&lt;br /&gt;
	if args.commentaire and args.commentaire ~= &#039;&#039; then&lt;br /&gt;
		local a = &#039;&amp;lt;div style=&amp;quot;margin-left:2em; line-height:1.5;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		local b = &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		return a, args.commentaire, b&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/indication de langue&lt;br /&gt;
function Commun.indicationDeLangue( args, validArg )&lt;br /&gt;
	local lang = validArg( &#039;langue&#039;, &#039;lang&#039;, &#039;lien langue&#039;, &#039;language&#039; )&lt;br /&gt;
	if lang then&lt;br /&gt;
		Langue = require( &#039;Module:Langue&#039; )&lt;br /&gt;
&lt;br /&gt;
		-- on essaie le code de langue complet (nécessaire pour les langues avec plusieurs mots comme &amp;quot;grec ancien&amp;quot;)&lt;br /&gt;
		local codeLangue = Langue.codeLangue2( lang )&lt;br /&gt;
&lt;br /&gt;
		if codeLangue == &#039;fr&#039; or codeLangue:sub(1, 3) == &#039;fr-&#039; then&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		elseif codeLangue ~= &#039;&#039; then&lt;br /&gt;
			return Langue.indicationMultilingue{ codeLangue }, codeLangue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- si la langue n&#039;a pas été trouvée on considère qu&#039;il y a plusieurs langues&lt;br /&gt;
		-- séparation des langues s&#039;il y en a plusieurs&lt;br /&gt;
		local listeLangue = mw.text.split( lang, &#039;[+,;:/ %.]+&#039; )&lt;br /&gt;
&lt;br /&gt;
		-- code langue principal qui sera appliqué aux titres&lt;br /&gt;
		codeLangue = Langue.codeLangue2( listeLangue[1] )&lt;br /&gt;
&lt;br /&gt;
		if codeLangue == &#039;&#039; then&lt;br /&gt;
			if type( args.categ ) == &#039;table&#039; then&lt;br /&gt;
				args.categ.langue = true&lt;br /&gt;
			end&lt;br /&gt;
			return Langue.indicationMultilingue( listeLangue )&lt;br /&gt;
		else&lt;br /&gt;
			-- calcul code de langue et catégorie&lt;br /&gt;
			local indicationLangue = Langue.indicationMultilingue( listeLangue )&lt;br /&gt;
			if type( args.categ ) == &#039;table&#039; then&lt;br /&gt;
				args.categ.langue = indicationLangue:find( &#039;???&#039;, 1, true )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if codeLangue ~= &#039;fr&#039; and codeLangue:sub(1, 3) ~= &#039;fr-&#039; then&lt;br /&gt;
				return indicationLangue, codeLangue&lt;br /&gt;
			elseif #listeLangue &amp;gt; 1 then&lt;br /&gt;
				return indicationLangue, codeLangue&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/responsabilité principale&lt;br /&gt;
function Commun.responsabilitePrincipale( args, validArg )&lt;br /&gt;
&lt;br /&gt;
	local nom = validArg( &#039;nom1&#039;, &#039;nom&#039;, &#039;last1&#039;, &#039;last&#039; )&lt;br /&gt;
	local auteur = validArg( &#039;auteur1&#039;, &#039;auteur&#039;, &#039;author1&#039;, &#039;author&#039; )&lt;br /&gt;
	local auteurInstitutionnel = validArg( &#039;auteur institutionnel&#039; )&lt;br /&gt;
	if not ( nom or auteur or auteurInstitutionnel ) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if nom or auteur then&lt;br /&gt;
		-- clarification des paramètres&lt;br /&gt;
		args[&#039;prénom1&#039;] = validArg( &#039;prénom1&#039;, &#039;prénom&#039;, &#039;first1&#039;, &#039;first&#039; )&lt;br /&gt;
		args[&#039;postnom1&#039;] = validArg( &#039;postnom1&#039;, &#039;postnom&#039; )&lt;br /&gt;
&lt;br /&gt;
		args.directeur1 = validArg( &#039;directeur1&#039;, &#039;directeur&#039; )&lt;br /&gt;
		args[&#039;lien auteur1&#039;] = validArg( &#039;lien auteur1&#039;, &#039;lien auteur&#039;, &#039;author-link&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- préparation des variables&lt;br /&gt;
	local listeResponsables = { }  -- contiendra un élément pour chaque nom&lt;br /&gt;
	local directeur = abr { &#039;dir.&#039;, &#039;directeur de publication&#039; }&lt;br /&gt;
	local prenom, postnom, dir, responsable, lien, precision, resp&lt;br /&gt;
	local i = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- boucle sur chaque nom, assemble toutes les caractéristiques et ajoute l&#039;ensemble à la liste.&lt;br /&gt;
	while nom or auteur do&lt;br /&gt;
&lt;br /&gt;
		-- nom de l&#039;auteur&lt;br /&gt;
		if not auteur then&lt;br /&gt;
			prenom = validArg( &#039;prénom&#039; .. i, &#039;first&#039; .. i )&lt;br /&gt;
			nom = &#039;&amp;lt;span class=&amp;quot;nom_auteur&amp;quot;&amp;gt;&#039; .. nom .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			postnom = validArg( &#039;postnom&#039; .. i)&lt;br /&gt;
			if prenom and postnom then&lt;br /&gt;
				auteur = prenom .. &#039; &#039; .. nom .. &#039; &#039; .. postnom&lt;br /&gt;
			elseif prenom then&lt;br /&gt;
				auteur = prenom .. &#039; &#039; .. nom&lt;br /&gt;
			elseif postnom then&lt;br /&gt;
				auteur = nom .. &#039; &#039; .. postnom&lt;br /&gt;
			else&lt;br /&gt;
				auteur = nom&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- lien sur l&#039;auteur&lt;br /&gt;
		auteur = Commun.fusionTexteLien( auteur, args[&#039;lien auteur&#039; .. i], args.categ)&lt;br /&gt;
&lt;br /&gt;
		-- définition des responsabilités&lt;br /&gt;
		dir = validArg( &#039;directeur&#039; .. i )&lt;br /&gt;
		resp = validArg( &#039;responsabilité&#039; .. i )&lt;br /&gt;
		if dir then&lt;br /&gt;
			if resp then&lt;br /&gt;
				precision = &#039; (&#039; .. directeur .. &#039; et &#039; .. resp .. &#039;)&#039;&lt;br /&gt;
			else&lt;br /&gt;
				precision = &#039; (&#039; .. directeur .. &#039;)&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif resp then&lt;br /&gt;
			precision = &#039; (&#039; .. resp .. &#039;)&#039;&lt;br /&gt;
		else&lt;br /&gt;
			precision = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table.insert( listeResponsables, auteur .. precision )&lt;br /&gt;
&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		nom = validArg( &#039;nom&#039; .. i, &#039;last&#039; .. i )&lt;br /&gt;
		auteur = validArg( &#039;auteur&#039; .. i, &#039;author&#039; .. i )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listeAuteurs&lt;br /&gt;
	local et_al = &#039;&#039;&lt;br /&gt;
	if validArg( &#039;et al.&#039;, &#039;et alii&#039; ) then&lt;br /&gt;
		et_al = &amp;quot; &#039;&#039;&amp;quot; .. abr { &amp;quot;et al.&amp;quot;, &amp;quot;et alii (et d’autres)&amp;quot; } .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
		listeAuteurs = table.concat( listeResponsables, &#039;, &#039; ) .. et_al&lt;br /&gt;
	else&lt;br /&gt;
		listeAuteurs = mw.text.listToText( listeResponsables )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if auteurInstitutionnel then&lt;br /&gt;
		if #listeResponsables &amp;gt; 0 then&lt;br /&gt;
			return listeAuteurs .. &#039;, &#039; .. auteurInstitutionnel&lt;br /&gt;
		else&lt;br /&gt;
			return auteurInstitutionnel .. et_al&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return listeAuteurs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- voir Module biblio/responsabilité secondaire&lt;br /&gt;
function Commun.responsabiliteSecondaire( args, validArg )&lt;br /&gt;
	local liste = { }&lt;br /&gt;
&lt;br /&gt;
	-- fonction qui teste l&#039;existence d&#039;un paramètre et insère dans liste une abréviation discrète suivie de ce paramètre&lt;br /&gt;
	local function insertAbr( arg, abrev, texte )&lt;br /&gt;
		if arg then&lt;br /&gt;
			table.insert( liste, abr{ abrev, texte, nbsp=&#039;+&#039; } .. arg )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- langue originale et traducteur&lt;br /&gt;
	local trad = validArg( &#039;traducteur&#039;, &#039;trad&#039;, &#039;traduction&#039; )&lt;br /&gt;
	local langueOriginale = validArg( &#039;langue originale&#039; )&lt;br /&gt;
	if langueOriginale then&lt;br /&gt;
		local Languedata = mw.loadData( &#039;Module:Langue/Data&#039; )&lt;br /&gt;
		langueOriginale = Languedata[langueOriginale] and Languedata[langueOriginale].nom&lt;br /&gt;
	end&lt;br /&gt;
	if langueOriginale then&lt;br /&gt;
		if trad then&lt;br /&gt;
			trad = &#039; par &#039; .. trad&lt;br /&gt;
		else&lt;br /&gt;
			trad = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if langueOriginale:match( &#039;^[aeiou]&#039; )&lt;br /&gt;
		or langueOriginale:match( &#039;^é&#039; ) -- regex dédiée pour cette lettre, vu qu&#039;elle est codée sur plusieurs octets&lt;br /&gt;
		or langueOriginale == &#039;hébreu&#039; then&lt;br /&gt;
			trad = &amp;quot;de l&#039;&amp;quot; .. langueOriginale .. trad&lt;br /&gt;
		else&lt;br /&gt;
			trad = &#039;du &#039; .. langueOriginale .. trad&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	insertAbr( trad, &#039;trad.&#039;, &#039;traduction&#039; )&lt;br /&gt;
&lt;br /&gt;
	-- ajout des différents responsables&lt;br /&gt;
	insertAbr( validArg( &#039;préface&#039; ), &#039;préf.&#039;, &#039;préface&#039; )&lt;br /&gt;
	if validArg( &#039;postface&#039; ) then&lt;br /&gt;
		table.insert( liste, &#039;postface &#039; .. args.postface )&lt;br /&gt;
	end&lt;br /&gt;
	insertAbr( validArg( &#039;illustrateur&#039;, &#039;illustrations&#039; ), &#039;ill.&#039;, &#039;illustrations&#039; )&lt;br /&gt;
	insertAbr( validArg( &#039;photographe&#039;, &#039;photographies&#039; ), &#039;photogr.&#039;, &#039;photographies&#039; )&lt;br /&gt;
	if validArg( &#039;champ libre&#039; ) then&lt;br /&gt;
		table.insert( liste, args[&#039;champ libre&#039;] )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- concaténation de l&#039;ensemble&lt;br /&gt;
	local texte = table.concat( liste, &#039;, &#039;)&lt;br /&gt;
	if texte ~= &#039;&#039; then&lt;br /&gt;
		return &#039; (&#039; .. texte .. &#039;)&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Affiche une date correctement formatée, sans liens.&lt;br /&gt;
-- En cas de paramètres erronés, cette fonction fait au mieux pour formater, sans générer d&#039;erreur.&lt;br /&gt;
function Commun.inscriptionDate( args )&lt;br /&gt;
	-- pour [[Modèle:Inscription date]], où args est en fait la frame du #invoke&lt;br /&gt;
	if type( args.getParent ) == &#039;function&#039; then&lt;br /&gt;
		args = args:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local annee = Commun.validTextArg( args, &#039;année&#039;, &#039;annee&#039;, &#039;year&#039; )&lt;br /&gt;
	if annee then&lt;br /&gt;
		if annee:match( &#039;^%-?%d+$&#039; ) then&lt;br /&gt;
			-- si l&#039;année est correctement renseignée, on essaye de trouver le mois&lt;br /&gt;
			local mois = Commun.validTextArg( args, &#039;mois&#039;, &#039;month&#039;, &#039;saison&#039; )&lt;br /&gt;
			mois = string.lower( mois or &#039;&#039; )&lt;br /&gt;
			local jour = Commun.validTextArg( args, &#039;jour&#039;, &#039;day&#039;, &#039;quantième&#039; )&lt;br /&gt;
			local t, jma = Date.validationJourMoisAnnee{ jour, mois, annee }&lt;br /&gt;
			if t then&lt;br /&gt;
				jma.nolinks = true&lt;br /&gt;
				return Date._modeleDate( jma )&lt;br /&gt;
			else&lt;br /&gt;
				local date = { jour }&lt;br /&gt;
				table.insert( date, mois )&lt;br /&gt;
				table.insert( date, annee )&lt;br /&gt;
				return &#039;&amp;lt;time class=&amp;quot;nowrap&amp;quot; datetime=&amp;quot;&#039; .. annee .. &#039;&amp;quot;&amp;gt;&#039; .. table.concat( date, &#039; &#039; ) .. &#039;&amp;lt;/time&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return Commun.inscriptionDate{ date = annee }&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- si annee n&#039;est pas précisé, on utilise le paramètre date&lt;br /&gt;
		local date = Commun.validTextArg( args, &#039;date&#039; )&lt;br /&gt;
		if date then&lt;br /&gt;
			date = date:lower()&lt;br /&gt;
			-- Date iso avec l&#039;heure : suppression de l&#039;heure&lt;br /&gt;
			date = date:gsub( &#039;^(%d%d%d%d%-%d%d%-%d%d)t[%d:+-]+$&#039;, &#039;%1&#039; )&lt;br /&gt;
			local t, jma = Date.separationJourMoisAnnee( date )&lt;br /&gt;
			if t then&lt;br /&gt;
				jma.nolinks = true&lt;br /&gt;
				return Date._modeleDate( jma )&lt;br /&gt;
			else&lt;br /&gt;
				-- date non reconnue, on essaye Month day, year&lt;br /&gt;
				local mois, jour, annee = mw.ustring.match( date, &#039;^([%a]+)%s*(%d%d?)[,%s]+(%d+)$&#039; )&lt;br /&gt;
				local t, jma = Date.validationJourMoisAnnee{ jour, mois, annee }&lt;br /&gt;
				if annee and t then&lt;br /&gt;
					jma.nolinks = true&lt;br /&gt;
					return Date._modeleDate( jma )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return date&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Commun.formatePagesTotales( pages )&lt;br /&gt;
	-- seulement un nombre entier&lt;br /&gt;
	-- (avec éventuellement un &amp;quot;formatnum&amp;quot; appliqué dessus)&lt;br /&gt;
	if pages:match( &#039;^%d+$&#039; )&lt;br /&gt;
	or pages:match( &#039;^%d+\194\160%d+$&#039; ) then&lt;br /&gt;
		return pages .. Commun.nbp&lt;br /&gt;
	end&lt;br /&gt;
	-- détection de « nombre - nombre »&lt;br /&gt;
	-- (double pagination, le plus souvent « nombre romain - nombre arabe »),&lt;br /&gt;
	-- avec éventuellement une abréviation sur le nombre romain&lt;br /&gt;
	local pagesTagsRemoved = pages:gsub( &#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039; )&lt;br /&gt;
	if pagesTagsRemoved:match(&#039;^[%dIVXLCDM]+ ?%- ?[%dIVXLCDM]+$&#039;) -- &amp;quot;tiret du 6&amp;quot; (noter que c&#039;est un caractère à escaper dans les regexes Lua)&lt;br /&gt;
	or pagesTagsRemoved:match(&#039;^[%dIVXLCDM]+ ?– ?[%dIVXLCDM]+$&#039;) -- tiret moyen (attention, c&#039;est un caractère sur 3 octets)&lt;br /&gt;
	or pagesTagsRemoved:match(&#039;^[%dIVXLCDM]+ et [%dIVXLCDM]+$&#039;) then -- « nombre et nombre », cas de figure quelquefois rencontré&lt;br /&gt;
		return pages .. Commun.nbp&lt;br /&gt;
	end&lt;br /&gt;
	-- détection d&#039;un suffixe « p. » déjà présent,&lt;br /&gt;
	-- que l&#039;on remplace alors par la version wikifiée (espace insécable, balise d&#039;abréviation)&lt;br /&gt;
	local pages2 = pages&lt;br /&gt;
		:gsub( &#039; p%.$&#039;, &#039;&#039; )&lt;br /&gt;
		:gsub( &#039;\194\160p%.$&#039;, &#039;&#039; )&lt;br /&gt;
		:gsub( &#039;&amp;amp;nbsp;p%.$&#039;, &#039;&#039; )&lt;br /&gt;
		:gsub( &#039;&amp;amp;#160;p%.$&#039;, &#039;&#039; )&lt;br /&gt;
	if pages2 ~= pages then&lt;br /&gt;
		return pages2 .. Commun.nbp&lt;br /&gt;
	end&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ajoute l&#039;abréviation « p. » la plus précise possible devant le passage,&lt;br /&gt;
-- si un numéro de page ou un intervalle de pages est détecté&lt;br /&gt;
function Commun.formatePassage( passage )&lt;br /&gt;
	local test = passage:gsub( &#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039; ) -- on retire les balises (notamment &amp;lt;abbr&amp;gt;) pour les tests&lt;br /&gt;
	if test:match( &#039;^[%dIVXLCDM]+$&#039; ) then -- uniquement des chiffres (arabes ou romains)&lt;br /&gt;
		return Commun.page .. passage&lt;br /&gt;
	elseif test:match( &#039;^%d+ ?%- ?%d+$&#039; ) -- &amp;quot;tiret du 6&amp;quot; (noter que c&#039;est un caractère à escaper dans les regexes Lua)&lt;br /&gt;
	or test:match( &#039;^%d+ ?– ?%d+$&#039; ) -- tiret moyen (attention, c&#039;est un caractère sur 3 octets)&lt;br /&gt;
	or test:match( &#039;^[IVXLCDM]+ ?%- ?[IVXLCDM]+$&#039; ) -- même chose avec les nombres romains&lt;br /&gt;
	or test:match( &#039;^[IVXLCDM]+ ?– ?[IVXLCDM]+$&#039; ) then&lt;br /&gt;
		return Commun.pages .. passage&lt;br /&gt;
	elseif test:match( &#039;^%d&#039; ) -- commence par un chiffre arabe&lt;br /&gt;
	or test:match( &#039;^[IVXLCDM]+[ ,%-]&#039; ) -- nombre romain suivi d&#039;un caractère de séparation, pour s&#039;assurer que c&#039;est un nombre romain et pas le début d&#039;un nom&lt;br /&gt;
	or test:match( &#039;^[IVXLCDM]+–&#039; ) then -- regex dédiée pour le tiret moyen, vu qu&#039;il est codé sur 3 octets&lt;br /&gt;
		return Commun[&#039;page(s)&#039;] .. passage&lt;br /&gt;
	else&lt;br /&gt;
		return passage&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- retire tous les liens internes, externes et balises html pour ne garder que le texte brut.&lt;br /&gt;
local function nettoyageTexte( texte )&lt;br /&gt;
	if type( texte ) == &#039;string&#039;  then&lt;br /&gt;
		if texte:match( &#039;[%[&amp;lt;]&#039; ) then&lt;br /&gt;
			local function texteDuLien( l, t )&lt;br /&gt;
				return ( t ~= &#039;&#039; and t ) or l&lt;br /&gt;
			end&lt;br /&gt;
			-- nettoyage des liens internes&lt;br /&gt;
			texte = texte:gsub( &#039;%[%[([^%[%]|]*)|?([^%[%]]*)%]%]&#039;, texteDuLien )&lt;br /&gt;
			-- nettoyage des liens externes&lt;br /&gt;
				:gsub( &#039;%[https?://[^%[%] ]* *([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
				:gsub( &#039;%[//[^%[%] ]* *([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
			-- nettoyage des balises html&lt;br /&gt;
				:gsub( &#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		return texte&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:COinS bibliographique&lt;br /&gt;
-- NISO Z39.88&lt;br /&gt;
-- http://www.openurl.info/registry&lt;br /&gt;
function Commun.COinS( args, validArg, genre )&lt;br /&gt;
	local liste = { }&lt;br /&gt;
&lt;br /&gt;
	-- insertlist ajoute à la table &#039;liste&#039; un couple &#039;nom Coins normalisé&#039; - &#039;donnée&#039;&lt;br /&gt;
	-- Si istexte = true, le deuxième élément de tab est considéré comme du texte,&lt;br /&gt;
	-- sinon comme le nom d&#039;un paramètre.&lt;br /&gt;
	local function insertList( key, value, prefix )&lt;br /&gt;
		prefix = prefix or &#039;&#039;&lt;br /&gt;
		if type( value ) == &#039;string&#039; and value ~= &#039;&#039; then&lt;br /&gt;
			liste[#liste + 1] = key .. &#039;=&#039; .. mw.uri.encode( prefix .. value )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- norme du COinS&lt;br /&gt;
	insertList( &#039;ctx_ver&#039;, &#039;Z39.88-2004&#039; )&lt;br /&gt;
&lt;br /&gt;
	-- genre, titre et sous-titre&lt;br /&gt;
	if genre == &#039;article&#039; then&lt;br /&gt;
		insertList( &#039;rft_val_fmt&#039;, &#039;info:ofi/fmt:kev:mtx:journal&#039; )&lt;br /&gt;
		insertList( &#039;rft.genre&#039;, &#039;article&#039; )&lt;br /&gt;
		insertList( &#039;rft.atitle&#039;, nettoyageTexte( args.titre ) )&lt;br /&gt;
		insertList( &#039;rft.jtitle&#039;, nettoyageTexte( validArg( &#039;périodique&#039;, &#039;revue&#039;, &#039;journal&#039; ) ) )&lt;br /&gt;
		insertList( &#039;rft.issue&#039;, validArg( &#039;numéro&#039;, &#039;no&#039;, &#039;issue&#039; ) )&lt;br /&gt;
	else&lt;br /&gt;
		-- genre = ouvrage ou chaitre&lt;br /&gt;
		insertList( &#039;rft_val_fmt&#039;,&#039;info:ofi/fmt:kev:mtx:book&#039; )&lt;br /&gt;
		if genre == &#039;chapitre&#039; then&lt;br /&gt;
			insertList( &#039;rft.genre&#039;, &#039;bookitem&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			insertList( &#039;rft.genre&#039;, &#039;book&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		insertList( &#039;rft.btitle&#039;, nettoyageTexte( args.titre ) )&lt;br /&gt;
		insertList( &#039;rft.atitle&#039;, nettoyageTexte( validArg( &#039;titre chapitre&#039;, &#039;titreChap&#039; ) ) )&lt;br /&gt;
&lt;br /&gt;
		-- donnée sur l&#039;éditeur&lt;br /&gt;
		insertList( &#039;rft.place&#039;, texteLien( validArg( &#039;lieu&#039;, &#039;location&#039; ) ), nil )&lt;br /&gt;
		insertList( &#039;rft.pub&#039;, texteLien( validArg( &#039;éditeur&#039;, &#039;édition&#039; ) ), nil )&lt;br /&gt;
		insertList( &#039;rft.edition&#039;, texteLien( validArg( &amp;quot;numéro d&#039;édition&amp;quot;, &amp;quot;numéro édition&amp;quot; ) ), nil )&lt;br /&gt;
	end&lt;br /&gt;
	insertList( &#039;rft.stitle&#039;, args[&#039;sous-titre&#039;] )&lt;br /&gt;
&lt;br /&gt;
	-- Premier auteur, séparé en noms et prénoms&lt;br /&gt;
	local nom = texteLien( validArg( &#039;nom1&#039;, &#039;nom&#039;, &#039;last1&#039;, &#039;last&#039; ) )&lt;br /&gt;
	if nom then&lt;br /&gt;
		insertList( &#039;rft.aulast&#039;, nom )&lt;br /&gt;
		insertList( &#039;rft.aufirst&#039;, validArg( &#039;prénom1&#039;, &#039;prénom&#039;, &#039;first1&#039;, &#039;first&#039; ) )&lt;br /&gt;
		insertList( &#039;rtf.ausuffix &#039;, validArg( &#039;postnom1&#039;, &#039;postnom&#039; ) )&lt;br /&gt;
	else&lt;br /&gt;
		local auteur = texteLien( validArg( &#039;auteur&#039;, &#039;auteur1&#039; ) )&lt;br /&gt;
		if auteur then&lt;br /&gt;
			insertList( &#039;rft.au&#039;, auteur )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- les autres auteurs, la norme ne prévoit pas de séparation&lt;br /&gt;
	for i = 2, 20 do&lt;br /&gt;
		local nom_i = texteLien( validArg( &#039;nom&#039; .. i ) )&lt;br /&gt;
		if nom_i then&lt;br /&gt;
			local prenom_i = validArg( &#039;prénom&#039; .. i )&lt;br /&gt;
			local postnom_i = validArg( &#039;postnom&#039; .. i)&lt;br /&gt;
			if prenom_i and postnom_i then&lt;br /&gt;
				insertList( &#039;rft.au&#039;, nom_i .. &#039; &#039; .. postnom_i .. &#039;, &#039; .. prenom_i )&lt;br /&gt;
			elseif prenom_i then&lt;br /&gt;
				insertList( &#039;rft.au&#039;, nom_i .. &#039;, &#039; .. prenom_i )&lt;br /&gt;
			elseif postnom_i then&lt;br /&gt;
				insertList( &#039;rft.au&#039;, nom_i .. &#039; &#039; .. postnom_i )&lt;br /&gt;
			else&lt;br /&gt;
				insertList( &#039;rft.au&#039;, nom_i )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local auteur_i = texteLien( validArg( &#039;auteur&#039; .. i ) )&lt;br /&gt;
			if auteur_i then&lt;br /&gt;
				insertList( &#039;rft.au&#039;, auteur_i )&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if validArg( &#039;auteur institutionnel&#039; ) then&lt;br /&gt;
		insertList( &#039;rft.aucorp&#039;, args[&#039;auteur institutionnel&#039;] )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- date&lt;br /&gt;
	local datePub = Date.dateISO( args )&lt;br /&gt;
	if datePub then&lt;br /&gt;
		insertList( &#039;rft.date&#039;, datePub )&lt;br /&gt;
	else&lt;br /&gt;
		insertList( &#039;rft.date&#039;, args.date )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- doonées physique de la publication&lt;br /&gt;
	insertList( &#039;rft.volume&#039;, validArg( &#039;volume&#039;, &#039;vol&#039; ) )&lt;br /&gt;
	insertList( &#039;rft.pages&#039;, validArg( &#039;passage&#039;, &#039;page&#039; ) )&lt;br /&gt;
	insertList( &#039;rft.spage&#039;, args[&#039;page début chapitre&#039;] )&lt;br /&gt;
	insertList( &#039;rft.tpages&#039;, args[&#039;pages totales&#039;] )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- références internationales&lt;br /&gt;
	insertList( &#039;rft.isbn&#039;, args.isbn )&lt;br /&gt;
	insertList( &#039;rft.issn&#039;, args.issn )&lt;br /&gt;
	insertList( &#039;rft_id&#039;, args.doi, &#039;info:doi/&#039; )&lt;br /&gt;
	insertList( &#039;rft_id&#039;, args.pmid, &#039;info:pmid/&#039; )&lt;br /&gt;
	insertList( &#039;rft_id&#039;, args.oclc, &#039;info:oclcnum/&#039; )&lt;br /&gt;
	insertList( &#039;rft_id&#039;, args.url )&lt;br /&gt;
&lt;br /&gt;
	-- referer : page Wikipedia ou se trouve cette référence&lt;br /&gt;
	insertList( &#039;rfr_id&#039;, &#039;fr.wikipedia.org:&#039; .. mw.title.getCurrentTitle().fullText, &#039;info:sid/&#039; )&lt;br /&gt;
&lt;br /&gt;
	local contextObject = table.concat( liste, &#039;&amp;amp;&#039; )&lt;br /&gt;
&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;Z3988&amp;quot; title=&amp;quot;&#039; .. contextObject .. &#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return Commun&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Site_officiel&amp;diff=318</id>
		<title>Module:Site officiel</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Site_officiel&amp;diff=318"/>
		<updated>2024-09-20T14:10:55Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local Lien = { }  local Verif = require &amp;quot;Module:Correction syntaxique&amp;quot; local defaultLang = &amp;#039;fr&amp;#039;  local function caterreur(param) 	if mw.title.getCurrentTitle().namespace == 0 then 		return &amp;#039;&amp;#039; .. string.upper(param or &amp;#039;?&amp;#039;) .. &amp;#039;&amp;#039; 	else 		return &amp;#039;&amp;#039; 	end end  function Lien.siteOfficiel( frame ) 	local templateargs = frame:getParent().args 	local args = {} 	for k, v in pairs(templateargs) do 		if type(... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Lien = { }&lt;br /&gt;
&lt;br /&gt;
local Verif = require &amp;quot;Module:Correction syntaxique&amp;quot;&lt;br /&gt;
local defaultLang = &#039;fr&#039;&lt;br /&gt;
&lt;br /&gt;
local function caterreur(param)&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		return &#039;[[Catégorie:Page du modèle Site officiel comportant une erreur|&#039; .. string.upper(param or &#039;?&#039;) .. &#039;]]&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Lien.siteOfficiel( frame )&lt;br /&gt;
	local templateargs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(templateargs) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then&lt;br /&gt;
			v = mw.text.trim(v)&lt;br /&gt;
		end&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local nocaturl = args.nocaturl&lt;br /&gt;
&lt;br /&gt;
	local erreurs = &#039;&#039; -- les messages d&#039;erreurs sont ajoutés ici&lt;br /&gt;
&lt;br /&gt;
	local erreursarguments = Verif.verif(args, {&#039;titre&#039;, &#039;title&#039;, 1, 2, &#039;langue&#039;, &#039;lang&#039;, &#039;url&#039;, &#039;wikidata&#039;, &#039;entity&#039;, &#039;id&#039;, &#039;nocaturl&#039;}, &#039;Modèle Site officiel avec un paramètre inconnu‎&#039;)&lt;br /&gt;
	if erreursarguments then&lt;br /&gt;
		erreurs = erreurs .. erreursarguments&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titredefaut = &#039;Site officiel&#039;&lt;br /&gt;
	local titre = args[&#039;titre&#039;] or args[&#039;title&#039;] or titredefaut&lt;br /&gt;
	local langue = args[&#039;langue&#039;] or args[&#039;lang&#039;]&lt;br /&gt;
	local url = args[&#039;url&#039;] or args[2] or args[1]&lt;br /&gt;
&lt;br /&gt;
	if (not langue) and (args[2]) then&lt;br /&gt;
		langue = args[1]&lt;br /&gt;
	end&lt;br /&gt;
	local id = args.id or args.entity or args.wikidata&lt;br /&gt;
	if url and url:sub(1, 1) == &#039;Q&#039; then&lt;br /&gt;
		id = url&lt;br /&gt;
		url = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- si pas d&#039;URL, essayer Wikidata, et si ça marche, sortir de ce module&lt;br /&gt;
	if not url and (id ~= &#039;-&#039;) then&lt;br /&gt;
		local Wikidata = require &amp;quot;Module:Wikidata&amp;quot;&lt;br /&gt;
		local isinlang = defaultLang&lt;br /&gt;
		local links = Wikidata.getClaims{entity = id, property = &#039;P856&#039;, excludespecial = true, isinlang = isinlang}&lt;br /&gt;
		if not links then&lt;br /&gt;
			links = Wikidata.getClaims{entity = id, property = &#039;P856&#039;, excludespecial = true}&lt;br /&gt;
			isinlang = null&lt;br /&gt;
		end&lt;br /&gt;
		local Weblink = require &#039;Module:Weblink&#039;&lt;br /&gt;
		local statementformat = function(statement, args)&lt;br /&gt;
			if statement.mainsnak.snaktype == &#039;value&#039; then&lt;br /&gt;
				local value = statement.mainsnak.datavalue.value&lt;br /&gt;
				local title = Wikidata.getFormattedQualifiers(statement, {&#039;P1476&#039;}, {isinlang = &#039;fr&#039;})&lt;br /&gt;
				if not title then&lt;br /&gt;
					title = Wikidata.getFormattedQualifiers(statement, {&#039;P1476&#039;})&lt;br /&gt;
				end&lt;br /&gt;
				if not title then&lt;br /&gt;
					title = args.text&lt;br /&gt;
				end&lt;br /&gt;
				return Weblink.makelink(value, title)&lt;br /&gt;
			else&lt;br /&gt;
				return Wikidata.formatSnak( statement.mainsnak, args )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if links and (#links &amp;gt; 1) then&lt;br /&gt;
			return &#039;&amp;lt;cite class=&amp;quot;ouvrage&amp;quot; id=&amp;quot;site_officiel&amp;quot; style=&amp;quot;font-style: normal;&amp;quot;&amp;gt;&#039; .. &amp;quot;Sites officiels : &amp;quot; .. Wikidata.formatAndCat{claims = links, property = &#039;P856&#039;, displayformat = &#039;weblink&#039;, showlang = true, excludespecial = true, isinlang = isinlang, statementformat = statementformat} .. &#039;&amp;lt;/cite&amp;gt;&#039; .. erreurs&lt;br /&gt;
		elseif links then&lt;br /&gt;
			if not (titre == titredefaut) then&lt;br /&gt;
				statementformat = nil&lt;br /&gt;
			end&lt;br /&gt;
			return &#039;&amp;lt;cite class=&amp;quot;ouvrage&amp;quot; id=&amp;quot;site_officiel&amp;quot; style=&amp;quot;font-style: normal;&amp;quot;&amp;gt;&#039; .. Wikidata.formatAndCat{claims = links, property = &#039;P856&#039;, displayformat = &#039;weblink&#039;, showlang = true, text = titre, isinlang = isinlang, statementformat = statementformat} .. &#039;&amp;lt;/cite&amp;gt;&#039; .. erreurs&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- si toujours pas, ajouter les catégories d&#039;erreur et sortir&lt;br /&gt;
	if not url then&lt;br /&gt;
		if not nocaturl then&lt;br /&gt;
			erreurs = erreurs .. caterreur(&#039;url&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		return erreurs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- nettoyage de l&#039;URL&lt;br /&gt;
	url = url:gsub( &#039;%[&#039;, &#039;%%5B&#039; ):gsub( &#039;%]&#039;, &#039;%%5D&#039; )&lt;br /&gt;
	if not ( url:match( &#039;^http&#039; ) or url:match( &#039;^//&#039; ) ) then&lt;br /&gt;
			url = &#039;http://&#039; .. url&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- formatage de la langue&lt;br /&gt;
	local indicLangue = &#039;&#039;  -- langue telle qu&#039;affichée dans le rendu final&lt;br /&gt;
	if langue then&lt;br /&gt;
		if langue ~= &#039;fr&#039; then&lt;br /&gt;
			local Langue = require &amp;quot;Module:Langue&amp;quot;&lt;br /&gt;
			indicLangue = Langue.indicationMultilingue{ langue } .. &#039; &#039;&lt;br /&gt;
			if indicLangue:find(&#039;class=&amp;quot;error&amp;quot;&#039;, nil, true) then&lt;br /&gt;
				erreurs = erreurs .. caterreur(&#039;langue&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &#039;&amp;lt;cite class=&amp;quot;ouvrage&amp;quot; id=&amp;quot;site_officiel&amp;quot; style=&amp;quot;font-style: normal;&amp;quot;&amp;gt;&#039; .. indicLangue .. &#039;[&#039; .. url .. &#039; &#039; .. titre .. &#039;]&#039; .. &#039;&amp;lt;/cite&amp;gt;&#039; .. erreurs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Lien&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Graph_production&amp;diff=317</id>
		<title>Module:Graph production</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Graph_production&amp;diff=317"/>
		<updated>2024-09-20T14:10:00Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local p = {} local defaultproperty = &amp;#039;P1092&amp;#039; -- propriété &amp;quot;quantité produite&amp;quot;  local json = { 	version = 2, 	width = 600, height = 300, 	data = { 		{ 			name = &amp;quot;table&amp;quot;, 			values = {} 		} 	}, 	scales = { 		{ 			name = &amp;quot;x&amp;quot;, 			type = &amp;quot;ordinal&amp;quot;, 			range = &amp;quot;width&amp;quot;, 			domain = { data = &amp;quot;table&amp;quot;, field= &amp;quot;x&amp;quot; } 		}, 		{ 			name = &amp;quot;y&amp;quot;, 			range = &amp;quot;height&amp;quot;, 			nice = true, 			domain = { data = &amp;quot;table&amp;quot;, field = &amp;quot;y&amp;quot; }... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
local defaultproperty = &#039;P1092&#039; -- propriété &amp;quot;quantité produite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local json = {&lt;br /&gt;
	version = 2,&lt;br /&gt;
	width = 600, height = 300,&lt;br /&gt;
	data = {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;table&amp;quot;,&lt;br /&gt;
			values = {}&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	scales = {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;x&amp;quot;,&lt;br /&gt;
			type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
			range = &amp;quot;width&amp;quot;,&lt;br /&gt;
			domain = { data = &amp;quot;table&amp;quot;, field= &amp;quot;x&amp;quot; }&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;y&amp;quot;,&lt;br /&gt;
			range = &amp;quot;height&amp;quot;,&lt;br /&gt;
			nice = true,&lt;br /&gt;
			domain = { data = &amp;quot;table&amp;quot;, field = &amp;quot;y&amp;quot; }&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	axes = {&lt;br /&gt;
		{ type = &amp;quot;x&amp;quot;, scale = &amp;quot;x&amp;quot; },&lt;br /&gt;
		{ type = &amp;quot;y&amp;quot;, scale = &amp;quot;y&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	marks = {&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;rect&amp;quot;,&lt;br /&gt;
			from = { data = &amp;quot;table&amp;quot; },&lt;br /&gt;
			properties = {&lt;br /&gt;
				enter = {&lt;br /&gt;
					x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
					width = { scale = &amp;quot;x&amp;quot;, band = true, offset = -1},&lt;br /&gt;
					y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; },&lt;br /&gt;
					y2 = { scale = &amp;quot;y&amp;quot;, value = 0 }&lt;br /&gt;
				},&lt;br /&gt;
				update = {&lt;br /&gt;
					fill = { value = &amp;quot;steelblue&amp;quot; }&lt;br /&gt;
				},&lt;br /&gt;
				hover = {&lt;br /&gt;
					fill = { value = &amp;quot;red&amp;quot; }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;text&amp;quot;,&lt;br /&gt;
			from = { data = &amp;quot;table&amp;quot; },&lt;br /&gt;
			properties = {&lt;br /&gt;
				enter = {&lt;br /&gt;
					x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
					dx = { scale = &amp;quot;x&amp;quot;, band = true, mult = 0.5 },&lt;br /&gt;
					y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; },&lt;br /&gt;
					fill = { value = &amp;quot;#000&amp;quot; },&lt;br /&gt;
					align = { value = &amp;quot;center&amp;quot; },&lt;br /&gt;
					baseline = { value = &amp;quot;top&amp;quot; },&lt;br /&gt;
					dy = { value = -13 },&lt;br /&gt;
					text = { field = &amp;quot;y&amp;quot; }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function getStatements(id, property)&lt;br /&gt;
	local entity = mw.wikibase.getEntity(id)&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not entity.claims or not entity.claims[property] then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local statements = entity.claims[property]&lt;br /&gt;
	return statements&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function prepareStatements(statements)&lt;br /&gt;
	local numbers_raw = {}&lt;br /&gt;
	local function processStatement(i, statement)&lt;br /&gt;
		local snak = statement.mainsnak&lt;br /&gt;
		if not snak or snak.snaktype ~= &#039;value&#039; then&lt;br /&gt;
			statements[i] = nil&lt;br /&gt;
			return;&lt;br /&gt;
		end&lt;br /&gt;
		local n = tonumber(snak.datavalue.value.amount)&lt;br /&gt;
		local d = nil&lt;br /&gt;
		if statement.qualifiers and statement.qualifiers.P585 then  -- dátum&lt;br /&gt;
			d = require(&#039;Module:Time&#039;).newFromWikidataValue(statement.qualifiers.P585[1].datavalue.value)&lt;br /&gt;
		end&lt;br /&gt;
		if d and d.year then&lt;br /&gt;
			statements[i] = { d.year, n }&lt;br /&gt;
			numbers_raw[d.year] = n&lt;br /&gt;
			return;&lt;br /&gt;
		else&lt;br /&gt;
			statements[i] = nil&lt;br /&gt;
			return;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for n, statement in pairs(statements) do&lt;br /&gt;
		processStatement(n, statement)&lt;br /&gt;
	end&lt;br /&gt;
	local dates = {}&lt;br /&gt;
	for d, v in pairs(statements) do&lt;br /&gt;
		table.insert(dates, v[1])&lt;br /&gt;
	end&lt;br /&gt;
	if #dates &amp;lt; 1 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(dates)&lt;br /&gt;
	local numbers = {}&lt;br /&gt;
	if #dates &amp;lt;= 20 then&lt;br /&gt;
		for _, v in ipairs(dates) do&lt;br /&gt;
			table.insert(numbers, { tostring(v), numbers_raw[v] } )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local n = #dates - 1&lt;br /&gt;
		for i = 0, 9 do&lt;br /&gt;
			local j = math.floor(i * n / 9 + 0.5) + 1&lt;br /&gt;
			local year = dates[j]&lt;br /&gt;
			table.insert(numbers, {tostring(year), numbers_raw[year]})&lt;br /&gt;
		end&lt;br /&gt;
		if numbers_raw[dates[n + 1]] &amp;gt;= 1000000 then&lt;br /&gt;
			json.marks[2].properties.enter.angle = { value = -45 }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return numbers&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function drawGraph(data, float)&lt;br /&gt;
	for _, v in pairs(data) do&lt;br /&gt;
		local d, n = v[1], v[2]&lt;br /&gt;
		table.insert(json.data[1].values, { x = d, y = n })&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
		:css(&amp;quot;display&amp;quot;, &amp;quot;inline-block&amp;quot;)  -- style hotfix&lt;br /&gt;
		:css(&amp;quot;float&amp;quot;, float) -- optional&lt;br /&gt;
		:wikitext(mw.getCurrentFrame():extensionTag(&amp;quot;graph&amp;quot;, mw.text.jsonEncode(json)))&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	if type(frame) ~= &#039;table&#039; then&lt;br /&gt;
		args = { id = frame }&lt;br /&gt;
	else&lt;br /&gt;
		args = getArgs(frame)&lt;br /&gt;
	end&lt;br /&gt;
	local property = args[&amp;quot;propriété&amp;quot;] or args.property or defaultproperty&lt;br /&gt;
	local statements = getStatements(args.id, property)&lt;br /&gt;
	if type(statements) ~= &#039;table&#039; then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	statements = prepareStatements(statements)&lt;br /&gt;
	if type(statements) ~= &#039;table&#039; then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return drawGraph(statements, args.float)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Autorit%C3%A9&amp;diff=316</id>
		<title>Modèle:Autorité</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Autorit%C3%A9&amp;diff=316"/>
		<updated>2024-09-20T14:09:37Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;includeonly&amp;gt;{{#invoke:Autorité|authorityControl}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{Documentation}} &amp;lt;/noinclude&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Autorité|authorityControl}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Graph_production&amp;diff=315</id>
		<title>Modèle:Graph production</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Mod%C3%A8le:Graph_production&amp;diff=315"/>
		<updated>2024-09-20T14:09:03Z</updated>

		<summary type="html">&lt;p&gt;Jaggerwock : Page créée avec « &amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;{{#invoke:Graph production|main}} »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;{{#invoke:Graph production|main}}&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
</feed>