KeyHandler // Ensure textbook reading display in tooltip.
This commit is contained in:
parent
f8086500a0
commit
9a369a71cc
|
@ -353,41 +353,6 @@ class KeyHandler {
|
|||
composer.clear()
|
||||
}
|
||||
|
||||
/// 用於網頁 Ruby 的注音需要按照教科書印刷的方式來顯示輕聲。該函式負責這種轉換。
|
||||
/// - Parameters:
|
||||
/// - target: 要拿來做轉換處理的讀音鏈。
|
||||
/// - newSeparator: 新的讀音分隔符。
|
||||
/// - Returns: 經過轉換處理的讀音鏈。
|
||||
func cnvZhuyinKeyToTextbookReading(target: String, newSeparator: String = "-") -> String {
|
||||
var arrReturn: [String] = []
|
||||
for neta in target.split(separator: "-") {
|
||||
var newString = String(neta)
|
||||
if String(neta.reversed()[0]) == "˙" {
|
||||
newString = String(neta.dropLast())
|
||||
newString.insert("˙", at: newString.startIndex)
|
||||
}
|
||||
arrReturn.append(newString)
|
||||
}
|
||||
return arrReturn.joined(separator: newSeparator)
|
||||
}
|
||||
|
||||
/// 用於網頁 Ruby 的拼音的陰平必須顯示,這裡處理一下。
|
||||
/// - Parameters:
|
||||
/// - target: 要拿來做轉換處理的讀音鏈。
|
||||
/// - newSeparator: 新的讀音分隔符。
|
||||
/// - Returns: 經過轉換處理的讀音鏈。
|
||||
func restoreToneOneInZhuyinKey(target: String, newSeparator: String = "-") -> String {
|
||||
var arrReturn: [String] = []
|
||||
for neta in target.split(separator: "-") {
|
||||
var newNeta = String(neta)
|
||||
if !"ˊˇˋ˙".contains(String(neta.reversed()[0])), !neta.contains("_") {
|
||||
newNeta += "1"
|
||||
}
|
||||
arrReturn.append(newNeta)
|
||||
}
|
||||
return arrReturn.joined(separator: newSeparator)
|
||||
}
|
||||
|
||||
// MARK: - Extracted methods and functions (Megrez).
|
||||
|
||||
/// 組字器是否為空。
|
||||
|
|
|
@ -86,6 +86,18 @@ extension KeyHandler {
|
|||
tooltipParameterRef[1] = compositor.readings[compositorCursorIndex]
|
||||
}
|
||||
}
|
||||
/// 注音轉拼音
|
||||
for (i, _) in tooltipParameterRef.enumerated() {
|
||||
if tooltipParameterRef[i].isEmpty { continue }
|
||||
if tooltipParameterRef[i].contains("_") { continue }
|
||||
if mgrPrefs.showHanyuPinyinInCompositionBuffer { // 恢復陰平標記->注音轉拼音->轉教科書式標調
|
||||
tooltipParameterRef[i] = Tekkon.restoreToneOneInZhuyinKey(target: tooltipParameterRef[i])
|
||||
tooltipParameterRef[i] = Tekkon.cnvPhonaToHanyuPinyin(target: tooltipParameterRef[i])
|
||||
tooltipParameterRef[i] = Tekkon.cnvHanyuPinyinToTextbookStyle(target: tooltipParameterRef[i])
|
||||
} else {
|
||||
tooltipParameterRef[i] = Tekkon.cnvZhuyinChainToTextbookReading(target: tooltipParameterRef[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -364,7 +376,7 @@ extension KeyHandler {
|
|||
|
||||
var composingBuffer = currentReadings.joined(separator: "-")
|
||||
if mgrPrefs.inlineDumpPinyinInLieuOfZhuyin {
|
||||
composingBuffer = restoreToneOneInZhuyinKey(target: composingBuffer) // 恢復陰平標記
|
||||
composingBuffer = Tekkon.restoreToneOneInZhuyinKey(target: composingBuffer) // 恢復陰平標記
|
||||
composingBuffer = Tekkon.cnvPhonaToHanyuPinyin(target: composingBuffer) // 注音轉拼音
|
||||
}
|
||||
|
||||
|
@ -398,12 +410,12 @@ extension KeyHandler {
|
|||
if let node = theAnchor.node {
|
||||
var key = node.key
|
||||
if mgrPrefs.inlineDumpPinyinInLieuOfZhuyin {
|
||||
key = restoreToneOneInZhuyinKey(target: key) // 恢復陰平標記
|
||||
key = Tekkon.restoreToneOneInZhuyinKey(target: key) // 恢復陰平標記
|
||||
key = Tekkon.cnvPhonaToHanyuPinyin(target: key) // 注音轉拼音
|
||||
key = Tekkon.cnvHanyuPinyinToTextbookStyle(target: key) // 轉教科書式標調
|
||||
key = key.replacingOccurrences(of: "-", with: " ")
|
||||
} else {
|
||||
key = cnvZhuyinKeyToTextbookReading(target: key, newSeparator: " ")
|
||||
key = Tekkon.cnvZhuyinChainToTextbookReading(target: key, newSeparator: " ")
|
||||
}
|
||||
|
||||
let value = node.currentKeyValue.value
|
||||
|
|
Loading…
Reference in New Issue