TshetUinhEncoder.工具.音韻屬性到韻鏡位置們 的原始碼
# -*- coding: utf-8 -*-
from .. import 常量
from ..轉換 import 韻目到韻, 母到組
from ..韻鏡位置 import 韻鏡位置
[文件]
def 音韻屬性到韻鏡位置們(母: str, 韻目: str, 聲: str):
'''
將音韻屬性轉換爲韻鏡位置。
'''
韻鏡母 = {
'幫': '幫非', '滂': '滂敷', '並': '並奉', '明': '明微',
'精': '精照', '清': '清穿', '從': '從牀', '心': '心審', '邪': '邪禪',
'莊': '精照', '初': '清穿', '崇': '從牀', '生': '心審', '俟': '邪禪',
'章': '精照', '昌': '清穿', '常': '從牀', '書': '心審', '船': '邪禪',
'云': '喻', '以': '喻'
}.get(母, 母)
韻 = 韻目到韻(韻目)
# 開合分韻:戈果過
韻鏡開合們 = ('合' if 韻目 in '戈果過' else '開合') if 韻 in 常量.開合兼備的韻 else (None,)
組 = 母到組(母)
# 切韻一等韻、二等韻、四等韻只排在韻鏡一等、二等、四等
# 切韻三等韻中的幽韻也排在韻鏡四等
if 韻 in 常量.一等韻:
韻鏡等們 = '一'
elif 韻 in 常量.二等韻:
韻鏡等們 = '二'
elif 韻 in 常量.四等韻 or 韻 == '幽':
韻鏡等們 = '四'
# 切韻三等韻(除幽韻)、一三等韻、二三等韻的情況
else:
# 處理切韻音韻地位不取切韻三等的情況
if 韻 in 常量.一三等韻:
韻鏡等們 = '一' # 切韻一三等韻若取一等,則韻鏡排在一等
elif 韻 in 常量.二三等韻:
韻鏡等們 = '二' # 切韻二三等韻若取二等,則韻鏡排在二等
else:
韻鏡等們 = ''
# 處理切韻音韻地位取切韻三等的情況
if 組 == '精':
韻鏡等們 += '四' # 切韻三等的精組字排在韻鏡四等
elif 組 == '莊':
if 韻鏡等們 != '二':
韻鏡等們 += '二' # 切韻三等的莊組字排在韻鏡二等
elif 母 in 常量.重紐母 and 韻 in 常量.重紐韻:
韻鏡等們 += '三四' # 重紐排在韻鏡三等或四等
else:
韻鏡等們 += '三' # 其餘情況排在三等
return [韻鏡位置(韻鏡母, 韻鏡開合, 韻鏡等, 韻, 聲) for 韻鏡開合 in 韻鏡開合們 for 韻鏡等 in 韻鏡等們]