Module:fr-pron/temp

local export = {}

function export.show(frame, noschwa) local word = type(frame) == "table" and frame.args[1] or frame --splitting to consonants and vowels, so "rouassions" > "r|oua|ss|io|n|s" word = mw.ustring.gsub(word, "([aeiouàéèêâîôûäëïöüœ]+)", "|%1|") word = mw.ustring.gsub(word, "([^aeiouàéèêâîôûäëïöüœ])", "|%1|") word = mw.ustring.gsub(word, "%|+", "|") word = mw.ustring.gsub(word, "^%|", "") word = mw.ustring.gsub(word, "%|$", "") --other vowels and consonants word = mw.ustring.gsub(word, "c%|h", "ch") word = mw.ustring.gsub(word, "g%|n", "gn") word = mw.ustring.gsub(word, "([^aeiouàéèêâîôûäëïöüœ])%|%1", "%1%1") word = mw.ustring.gsub(word, "i%|l$", "|ill") word = mw.ustring.gsub(word, "i%|ll%|", "|ill|") word = mw.ustring.gsub(word, "g%|u", "gu|") word = mw.ustring.gsub(word, "q%|u", "qu|") word = mw.ustring.gsub(word, "gu%|ë", "g|u") word = mw.ustring.gsub(word, "([aeou])%|y","%1i|y") word = mw.ustring.gsub(word, "i([aeiouàéèêâîôûäëïöüœ])", "i|%1") word = mw.ustring.gsub(word, "u([aeiouàéèêâîôûäëïöüœ])", "u|%1") word = mw.ustring.gsub(word, "ou([aeiouàéèêâîôûäëïöüœ])", "ou|%1") word = mw.ustring.gsub(word, "%|+", "|") word = mw.ustring.gsub(word, "^%|", "") word = mw.ustring.gsub(word, "%|$", "") --nasal vowels word = mw.ustring.gsub(word, "%|n", "n|") word = mw.ustring.gsub(word, "n%|n", "|nn") word = mw.ustring.gsub(word, "n%|([aeiouàéèêâîôûäëïöüœ]+)", "|n%1") word = mw.ustring.gsub(word, "%|m", "m|") word = mw.ustring.gsub(word, "m%|m", "|mm") word = mw.ustring.gsub(word, "m%|([aeiouàéèêâîôûäëïöüœ]+)", "|m%1") --exception word = mw.ustring.gsub(word, "^femme", "famme") word = mw.ustring.gsub(word, "prudemment", "prudamment") word = mw.text.split(word, "|", true) local result = {} for i,val in ipairs(word) do		if val == "a" then table.insert(result, "a") elseif val == "à" then table.insert(result, "a") elseif val == "â" then table.insert(result, "ɑ") elseif val == "ai" then table.insert(result, "ɛ") elseif val == "aî" then table.insert(result, "ɛ") elseif val == "aï" then table.insert(result, "a.i") elseif val == "ain" then table.insert(result, "ɛ̃") elseif val == "an" then table.insert(result, "ɑ̃") elseif val == "au" then table.insert(result, "o") elseif val == "e" then if i==#word then if i==2 then table.insert(result, "ə") end elseif i==#word-1 then if mw.ustring.match(word[#word], "[bcfghjklpvwx]") then table.insert(result, "ɛ") elseif mw.ustring.match(word[#word], "[drtz]") then table.insert(result, "e") elseif word[#word] == "ch" then table.insert(result, "ɛ") elseif word[#word] == "qu" then table.insert(result, "ɛ") elseif word[#word] == "s" then else table.insert(result, "ɛ") end else if mw.ustring.match(word[i+1],"([^aeiouàéèêâîôûäëïöüœ])%1") then table.insert(result, "ɛ") elseif mw.ustring.match(word[i+2],"[^aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "ɛ") else table.insert(result, "ə") end end elseif val == "ê" then table.insert(result, "ɛ") elseif val == "é" then table.insert(result, "e") elseif val == "è" then table.insert(result, "ɛ") elseif val == "eau" then table.insert(result, "o") elseif val == "ei" then if word[i+1] and mw.ustring.match(word[i+1],"([^aeiouàéèêâîôûäëïöüœ])%1") then table.insert(result, "ɛ") elseif word[i+2] and mw.ustring.match(word[i+2],"[^aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "ɛ") else table.insert(result, "e") end elseif val == "eï" then table.insert(result, "e.i") elseif val == "ein" then table.insert(result, "ɛ̃") elseif val == "en" then table.insert(result, "ɑ̃") elseif val == "eu" then if word[i+1] and mw.ustring.match(word[i+1],"([^aeiouàéèêâîôûäëïöüœ])%1") then table.insert(result, "œ") elseif word[i+2] and mw.ustring.match(word[i+2],"[^aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "œ") else table.insert(result, "ø") end elseif val == "i" then if word[i+1] and mw.ustring.match(word[i+1], "[aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "j") else table.insert(result, "i") end elseif val == "î" then table.insert(result, "i") elseif val == "in" then table.insert(result, "ɛ̃") elseif val == "o" then if word[i+1] and mw.ustring.match(word[i+1],"([^aeiouàéèêâîôûäëïöüœ])%1") then table.insert(result, "ɔ") elseif word[i+2] and mw.ustring.match(word[i+2],"[^aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "ɔ") else table.insert(result, "o") end elseif val == "ô" then table.insert(result, "o") elseif val == "oë" then table.insert(result, "ɔ.ɛ") elseif val == "oeu" then table.insert(result, "œ") elseif val == "oi" then table.insert(result, "wa") elseif val == "oin" then table.insert(result, "wɛ̃") elseif val == "on" then table.insert(result, "ɔ̃") elseif val == "ou" then if word[i+1] and mw.ustring.match(word[i+1], "[aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "w") else table.insert(result, "u") end elseif val == "u" then if word[i+1] and mw.ustring.match(word[i+1], "[aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "ɰ") else table.insert(result, "y") end elseif val == "un" then table.insert(result, "œ̃") elseif val == "œ" then table.insert(result, "e") elseif val == "œu" then table.insert(result, "œ") elseif val == "b" then if i~=#word then if i==#word-1 and word[#word] == "[^aeiouàéèêâîôûäëïöüœ]" then else table.insert(result, "b") end end elseif val == "c" then if word[i+1] and mw.ustring.match(word[i+1],"^[ei]") then table.insert(result, "s") else table.insert(result, "k") end elseif val == "cc" then if word[i+1] and mw.ustring.match(word[i+1],"^[ei]") then table.insert(result, "ks") else table.insert(result, "k") end elseif val == "ç" then table.insert(result, "s") elseif val == "d" then if i~=#word then if i==#word-1 and word[#word] == "[^aeiouàéèêâîôûäëïöüœ]" then else table.insert(result, "d") end end elseif val == "dd" then table.insert(result, "d") elseif val == "ff" then table.insert(result, "f") elseif val == "g" then if i~=#word then if i==#word-1 and word[#word] == "[^aeiouàéèêâîôûäëïöüœ]" then else if word[i+1] and mw.ustring.match(word[i+1],"^[ei]") then table.insert(result, "ʒ") else table.insert(result, "ɡ") end end end elseif val == "gg" then if word[i+1] and mw.ustring.match(word[i+1],"^[ei]") then table.insert(result, "ɡʒ") else table.insert(result, "ɡ") end elseif val == "gn" then table.insert(result, "ɲ") elseif val == "gu" then table.insert(result, "ɡ") elseif val == "h" then elseif val == "j" then table.insert(result, "ʒ") elseif val == "kk" then table.insert(result, "k") elseif val == "ll" then table.insert(result, "l") elseif val == "ill" then table.insert(result, "j") elseif val == "mm" then table.insert(result, "m") elseif val == "nn" then table.insert(result, "n") elseif val == "p" then if i~=#word then if i==#word-1 and word[#word] == "[^aeiouàéèêâîôûäëïöüœ]" then else table.insert(result, "p") end end elseif val == "pp" then table.insert(result, "p") elseif val == "qu" then table.insert(result, "k") elseif val == "r" then table.insert(result, "ʁ") elseif val == "rr" then table.insert(result, "ʁ") elseif val == "s" then if i~=#word then if word[i+1] and mw.ustring.match(word[i+1],"[aeiouàéèêâîôûäëïöüœ]") and word[i-1] and mw.ustring.match(word[i+1],"[aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "z") else table.insert(result, "s") end end elseif val == "ss" then table.insert(result, "s") elseif val == "t" then if i~=#word then table.insert(result, "t") end elseif val == "tt" then table.insert(result, "t") elseif val == "vv" then table.insert(result, "v") elseif val == "x" then if i~=#word then table.insert(result, "ks") end elseif val == "y" then if word[i+1] and mw.ustring.match(word[i+1],"[aeiouàéèêâîôûäëïöüœ]") then table.insert(result, "j") else table.insert(result, "i") end else table.insert(result, val) end end return table.concat(result) end

function export.noschwa(frame) return export.show(frame, true) end

return export