Module:umu-IPA

-- umu-IPA module local umu_IPA = {}

local lang = require("Module:languages").getByCode("umu") local sc = require("Module:scripts").getByCode("Latn") local m_IPA = require("Module:IPA")

local gsub = mw.ustring.gsub local gmatch = mw.ustring.gmatch

local replacements = { ["aa"] = "ā", ["ee"] = "ē", ["ii"] = "ī", ["oo"] = "ō", ["ch"] = "č", ["sh"] = "š", ["zh"] = "ž", ["kw"] = "ḱ", ["gw"] = "ǵ", ["mb"] = "ḅ", ["nd"] = "ḍ", ["ng"] = "ġ" }

function umu_IPA.transliterate(text) local output = text -- Perform all replacements for key, value in pairs(replacements) do       output = output:gsub(key, value) end return output end

local correspondences = { -- vowels ["á"] = "ɒ", ["é"] = "ɛ", ["í"] = "i", ["ó"] = "o", ["ú"] = "ə", --ignore accents ["à"] = "ɒ", ["è"] = "ɛ", ["ì"] = "i", ["ò"] = "o", ["ù"] = "ə", ["û"] = "", ["a"] = "ɒ", ["e"] = "ɛ", ["i"] = "i", ["o"] = "o", ["u"] = "ə", ["ā"] = "aː", ["ē"] = "ɛː", ["ī"] = "iː", ["ō"] = "oː", --["uy"] = "ɪj", ["uw"] = "ʊw", -- consonants ["č"] = "tʃ", ["š"] = "ʃ", ["ž"] = "ʒ", ["y"] = "j", ["ḱ"] = "kʷ", ["ǵ"] = "gʷ", -- labialized consonants ["ḅ"] = "ᵐb", ["ḍ"] = "ⁿd", ["ġ"] = "ᵑɡ" --prenasalized consonants }

function umu_IPA.link(term) return require("Module:links").full_link{ term = term, lang = lang, sc = sc } end

function umu_IPA.toIPA(text) local result = {}

local translit = umu_IPA.transliterate(text) if not translit then error('The term "' .. text .. '" could not be transliterated.') end

for character in gmatch(translit, ".") do       table.insert(result, correspondences[character] or character) end

result = table.concat(result)

return result end

function umu_IPA.make(frame) local args = frame.args

local p, results = {}, {}

if args[1] then for index, item in ipairs(args) do           table.insert(p, (item ~= "") and item or nil) end else p = { mw.title.getCurrentTitle.text } end

for _, Val in ipairs(p) do       table.insert(results, { pron = "/" .. umu_IPA.toIPA(Val) .. "/" }) end

return '* ' .. m_IPA.format_IPA_full { lang = lang, items = results } end

function umu_IPA.show(frame) local args = frame.args local page_title = mw.title.getCurrentTitle.text local text = args[1] or page_title

local IPA_text = umu_IPA.toIPA(text)

return m_IPA.format_IPA_full { lang = lang, items = } end

return umu_IPA