Module:nmy-IPA

local export = {}

local m_IPA = require("Module:IPA") local lang = require("Module:languages").getByCode("nmy") local rsub = mw.ustring.gsub local rlower = mw.ustring.lower

local function phonetic(text) text = rlower(text) -- simplexes text = rsub(text, "([ptckq])h", "%1ʰ") text = rsub(text, "dzh", "dʐ") text = rsub(text, "tsh", "tsʰ") text = rsub(text, "zh", "ʐ") text = rsub(text, "sh", "ʂ") text = rsub(text, "khy", "kyʰ") text = rsub(text, "gh", "ɢ") text = rsub(text, "lh", "lU") text = rsub(text, "([bd])b", "%1ʙ") text = rsub(text, "([pt])(ʰ?)b", "%1ʙU%2") text = rsub(text, "c", "tʂ") text = rsub(text, "gy", "dʑ") text = rsub(text, "ky", "tɕ") text = rsub(text, "ny", "ɲ") text = rsub(text, "y", "j") text = rsub(text, "ng", "ŋ") text = rsub(text, "hr", "ʁ") text = rsub(text, "xr", "χ") -- complexes text = rsub(text, "pʰs", "psʰ") text = rsub(text, "([pt])ʰʂ", "%1ʂʰ") text = rsub(text, "nk", "ŋk") text = rsub(text, "n([ɢqχ])", "ɴ%1") -- vowels text = rsub(text, "ä", "æ") text = rsub(text, "ü", "y") text = rsub(text, "ih([aeiouäür])", "iX%1") text = rsub(text, "îh([aeiouäür])", "îX%1") text = rsub(text, "ìh([aeiouäür])", "ìX%1") text = rsub(text, "ĭh([aeiouäür])", "ĭX%1") text = rsub(text, "īh([aeiouäür])", "īX%1") text = rsub(text, "íh([aeiouäür])", "íX%1") text = rsub(text, "ih", "ɨ") text = rsub(text, "jy", "ɥy") -- tones text = rsub(text, "îh", "ɨ1") text = rsub(text, "â", "a1") text = rsub(text, "ê", "e1") text = rsub(text, "î", "i1") text = rsub(text, "ô", "o1") text = rsub(text, "û", "u1") text = rsub(text, "̂", "1") text = rsub(text, "ìh", "ɨ2") text = rsub(text, "ǜ", "y2") text = rsub(text, "à", "a2") text = rsub(text, "è", "e2") text = rsub(text, "ì", "i2") text = rsub(text, "ò", "o2") text = rsub(text, "ù", "u2") text = rsub(text, "̀", "2") text = rsub(text, "ĭh", "ɨ3") text = rsub(text, "ă", "a3") text = rsub(text, "ĕ", "e3") text = rsub(text, "ĭ", "i3") text = rsub(text, "ŏ", "o3") text = rsub(text, "ŭ", "u3") text = rsub(text, "̆", "3") text = rsub(text, "īh", "ɨ4") text = rsub(text, "ā", "a4") text = rsub(text, "ē", "e4") text = rsub(text, "ī", "i4") text = rsub(text, "ō", "o4") text = rsub(text, "ū", "u4") text = rsub(text, "ǟ", "æ4") text = rsub(text, "ǖ", "y4") text = rsub(text, "̄", "4") text = rsub(text, "íh", "ɨ5") text = rsub(text, "á", "a5") text = rsub(text, "é", "e5") text = rsub(text, "í", "i5") text = rsub(text, "ó", "o5") text = rsub(text, "ú", "u5") text = rsub(text, "ǘ", "y5") text = rsub(text, "́", "5") text = rsub(text, "X", "h") text = rsub(text, "([aeiouæyɨ])", "%16") text = rsub(text, "6([12345])", "%1") text = rsub(text, "i6([aeo])", "Y%1") text = rsub(text, "u6([ao])", "W%1") -- phonetics text = rsub(text, "xu", "xnu") text = rsub(text, "h([iueo])", "hn%1") text = rsub(text, "([aeiouæyɨ][12345])e6r", "%1ɹ") text = rsub(text, "([aeiouæyɨ])([12345])([aeiouæyɨʉɤ])6", "%1%3%2D") text = rsub(text, "([nmɲŋ][aeiouæyɨ])", "%1N") text = rsub(text, "([aeiouæyɨ])(D?[123456]r?[xh]?[nmɲŋ])", "%1N%2") text = rsub(text, "([aeiouæyɨ])([aeiouæyɨʉɤ])DN", "%1N%2DN") text = rsub(text, "^([aeiouæyɨ])", "ʔ%1") text = rsub(text, "Y", "j") text = rsub(text, "W", "w") text = rsub(text, "([kgxŋqɢχʁɴ])a", "%1ɑ") text = rsub(text, "([qɢχʁɴ])o", "%1ɔ") text = rsub(text, "ʙ(U?ʰ?)u", "ʙɯ") text = rsub(text, "([td][sɕʂzʑʐ]ʰ?)u", "%1ɯ") text = rsub(text, "e([123456])r", "ɚ%1") text = rsub(text, "e", "ɛ") text = rsub(text, "y", "Ü") text = rsub(text, "([jɕʑɲ]ʰ?)Ü", "%1y") text = rsub(text, "Ü", "ʉ") text = rsub(text, "ʙ(U?ʰ?)ɨ", "ʙ%1ʙS") text = rsub(text, "([ʂʐ]ʰ?)ɨ", "%1ɯ") text = rsub(text, "([ɕʑr]ʰ?)ɨ", "%1ɘ") text = rsub(text, "vɨ", "vS") text = rsub(text, "mu", "mmS") text = rsub(text, "mSN", "mS") text = rsub(text, "([123456])ŋ$", "ŋ%1") text = rsub(text, "([ptbd])ʙ", "%1Bʙ") text = rsub(text, "([td])([sɕʂzʑʐ]ʰ?)", "%1B%2") -- diacritics text = rsub(text, "hn", "ɦN") text = rsub(text, "xn", "xN") text = rsub(text, "h", "ɦ") text = rsub(text, "g", "ɡ") text = rsub(text, "B", "͡") text = rsub(text, "U", "̥") text = rsub(text, "S", "̩") text = rsub(text, "N", "̃") text = rsub(text, "D", "̯") text = rsub(text, "1", "˥") text = rsub(text, "2", "˥˧") text = rsub(text, "3", "˩˧") text = rsub(text, "4", "˧˩") text = rsub(text, "5", "˧˥") text = rsub(text, "6", "˧") text = rsub(text, "ɲ", "n̠ʲ")

return text end

function export.IPA(frame) local words = {} for _, word in ipairs(frame:getParent.args) do		table.insert(words, word) end if #words == 0 then words = {mw.title.getCurrentTitle.text} end local IPA_results = {} for _, word in ipairs(words) do table.insert(IPA_results, { pron = "[" .. phonetic(word) .. "]" }) end return m_IPA.format_IPA_full { lang = lang, items = IPA_results } end

return export