模組:用戶:Cedric tsan cantonais/沙盒/Yue-rom 2.0

來自維基辭典

呢個模組嘅解說可以喺模組:用戶:Cedric tsan cantonais/沙盒/Yue-rom 2.0/doc度開

local export = {}
local replace = mw.ustring.gsub
local match = mw.ustring.match

local IPA_tones = { '˥', '˩˥', '˧', '˩', '˩˧', '˨' }
local super_numbers = { '¹', '²', '³', '⁴', '⁵', '⁶' }

function export.index_link(frame)
	local jp = type(frame) == 'table' and frame.args[1] or frame
	local iPa = export.jp_to_iPa(jp)

	-- 生成索引超鏈接
	local jp_links = replace(jp, '([^1-6 ]+)([1-6]+)', '[[:Category:粵拼索引/%1|%1%2]]')
	local iPa_links = replace(iPa, '([^1-6 ]+)([1-6]+)', '[[:Category:粵語國際音標索引/%1|%1%2]]')

	-- 聲調數字轉換成音標聲調符號
	jp_links = replace(jp_links, '[1-6]', super_numbers)
	iPa_links = replace(iPa_links, '[1-6]', IPA_tones)

	-- 生成索引文字(捕捉第一個字嘅音標字母)
	local jp_cat = '[[Category:粵拼索引/' .. match(jp, '^[^1-6 ]+') ..']]'
	local iPa_cat = '[[Category:粵語國際音標索引/' .. match(iPa, '^[^1-6 ]+') ..']]'

	local count = frame.args.count;
	local text = [==[* 廣州音]==] .. count ..[==[:
** [[wikipedia:zh-yue:粵語國際音標|國際音標]]:<span style="font-size:150%; font-weight:bold">]==] .. iPa_links .. [==[</span>
** [[wikipedia:zh-yue:粵拼|粵拼]]:<span style="font-size:150%; font-weight:bold">]==] .. jp_links .. [==[</span>]==]

	return text .. jp_cat .. iPa_cat
end

function export.jp_to_iPa(frame)
	local text = type(frame) == 'table' and frame.args[1] or frame
	-- 無計啦,睇來真係要逐個韻轉換。
	
	-- A 同 AA
	text = replace(text, 'aap', '啊p̚')
	text = replace(text, 'aat', '啊t̚')
	text = replace(text, 'aak', '啊k̚')
	text = replace(text, 'aang', '啊ŋ')
	text = replace(text, 'aa', '啊')
	text = replace(text, 'ai', 'ɐi')
	text = replace(text, 'au', 'ɐu')
	text = replace(text, 'ap', 'ɐp̚')
	text = replace(text, 'at', 'ɐt̚')
	text = replace(text, 'ak', 'ɐk̚')
	text = replace(text, '啊ŋ', 'aŋ')
	text = replace(text, '啊p̚', 'ap̚')
	text = replace(text, '啊t̚ ', 'at̚')
	text = replace(text, '啊k̚ ', 'ak̚')
	text = replace(text, '啊', 'a')

	-- E
	text = replace(text, 'ei', 'ei')
	text = replace(text, 'ep', '耶p̚')
	text = replace(text, 'et', '耶t̚')
	text = replace(text, 'ek', '耶k̚')
	text = replace(text, 'e', 'ɛ')
	text = replace(text, '耶p', 'ɛp̚')
	text = replace(text, '耶t', 'ɛt̚')
	text = replace(text, '耶k', 'ɛk̚')

	-- I
	text = replace(text, 'ip', 'ip̚')
	text = replace(text, 'it', 'it̚')
	text = replace(text, 'ik', 'ek̚')
	text = replace(text, 'ing', 'eŋ')
	
	-- YU
	text = replace(text, 'yut', '粵t̚')
	text = replace(text, 'yu', 'y')
	text = replace(text, '粵t', 'yt̚')
	
	-- OE
	text = replace(text, 'oek', 'œk̚')
	text = replace(text, 'oeng', 'œŋ')
	text = replace(text, 'œk', 'œk̚')
	text = replace(text, 'œng', 'œŋ')
	text = replace(text, 'oe', 'œ')
	
	-- EO
	text = replace(text, 'eon', 'ɵn')
	text = replace(text, 'eot', 'ɵt̚')
	text = replace(text, 'eoi', 'ɵy')
	text = replace(text, 'eo', 'ɵ')
	
	-- O
	text = replace(text, 'oi', 'ɔy')
	text = replace(text, 'ok', 'ɔk̚')
	text = replace(text, 'ong', 'ɔŋ')
	
	-- U
	text = replace(text, 'ui', 'uy')
	text = replace(text, 'ung', 'oŋ')
	text = replace(text, 'uk', 'ok̚')
	text = replace(text, 'ut', 'ut̚')
	
	--音節尾
	text = replace(text, 'p̚', '合')
	text = replace(text, 't̚', '突')
	text = replace(text, 'k̚', '格')
	
	--聲母
	text = replace(text, 'b', '鮑')
	text = replace(text, 'p', '豹')
	text = replace(text, 'd', '打')
	text = replace(text, 't', '他')
	text = replace(text, 'z', 't͡s')
	text = replace(text, 'c', 't͡sʰ')
	text = replace(text, 'lh', 'ɬ')
	text = replace(text, 'ng', 'ŋ')
	text = replace(text, 'gw', '瓜') --為徂避免重複轉換而不得不做下藤原拓海
	text = replace(text, 'kw', '夸') 
	text = replace(text, 'g', '加')
	text = replace(text, 'k', '卡')
	text = replace(text, '瓜', 'kw')
	text = replace(text, '夸', 'kʰw')
	text = replace(text, '加', 'k')
	text = replace(text, '卡', 'kʰ')
	text = replace(text, '鮑', 'p')
	text = replace(text, '豹', 'pʰ')
	text = replace(text, '打', 't')
	text = replace(text, '他', 'tʰ')
	text = replace(text, '0', 'ʔ')
	
	--音節尾
	text = replace(text, '合', 'p̚')
	text = replace(text, '突', 't̚')
	text = replace(text, '格', 'k̚')

	return text
end

return export