Module:rimes
Apparence
La documentation pour ce module peut être créée à Module:rimes/Documentation
local m_params = require("Module:paramètres")
local m_lang = require('Module:langues')
local p = {}
-- Liste des sons vocaliques
local voyelles = {"a", "ɑ", "ã", "ɑ̃", "ɛ", "e", "ə", "ø", "œ", "i", "ɛ̃", "œ̃", "ɔ", "o", "ɔ̃", "u", "y", "ʊ"}
-- Teste si un son est un son vocalique.
function est_voyelle(son)
for _, v in pairs(voyelles) do
if v == son then
return true
end
end
return false
end
-- Teste si la prononciation fournie est une rime vocalique, c'est-à-dire qu'elle finit par un son vocalique.
function p.est_vocalique(pron)
local last = mw.ustring.sub(pron, -1)
if last == mw.ustring.char(0x303) then
last = mw.ustring.sub(pron, -2)
end
return est_voyelle(last)
end
function get_finale(pron)
pron = mw.text.trim(pron)
local finale = ""
pron = mw.ustring.gsub(pron, "[‿ ]", "")
for i = #pron, 1, -1 do
local son = mw.ustring.sub(pron, i, i)
finale = son .. finale
if est_voyelle(son) then
if p.est_vocalique(pron) and i > 1 then
local c = mw.ustring.sub(pron, i - 1, i - 1)
local prev = c
if (c == mw.ustring.char(0x303) or c == '.') and i > 2 then
c = mw.ustring.sub(pron, i - 2, i - 2)
prev = c .. prev
if (c == mw.ustring.char(0x303) or c == '.') and i > 3 then
c = mw.ustring.sub(pron, i - 3, i - 3)
prev = c .. prev
end
end
finale = prev .. finale
end
break
end
end
if finale ~= "" then
return finale
else
return ""
end
end
--
function p.pron_rimes(frame)
local params = {
[1] = { required = true, allow_empty = true },
[2] = { required = true },
["pron"] = { alias_of = 1 },
["lang"] = { alias_of = 2 },
}
local args, success = m_params.process(frame:getParent().args, params, true)
if args[1] == nil then
return '(Merci d’indiquer une prononciation, ou à défaut, de retirer le modèle.) [[Catégorie:Wiktionnaire:Prononciations manquantes en français]]'
end
if args[2] ~= "fr" then
return '(Merci d’indiquer le code de langue. Pour l’instant, seul le français est pris en charge) [[Catégorie:Wiktionnaire:Prononciations manquantes sans langue précisée]]'
end
local finale = get_finale(args[1])
local lang = m_lang.get_nom(args[2])
return 'La prononciation <span class="API" title="Prononciation API">\\' .. args[1] .. "\\</span> rime avec les [[Annexe:Rimes en "..lang.." en \\".. finale .. '\\|mots qui finissent en <span class="API" title="Prononciation API">\\' .. finale .. "\\</span>]].[[Catégorie:Rimes en ".. lang ..' en \\' .. finale .. "\\]]"
end
return p