Amṣada:types de mots
Ce module renvoie le nom standardisé des types de mots.
Ce module contient trois fonctions exportables avec les trois mêmes paramètres : un nom de type de mot ('nom' par exemple), et deux booléens pour savoir s'il s'agit d'une locution et d'une flexion.
- get_nom_singulier(code, locution, flexion)
- Renvoi le nom standardisé au singulier du type de mot correspondant, s'il existe.
- get_nom_pluriel(code, locution, flexion)
- Renvoi le nom standardisé au pluriel du type de mot correspondant, s'il existe. Utile pour les catégories.
- get_abrev(code, locution, flexion)
- Renvoi la version abrégée du type de mot. Utile pour les ancres vers les sections de mot.
La définition des types de mots standardisés et des alias autorisés est écrite dans Module:types de mots/data.
Les types de mot autorisés sont affichés grâce aux fonctions de Module:types de mots/analyse.Documentation du Amṣada:types de mots : v · d · m · h.
Catégorie:Modules Lua documentés
b = require('Module:bases')
local p = {}
-- Charge la table une fois pour toutes pour ce module
p.types = mw.loadData('Module:types de mots/data')
-- S'agit-il d'un type de mot reconnu (ou d'un alias) ?
function p.is_type(nom)
if nom == nil then return nil end
nom = b.lcfirst(nom)
if (p.types['alias'][nom] or p.types['texte'][nom]) then
return true
else
return false
end
end
-- S'agit-il d'un alias?
function p.is_alias(nom)
if nom == nil then return nil end
nom = b.lcfirst(nom)
if (p.types['alias'][nomb]) 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(nom, pluriel)
local flexnom = ''
-- Forme: pluriel ou singulier
local forme = 'forme'
if (pluriel) then forme = 'formes' end
if b.is_elidable(nom) then
flexnom = forme .. ' d’' .. nom
else
flexnom = forme .. ' de ' .. nom
end
return flexnom
end
-- Fonction de récupération du nom standard à partir de son code et de ses propriétés
function p.get_nom(code, locution, flexion, pluriel)
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 idlocution = 'locution'
local idmot = 'mot'
if (pluriel) then
idlocution = 'locution_pl'
idmot = 'mot_pl'
end
-- Type défini?
if (p.types['texte'][code] ~= nil) then
local nom = ''
if (locution and p.types['texte'][code][idlocution] ~= nil) then
nom = p.types['texte'][code][idlocution]
else
nom = p.types['texte'][code][idmot]
end
-- Flexion
if (flexion) then
nom = flexion_de(nom, pluriel)
end
return nom;
else
return 'type indéfini'
end
return nil
end
function p.get_nom_singulier(code, locution, flexion)
pluriel = false
return p.get_nom(code, locution, flexion, pluriel)
end
function p.get_nom_pluriel(code, locution, flexion)
pluriel = true
return p.get_nom(code, locution, flexion, pluriel)
end
-- Fonction qui créé une version abrégée du nom
function p.get_abrev(nom, locution, flexion)
if nom == nil then return 'indef' end
nom = b.lcfirst(nom)
-- Alias?
if p.types['alias'][nom] then
nom = p.types['alias'][nom]
end
if (p.types['texte'][nom]) then
local abrev = p.types['texte'][nom]['abrev']
if (flexion) then abrev = 'flex-' .. abrev end
return abrev
else
return 'indef'
end
end
return p