Module:régions génitif
Apparence
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