Modul:as-IPA
Penampilan
- Modul ini kekurangan sublaman pendokumenan. Sila mencipta laman pendokumenan berkaitan.
- Pautan berguna: senarai sublaman • pautan • transklusi • kes ujian • kotak pasir
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͂"] = "ɛ", ["ü͂"] = "ʊ",
["é͂"] = "e", ["ó͂"] = "o", ["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('Kata "' .. text .. '" tidak dapat ditransliterasikan.')
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, results)
end
return export