Module:types de mots
Import du wiktionaire en français.
-- Page de test : Utilisateur:Darkdadaah/Test:Sections
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 = 'lêpa'
if (pluriel) then forme = 'âlêpa' end
return forme .. ' tî ' .. nom
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