From 9a369a71cc5888f0e4845e87f555857c70547f43 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 9 Jul 2022 12:41:41 +0800 Subject: [PATCH] KeyHandler // Ensure textbook reading display in tooltip. --- .../ControllerModules/KeyHandler_Core.swift | 35 ------------------- .../ControllerModules/KeyHandler_States.swift | 18 ++++++++-- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/Source/Modules/ControllerModules/KeyHandler_Core.swift b/Source/Modules/ControllerModules/KeyHandler_Core.swift index 0cdf9c6a..28c1d288 100644 --- a/Source/Modules/ControllerModules/KeyHandler_Core.swift +++ b/Source/Modules/ControllerModules/KeyHandler_Core.swift @@ -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). /// 組字器是否為空。 diff --git a/Source/Modules/ControllerModules/KeyHandler_States.swift b/Source/Modules/ControllerModules/KeyHandler_States.swift index c8334146..affc3bc3 100644 --- a/Source/Modules/ControllerModules/KeyHandler_States.swift +++ b/Source/Modules/ControllerModules/KeyHandler_States.swift @@ -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