« Module:régions génitif » : différence entre les versions

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
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