« Module:régions génitif » : différence entre les versions
Contenu supprimé Contenu ajouté
m Darkdadaah a déplacé la page Module:régions vers Module:régions génitif sans laisser de redirection : Expérimental et spécialisé, renommage pour laisser la place |
mAucun résumé des modifications |
||
Ligne 11 : | Ligne 11 : | ||
-- Récupère la table des régions entière (en cache) |
-- Récupère la table des régions entière (en cache) |
||
local regions = mw.loadData('Module:régions/data') |
local regions = mw.loadData('Module:régions génitif/data') |
||
-- Resolution des alias |
-- Resolution des alias |
Dernière version du 17 mars 2020 à 16:26
Page de test: Module:régions génitif/testcases
b = require('Module:bases')
local p = {}
function p.get_genitif(nom)
-- Pas de nom de région ? Renvoie nil.
if (nom == nil) then return nil end
-- Espaces avant et après enlevés
nom = mw.text.trim(nom)
-- Récupère la table des régions entière (en cache)
local regions = mw.loadData('Module:régions génitif/data')
-- Resolution des alias
if regions['alias'][nom] ~= nil then
nom = regions['alias'][nom]
end
-- A-t-on la région correspondant au code donné ?
region_data = regions['régions'][nom] or {}
return p.make_genitif(nom, region_data)
end
function p.make_genitif(nom, data)
genre = data['genre'] or 'm'
nombre = data['pluriel'] and 'p' or 's'
topo = data['type'] or ''
-- Doit-on mettre un article?
-- Oui par défaut sauf pour les pays
article = false
if topo == 'pays' then
article = true
end
if data['article'] ~= nil then
article = data['article']
end
if nombre == 'p' then
return "des " .. nom
elseif not article then
if b.is_elidable(nom) then
return "d’" .. nom
else
return "de " .. nom
end
elseif b.is_elidable(nom) then
return "de l’" .. nom
elseif genre == 'f' then
return "de la " .. nom
else
return "du " .. nom
end
end
function p.genitif(frame)
local args
if frame.args ~= nil and frame.args[1] ~= nil then
args = frame.args
else
args = frame:getParent().args
end
local code = args[1]
return p.get_genitif(code)
end
return p