Module:Adresse
Apparence
[voir] [modifier] [historique] [purger]
Ce module permet l'extraction d'une adresse depuis Wikidata et sa mise en forme.
Utilisation
Fonctions exportables
streetAddress(item, area)
– Met en forme l'adresse partielle avec le numéro de rue et la rue ;adminDivList(item, country)
– Retourne la liste des subdivisions territoriales (commune, départements, cantons,… ) du pays en paramètre selon les données entrées dans Module:Adresse/Formats ;cityLine(item, country, divlist, postcode)
– Met en forme l'adresse partielle avec le nom de la ville, les noms des subdivisions territoriales et le code postal ;fullAddress(item, country, divs, streetstr, divstr, showcountry, postcode)
– Met en forme l'adresse complète contenant numéro de rue, nom de rue, nom de la ville, noms des subdivisions territoriales, code postal et nom du pays et ajoute la catégorie Catégorie:Page utilisant une adresse fournie par Wikidata ;wikidataAddress(item, country)
– Reprend l'adresse de rue issue de streetAddress et y ajoute la catégorieCatégorie:Page utilisant une adresse fournie par Wikidata
.
Modules externes et autres éléments dont ce module a besoin pour fonctionner
mw.ustring.gsub
– Remplace toutes les occurrences d'un motif dans une chaîne de caractères par une chaîne de remplacement ;mw.text.listToText
– Joint les éléments d'une liste pour former une chaîne de caractères ;mw.text.trim
– Enlève les espaces et autres caractères au début et à la fin d'une chaine de caractères ;Module:Wikidata
– Module contenant des fonctions de récupération des données depuis Wikidata ;Module:Linguistique
– Module contenant des fonctions de mise en forme et d'analyse basique d'une chaîne de caractères ;Module:Country data
– Module de mise en forme des noms de lieux et des nationalités.
Module en sous-page
Module:Adresse/Formats
– Table contenant les paramètres de mise en forme de l'adresse selon le pays.
Modules lua utilisant ce module
- Module:Infobox/Fonctions/Bâtiment ;
- Module:Infobox/Fonctions/Centrale électrique ;
- Module:Infobox/Abbaye ;
- Module:Infobox/Centre commercial ;
- Module:Infobox/Centre de congrès ;
- Module:Infobox/Gratte-ciel ;
- Module:Infobox/Stade ;
- Module:Infobox/Temple bouddhiste.
Modèles appelant directement ce module
Aucun
Exemples
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
local wikidata =require('Module:Wikidata')
local function formatStreet(streetname, housenumber, area) -- à faire
local numberafter = 'DEU AUT' --pays dans lesquels le numéro de rue est avant le num
if area and string.find(numberafter, area .. ' ') then
return streetname .. ' ' .. housenumber
else
return housenumber .. ' ' .. streetname
end
end
function p.formatAddress(streets, postcode, city, formattingarea)
-- streets est une table de {streetname, number, }
-- formatting area est le lieu, normalement plus large que "city" qui détermine le formatage de la rue et du code postal
local streetstring = ''
for i, j in pairs(streets) do
if j.number then
j = formatStreet(j.name, j.number)
else
j = j.name
end
streetstring = streetstring .. j .. '<br />'
end
if (not postcode) and (not area) then
return streetstring
end
return streetstring .. (postcode or '') .. ' ' .. (area or '')
end
local function numberFromClaim(claim)
if not claim.qualifiers or not claim.qualifiers.P670 then
return nil
end
local vals = {}
for i, j in pairs(claim.qualifiers.P670) do
table.insert(vals, wikidata.formatSnak(j))
end
return table.concat(vals)
end
local function streetFromClaims(claim)
if not claim.mainsnak.snaktype == 'value' then
return nil
end
return wikidata.formatSnak(claim.mainsnak)
end
function p.wikidataAddress(item)
-- en priorité la propriété P669, datatype: item
local streetclaims = wikidata.getClaims{item=item, property = 'P669'}
-- sinon, p969: datatype: string
if not streetclaims then
streetclaims = wikidata.getClaims{item=item, property = 'P669'}
end
local streets = {}
if streetclaims then
for i, j in pairs(streetclaims) do
local streetname = streetFromClaims(j)
if streetname then
local number = numberFromClaim(j)
table.insert(streets, {name = streetname, number = number })
end
end
end
local postcode = wikidata.getClaims{item=item, property= 'P281'}
if postcode and #postcode > 1 then -- s'il y a plusieurs codes postaux, il y a sans doute plusieurs adresses différentes, c'est difficile de savoir lequel correspond à laquelle
postcode = nil
elseif postcode then
postcode = wikidata.formatSnak(postcode[1].mainsnak)
end
-- faaut-il essayer d'ajouter la ville par P131 ? Souvent on en veut pas (par exemple en infobox)
return p.formatAddress(streets, postcode)
end
return p