Module:partes orationis

E Victionario
Jump to navigation Jump to search

Usus[+/-]

Usurpatur in “Module:sectio


-- Copy of the [[:fr:Module:types de words]]
-- 2016-08-04 — Modified and extended by Usor:YaganZ
-- Modified and maintained by: Usor:DenisWasRight

-- Page de test : Utilisateur:Darkdadaah/Test:Sections
b = require('Module:basis')

local p = {}

-- Charge la table une fois pour toutes pour ce module
p.types = mw.loadData('Module:partes orationis/data')

-- S'agit-il d'un type de mot reconnu (ou d'un alias) ?
function p.is_type(name)
    if name == nil then return nil end
    
    name = b.lcfirst(name)
    
    if (p.types['alias'][name] or p.types['text'][name]) then
        return true
    else
        return false
    end
end

-- S'agit-il d'un alias?
function p.is_alias(name)
    if name == nil then return nil end
    
    name = b.lcfirst(name)
    
    if (p.types['alias'][nameb]) then
        return true
    else
        return false
    end
end

-- Crée un nom de flexion selon que le nom commence par une voyelle ou pas
function flexion_de(name, plural)
    local flexname = ''
    
    -- Forme: pluriel ou singulier
    local form = 'forma'
    if (plural) then form = 'Formae' end
    
    if b.is_elidable(name) then
        flexname = form .. ' de ' .. name
    else
        flexname = form .. ' de ' .. name
    end
    return flexname
end

-- Fonction de récupération du nom standard à partir de son code et de ses propriétés
function p.get_name(code, phrase, flexion, plural)
    if (code == nil) then return nil end
    
    -- Pour chercher dans les listes, le texte doit être en minuscule et sans tirets
    code = b.lcfirst(code);
    
    -- Alias?
    if (p.types['alias'][code]) then
        code = p.types['alias'][code]
    end
    
    local idphrase = 'phrase'
    local idword = 'word'
    if (plural) then
        idphrase = 'phrase_pl'
        idword = 'word_pl'
    end
    
    -- Type défini?
    if (p.types['text'][code] ~= nil) then
        local name = ''
        if (phrase and p.types['text'][code][idphrase] ~= nil) then
            name = p.types['text'][code][idphrase]
        else
            name = p.types['text'][code][idword]
        end
        
        -- Flexion
        if (flexion) then
            name = flexion_de(name, plural)
        end
        
        return name;
    else
        return 'undefined type'
    end
    return nil
end

function p.get_name_singular(code, phrase, flexion)
    plural = false
    return p.get_name(code, phrase, flexion, plural)
end

function p.get_name_plural(code, phrase, flexion)
    plural = true
    return p.get_name(code, phrase, flexion, plural)
end

-- Fonction qui créé une version abrégée du nom
function p.get_abrev(name, phrase, flexion)
	if name == nil then return 'undef' end
    name = b.lcfirst(name)
	
    -- Alias?
   if p.types['alias'][name] then
    	name = p.types['alias'][name]
    end
    
    if (p.types['text'][name]) then
    	local abrev = p.types['text'][name]['abrev']
        if (flexion)  then abrev = 'flex-' .. abrev end
        
        return abrev
    else
        return 'undef'
    end
end

return p