diff --git a/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_SyllableComposer.swift b/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_SyllableComposer.swift index a20d4c24..b17478c2 100644 --- a/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_SyllableComposer.swift +++ b/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_SyllableComposer.swift @@ -55,7 +55,7 @@ extension Tekkon { switch isHanyuPinyin { case false: // 注音輸出的場合 let valReturnZhuyin = value.replacingOccurrences(of: " ", with: "") - return isTextBookStyle ? cnvZhuyinChainToTextbookReading(targetJoined: valReturnZhuyin) : valReturnZhuyin + return isTextBookStyle ? cnvPhonaToTextbookReading(target: valReturnZhuyin) : valReturnZhuyin case true: // 拼音輸出的場合 let valReturnPinyin = Tekkon.cnvPhonaToHanyuPinyin(targetJoined: value) return isTextBookStyle ? Tekkon.cnvHanyuPinyinToTextbookStyle(targetJoined: valReturnPinyin) : valReturnPinyin diff --git a/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_Utilities.swift b/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_Utilities.swift index a4d4e8a7..f106982d 100644 --- a/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_Utilities.swift +++ b/Packages/vChewing_Tekkon/Sources/Tekkon/Tekkon_Utilities.swift @@ -13,7 +13,7 @@ extension Tekkon { /// 注音轉拼音,要求陰平必須是空格。 /// - Parameters: - /// - target: 傳入的 String 對象物件。 + /// - targetJoined: 傳入的 String 對象物件。 public static func cnvPhonaToHanyuPinyin(targetJoined: String) -> String { var targetConverted = targetJoined for pair in arrPhonaToHanyuPinyin { @@ -35,42 +35,32 @@ extension Tekkon { /// 該函式負責將注音轉為教科書印刷的方式(先寫輕聲)。 /// - Parameters: - /// - target: 要拿來做轉換處理的讀音鏈,以英文減號來分隔每個讀音。 - /// - newSeparator: 新的讀音分隔符。 - /// - Returns: 經過轉換處理的讀音鏈。 - public static func cnvZhuyinChainToTextbookReading(targetJoined: String, newSeparator: String = "-") -> String { - var arrReturn: [String] = [] - for neta in targetJoined.split(separator: "-") { - var newString = String(neta) - if String(neta.reversed()[0]) == "˙" { - newString = String(neta.dropLast()) - newString.insert("˙", at: newString.startIndex) - } - arrReturn.append(newString) + /// - target: 要拿來做轉換處理的讀音。 + /// - Returns: 經過轉換處理的讀音。 + public static func cnvPhonaToTextbookReading(target: String) -> String { + var newString = target + if String(target.reversed()[0]) == "˙" { + newString = String(target.dropLast()) + newString.insert("˙", at: newString.startIndex) } - return arrReturn.joined(separator: newSeparator) + return newString } /// 該函式用來恢復注音當中的陰平聲調,恢復之後會以「1」表示陰平。 /// - Parameters: - /// - target: 要拿來做轉換處理的讀音鏈,以英文減號來分隔每個讀音。 - /// - newSeparator: 新的讀音分隔符。 - /// - Returns: 經過轉換處理的讀音鏈。 - public static func restoreToneOneInZhuyinKey(targetJoined: String, newSeparator: String = "-") -> String { - var arrReturn: [String] = [] - for neta in targetJoined.split(separator: "-") { - var newNeta = String(neta) - if !"ˊˇˋ˙".contains(String(neta.reversed()[0])), !neta.contains("_") { - newNeta += "1" - } - arrReturn.append(newNeta) - } - return arrReturn.joined(separator: newSeparator) + /// - target: 要拿來做轉換處理的讀音。 + /// - Returns: 經過轉換處理的讀音。 + public static func restoreToneOneInPhona( + target: String + ) -> String { + var newNeta = target + if !"ˊˇˋ˙".contains(String(target.reversed()[0])), !target.contains("_") { newNeta += "1" } + return newNeta } /// 該函式用來將漢語拼音轉為注音。 /// - Parameters: - /// - target: 要轉換的漢語拼音內容,要求必須帶有 12345 數字標調。 + /// - targetJoined: 要轉換的漢語拼音內容,要求必須帶有 12345 數字標調。 /// - newToneOne: 對陰平指定新的標記。預設情況下該標記為空字串。 /// - Returns: 轉換結果。 public static func cnvHanyuPinyinToPhona(targetJoined: String, newToneOne: String = "") -> String { diff --git a/Packages/vChewing_Tekkon/Tests/TekkonTests/BasicTests.swift b/Packages/vChewing_Tekkon/Tests/TekkonTests/BasicTests.swift index c60f3e45..ad27ce26 100644 --- a/Packages/vChewing_Tekkon/Tests/TekkonTests/BasicTests.swift +++ b/Packages/vChewing_Tekkon/Tests/TekkonTests/BasicTests.swift @@ -167,8 +167,8 @@ final class TekkonTestsBasic: XCTestCase { XCTAssertEqual(composer.getComposition(), "ㄩㄝ") // Testing tool functions - XCTAssertEqual(Tekkon.restoreToneOneInZhuyinKey(targetJoined: "ㄉㄧㄠ"), "ㄉㄧㄠ1") - XCTAssertEqual(Tekkon.cnvZhuyinChainToTextbookReading(targetJoined: "ㄊㄧㄥ-ㄓㄜ˙"), "ㄊㄧㄥ-˙ㄓㄜ") + XCTAssertEqual(Tekkon.restoreToneOneInPhona(target: "ㄉㄧㄠ"), "ㄉㄧㄠ1") + XCTAssertEqual(Tekkon.cnvPhonaToTextbookReading(target: "ㄓㄜ˙"), "˙ㄓㄜ") XCTAssertEqual(Tekkon.cnvHanyuPinyinToPhona(targetJoined: "bian4-le5-tian1"), "ㄅㄧㄢˋ-ㄌㄜ˙-ㄊㄧㄢ") // 測試這種情形:「如果傳入的字串不包含任何半形英數內容的話,那麼應該直接將傳入的字串原樣返回」。 XCTAssertEqual(Tekkon.cnvHanyuPinyinToPhona(targetJoined: "ㄅㄧㄢˋ-˙ㄌㄜ-ㄊㄧㄢ"), "ㄅㄧㄢˋ-˙ㄌㄜ-ㄊㄧㄢ")