Module:ram-IPA

local export = {} local m_IPA = require("Module:IPA")

local IPA_mapping = { ["a"] = "a", ["ã"] = "ɜ̃", ["à"] = "ɜ", ["b"] = "b", ["c"] = "k", ["e"] = "ɛ", ["ê"] = "e", ["ẽ"] = "ẽ", ["g"] = "ŋg", ["h"] = "h", ["i"] = "i", ["ĩ"] = "ĩ", ["j"] = "j", ["k"] = "kʰ", ["m"] = "m", ["n"] = "n", ["o"] = "ɔ", ["ô"] = "o", ["õ"] = "õ", ["p"] = "p", ["qu"] = "k", ["r"] = "ɺ", ["t"] = "t", ["u"] = "u", ["ũ"] = "ũ", ["w"] = "ʋ", ["x"] = "t͡ɕ", ["y"] = "ɨ", ["ỳ"] = "ɘ", ["ỹ"] = "ɨ" }

function export.IPA_transcribe(text) return "/" .. mw.ustring.gsub(text, '.', IPA_mapping) .. "/" end

function export.translate(text) if type(text) == "table" then text = text.args[1] end local pron = export.IPA_transcribe(text) lang = require("Module:languages").getByCode("ram") local items = {} table.insert(items, {pron = pron, note = nil}) return m_IPA.format_IPA_full { lang = lang, items = items } end

function export.IPA(frame) local args = type(frame) == 'string' and { frame } or frame:getParent.args local result = {} if args['phon'] and args['phon'] ~= '' then args = { args['phon'] } end args = (not args[1]) and { mw.title.getCurrentTitle.text } or args

for _, text in ipairs(args) do		text = mw.ustring.lower(text) -- h before consonants text = gsub(text, 'h([khjmntɺʋ])', 'ʔ%1') -- r before consonants text = gsub(text, 'ɺ([khjmntɺʋ%s])', 'ɹ%1') -- nasalization after consonants text = gsub(text,"([mn][aeiouy])",{		["a"] = "ã",		["e"] = "ẽ",		["i"] = "ĩ",		["o"] = "õ",		["u"] = "ũ",		["y"] = "ɨ̃",		})

table.insert(result, '[' .. text .. ']') end table.insert(result, 1, "ram") if (type(frame) == 'string') then return mw.ustring.sub(result[1], 2, mw.ustring.len(result[1]) - 1) else return frame:expandTemplate{ title = "IPA", args = result} end

end

return export