Module:User:Lunabunn/jje-pron
Appearance
- This module sandbox lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • transclusions • testcases • sandbox
local export = {}
local ko_translit = require("Module:User:Lunabunn/ko-translit")
local gsub = ko_translit.gsub
local ko_pron = require("Module:User:Lunabunn/ko-pron")
local shallowCopy = require("Module:table").shallowCopy
local lang_jje = require("Module:languages").getByCode("jje")
local pagename = mw.loadData("Module:headword/data").pagename
function export.phonetic(text, params)
local forms = ko_pron.phonetic(text, params)
for i = #forms,1,-1 do
local remove = false
-- remove forms with wo(a)y
local start = mw.ustring.find(forms[i], "woa?y")
if start then remove = true end
-- remove forms with yay
start = mw.ustring.find(forms[i], "yay")
if start then remove = true end
if remove then table.remove(forms, i) end
end
return forms
end
function export.ipa_morphophonemic(text)
-- consonants
text = gsub(text, "^G", "^")
text = gsub(text, "G$", "ŋ$")
text = gsub(text, "([ptck])h", "%1ʰ")
text = gsub(text, "([ptks])%1", "%1͈")
text = gsub(text, "cc", "t͈͡ɕ")
text = gsub(text, "c", "t͡ɕ")
-- vowels
text = gsub(text, "e", "ə")
text = gsub(text, "əy", "e")
text = gsub(text, "ay", "æ")
text = gsub(text, "u", "ɨ")
text = gsub(text, "wɨ", "u")
text = gsub(text, "ɨy", "ɰi")
text = gsub(text, "o", "ɒ")
text = gsub(text, "wɒ", "o")
text = gsub(text, "uy", "wi")
text = gsub(text, "ue", "we")
text = gsub(text, "y", "j")
-- cleanup
text = ko_translit.strip_separators(text)
text = { { pron = "⫽" .. text .. "⫽" } }
return text
end
function export.ipa_jeju_city(og)
local forms = shallowCopy(og)
for i = 1,#forms do
-- consonants
forms[i] = gsub(forms[i], "^G", "^")
forms[i] = gsub(forms[i], "G$", "ŋ$")
forms[i] = gsub(forms[i], "([ptck])h", "%1ʰ")
forms[i] = gsub(forms[i], "([ptks])%1", "%1͈")
forms[i] = gsub(forms[i], "cc", "t͈͡ɕ")
forms[i] = gsub(forms[i], "c", "t͡ɕ")
forms[i] = gsub(forms[i], "s([aeiouyw])", "sʰ")
-- initial allophony
forms[i] = gsub(forms[i], "^^([ptk])([aeiouyw])", "^%1⁽ʰ⁾%2")
forms[i] = gsub(forms[i], "^^t͡ɕ([aeiouyw])", "^t͡ɕʰ%2")
-- medial allophony
forms[i] = gsub(forms[i], "(#)k([aeiouyw])", "%1g%2")
forms[i] = gsub(forms[i], "(#)t([aeiouyw])", "%1d%2")
forms[i] = gsub(forms[i], "(#)p([aeiouyw])", "%1b%2")
forms[i] = gsub(forms[i], "(#)t͡ɕ([aeiouyw])", "%1d͡ʑ%2")
-- final allophony
forms[i] = gsub(forms[i], "([ptk])$", "%1$̚")
-- l allophony
forms[i] = gsub(forms[i], "^l", "^ɾ")
forms[i] = gsub(forms[i], "l(#)h", "ɾ%1h")
-- h allophony
forms[i] = gsub(forms[i], "hw", "ɸw")
forms[i] = gsub(forms[i], "h([iy])", "ç%1")
forms[i] = gsub(forms[i], "([aeiouywɾ]#)h", "%1ɦ")
-- vowels
forms[i] = gsub(forms[i], "e", "ə")
forms[i] = gsub(forms[i], "əy", "e")
forms[i] = gsub(forms[i], "ay", "æ")
forms[i] = gsub(forms[i], "u", "ɨ")
forms[i] = gsub(forms[i], "wɨ", "u")
forms[i] = gsub(forms[i], "ɨy", "ɰi")
forms[i] = gsub(forms[i], "o", "ɒ")
forms[i] = gsub(forms[i], "wɒ", "o")
forms[i] = gsub(forms[i], "uy", "wi")
forms[i] = gsub(forms[i], "ue", "we")
forms[i] = gsub(forms[i], "y", "j")
-- cleanup
forms[i] = ko_translit.strip_separators(forms[i])
forms[i] = { pron = "[" .. forms[i] .. "]" }
end
return forms
end
function export.make(frame)
local parent_args = frame:getParent().args
local args = require("Module:parameters").process(parent_args, {
[1] = { default = pagename },
["a"] = {},
})
local params = ko_pron.parse_params(parent_args)
local raw = ko_translit.raw(args[1])
local forms = export.phonetic(raw, params)
return ko_pron.format(
lang_jje,
raw,
forms,
{
{ items = export.ipa_morphophonemic(raw), q = { "Morphophonemic" } },
{ items = export.ipa_jeju_city(forms), a = { "Jeju City" }, audio = args["a"] }
},
{
{ "Revised Romanization", ko_translit.rr(args[1], false) },
{ "Revised Romanization (translit.)", ko_translit.rr(args[1], true) },
{ "Yale Romanization", ko_translit.yale(args[1], true, false) }
}
)
end
return export