模組:用戶: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