Difference between revisions of "Module:Rimes"
Mediawiki>Lepticed7 |
m (1 revision imported) |
(No difference)
|
Latest revision as of 15:09, 7 August 2020
Documentation for this module may be created at Module:Rimes/doc
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 supporté) [[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