Modul:cjy-pron

Üdvözlöm, Ön a Modul:cjy-pron szó jelentését keresi. A DICTIOUS-ban nem csak a Modul:cjy-pron szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Modul:cjy-pron szót egyes és többes számban mondani. Minden, amit a Modul:cjy-pron szóról tudni kell, itt található. A Modul:cjy-pron szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AModul:cjy-pron és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

A modult a Modul:cjy-pron/doc lapon tudod dokumentálni

local export = {}

local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
local len = mw.ustring.len
local match = mw.ustring.match

local initialConv = {
	 = "p",  = "pʰx",  = "m",  = "f",  = "v",
	 = "t",  = "tʰx",  = "n",  = "l", 
	 = "t͡s",  = "t͡sʰ",  = "s",  = "ʐ",
	 = "t͡ɕ",  = "t͡ɕʰ",  = "ɕ",
	 = "k",  = "kʰx",  = "ɣ",  = "ŋ",
	 = "x",  = ""
}

local finalConv = {
	 = "z̩",
	 = "i",
	 = "u", 
	 = "y", 
	 = "əɻ", 
	 = "a",  = "ia",  = "ua", 
	 = "ɤ",  = "uɤ", 
	 = "ie",  = "ye", 
	 = "ai",  = "uai", 
	 = "ei",  = "uei", 
	 = "au",  = "iau", 
	 = "əu",  = "iəu", 
	 = "æ̃",  = "uæ̃",
	 = "ɒ̃",  = "iɒ̃",  = "uɒ̃",
	 = "aŋ",  = "iaŋ",  = "uaŋ", 
	 = "ə̃ŋ", 
	 = "ĩŋ", 
	 = "ũŋ", 
	 = "ỹŋ", 
	 = "aʔ",  = "iaʔ",  = "uaʔ", 
	 = "əʔ",  = "iəʔ",  = "uəʔ",  = "yəʔ",
	 = "z̩ɻ",
	 = "iɻ",
	 = "uɻ",
	 = "yɻ",
	 = "ɑɻ",  = "iɑɻ",  = "uɑɻ", 
	 = "ɤɻ",  = "uɤɻ", 
	 = "ieɻ",  = "yeɻ", 
	 = "ɐɻ",  = "uɐɻ", 
	 = "əɻ",  = "uəɻ", 
	 = "ɒoɻ",  = "iɒoɻ", 
	 = "əuɻ",  = "iəuɻ", 
	 = "æ̃ɻ",  = "uæ̃ɻ",
	 = "ɒ̃ɻ",  = "iɒ̃ɻ",  = "uɒ̃ɻ",
	 = "ʌ̃ɻ", 
	 = "ĩɻ", 
	 = "ũɻ", 
	 = "ỹɻ", 
	 = "ɐɻ",  = "iɐɻ",  = "uɐɻ", 
	 = "əɻ",  = "ieɻ",  = "uəɻ",  = "yeɻ",
}

local toneConv = {
	 = "¹¹",  = "⁵³",  = "⁴⁵",  = "²",  = "⁵⁴",  = "¹",  = "⁻"
}

local toneSandhi = {
	 = "2-1",  = "2-1",
	 = "4-5",  = "4-5",
	 = "4-3",  = "4-3",
	 = "5-4",  = "5-4",
}

local neutral = {
	 = "⁴",  = "³",  = "²"
}

function export.ipa(text, feature)
	if type(text) == "table" then
		text = text.args
	end
	local syllables, initial, final, tone, ipa, result = {}, {}, {}, {}, {}, {}
	local words = mw.text.split(text, "/")
	for _, word in ipairs(words) do
		syllables = mw.text.split(word, " ")
		for index, syllable in ipairs(syllables) do
			initial = match(syllable, "^??")
			final = match(sub(syllable, len(initial) + 1, -1), "^*")
			tone = match(syllable, "+$") or (index ~= 1 and "6" or "")
		end
		for index = 1, #syllables do
			initial = initialConv] or error(("Unrecognised initial: \"%s\""):format(initial))
			final = (match(initial, "") and final == "i") and "r" or final
			final = finalConv] or error(("Unrecognised final: \"%s\""):format(final))
			tone = tone == "6" and neutral] or tone
			tone = feature ~= "no_sandhi" and toneSandhi.."+"..(tone or "")] or tone
			tone = gsub(tone, ".", toneConv)
			ipa = initial .. final .. tone
		end
		table.insert(result, table.concat(ipa, " "))
	end
	return table.concat(result, "/, /")
end

function export.rom(text)
	text = gsub(text, "/", " / ")
	text = gsub(text, '(+)', '<sup>%1</sup>')
	return text
end

return export