Module:as-IPA

local export = {}

local lang = require("Module:languages").getByCode("as") local sc = require("Module:scripts").getByCode("Beng") local m_translit = require("Module:as-translit").tr local m_IPA = require("Module:IPA")

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

local correspondences = { ["g"] = "ɡ", ["ñ"] = "n", ["ṗ"] = "pʰ", ["ḃ"] = "bʱ", ["y"] = "j", ["r"] = "ɹ", ["h"] = "ɦ", ["ḱ"] = "kʰ", ["ǵ"] = "ɡʱ", ["ź"] = "zʱ", ["ṫ"] = "tʰ", ["ḋ"] = "dʱ", ["ŕ"] = "ɹʱ", ["ṙ"] = "ɹi", ["o"] = "ɔ", ["e"] = "ɛ", ["ü"] = "ʊ", ["ë"] = "e", ["ö"] = "o", ["ʏ"] = "oɪ", ["ɵ"] = "oʊ", ["õ"] = "ɔ̃", ["e͂"] = "ɛ̃", ["ü͂"] = "ʊ", ["ë̃"] = "ẽ", ["ö̃"] = "ɔ̃", ["a͂"] = "a", ["ĩ"] = "i", ["u͂"] = "u" }

local vowels = "aiueoüóéʏɵ" local syllabify_pattern = "([" .. vowels .. "])([^" .. vowels .. " %.]+)([" .. vowels .. "])"

local function syllabify(text) for count = 1, 2 do		text = gsub(text, syllabify_pattern, function(a, b, c)			return a .. gsub(gsub(b, "(.)(.+)", "%1.%2"), "^([^%.]+)$", ".%1") .. c end) end return text end

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

function export.toIPA(text) local result = {} local translit = m_translit(text, lang, sc, "IPA") if not translit then error('The term "' .. text .. '" could not be transliterated.') end local translit = syllabify(translit) for character in gmatch(translit, ".") do		table.insert(result, correspondences[character] or character) end result = table.concat(result) result = gsub(result, "([aɔ])i", "%1ɪ") result = gsub(result, "z%.z", "d.ʑ") result = gsub(result, "([" .. vowels .. "])ɦ", "%1ʱ") return result end

function export.make(frame) local args = frame:getParent.args local pagetitle = mw.title.getCurrentTitle.text 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 = { pagetitle } end for _, Assamese in ipairs(p) do table.insert(results, { pron = "/" .. export.toIPA(Assamese) .. "/" }) end return '* ' .. m_IPA.format_IPA_full { lang = lang, items = results } end

return export