diff --git a/Source/Modules/ControllerModules/InputState.swift b/Source/Modules/ControllerModules/InputState.swift index e5735965..e76d3608 100644 --- a/Source/Modules/ControllerModules/InputState.swift +++ b/Source/Modules/ControllerModules/InputState.swift @@ -490,8 +490,8 @@ public enum InputState { return cursorIndexU8.. subPosition else { break } // 防呆,應該沒有發生的可能性 let thePair = Megrez.Compositor.Candidate( diff --git a/Source/Modules/ControllerModules/KeyHandler_States.swift b/Source/Modules/ControllerModules/KeyHandler_States.swift index f39757bd..0c1166dc 100644 --- a/Source/Modules/ControllerModules/KeyHandler_States.swift +++ b/Source/Modules/ControllerModules/KeyHandler_States.swift @@ -30,7 +30,7 @@ extension KeyHandler { /// 這樣就可以免除不必要的類型轉換。 for theNode in compositor.walkedNodes { let strNodeValue = theNode.value - let arrSplit: [String] = Array(strNodeValue).map { String($0) } + let arrSplit: [String] = Array(strNodeValue).charComponents let codepointCount = arrSplit.count /// 藉下述步驟重新將「可見游標位置」對齊至「組字器內的游標所在的讀音位置」。 /// 每個節錨(NodeAnchor)都有自身的幅位長度(spanningLength),可以用來 diff --git a/Source/Modules/LangModelRelated/SubLMs/lmPlainBopomofo.swift b/Source/Modules/LangModelRelated/SubLMs/lmPlainBopomofo.swift index 6a689e5c..e0114bf7 100644 --- a/Source/Modules/LangModelRelated/SubLMs/lmPlainBopomofo.swift +++ b/Source/Modules/LangModelRelated/SubLMs/lmPlainBopomofo.swift @@ -58,7 +58,7 @@ extension vChewing { public func valuesFor(key: String) -> [String] { var pairs: [String] = [] if let arrRangeRecords: String = rangeMap[key] { - pairs.append(contentsOf: arrRangeRecords.map { String($0) }) + pairs.append(contentsOf: arrRangeRecords.charComponents) } var set = Set() return pairs.filter { set.insert($0).inserted } diff --git a/vChewingTests/KeyHandlerTestsNormalCHS.swift b/vChewingTests/KeyHandlerTestsNormalCHS.swift index 9600ee12..832c8bd3 100644 --- a/vChewingTests/KeyHandlerTestsNormalCHS.swift +++ b/vChewingTests/KeyHandlerTestsNormalCHS.swift @@ -467,9 +467,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testInvalidBpmf() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("eul4").map { - String($0) - } + let keys = Array("eul4").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -482,9 +480,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testInputting() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("18 m,45j/ fu. g0 xup6xu;6").map { - String($0) - } + let keys = Array("18 m,45j/ fu. g0 xup6xu;6").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -500,9 +496,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testInputtingNihao() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -518,9 +512,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testInputtingTianKong() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("wu0 dj/ ").map { - String($0) - } + let keys = Array("wu0 dj/ ").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -536,9 +528,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testCommittingNihao() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -580,9 +570,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testDelete() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -662,9 +650,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testBackspaceToDeleteReading() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su").map { - String($0) - } + let keys = Array("su").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -696,9 +682,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testBackspaceAtBegin() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -739,9 +723,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testBackspaceToDeleteReadingWithText() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl").map { - String($0) - } + let keys = Array("su3cl").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -777,9 +759,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testBackspace() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -818,9 +798,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testCursorWithReading() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl").map { - String($0) - } + let keys = Array("su3cl").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -855,9 +833,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testCursor() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -948,9 +924,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testCandidateWithDown() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3").map { - String($0) - } + let keys = Array("su3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -985,9 +959,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { let enabled = mgrPrefs.chooseCandidateUsingSpace mgrPrefs.chooseCandidateUsingSpace = true var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3").map { - String($0) - } + let keys = Array("su3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1023,9 +995,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { let enabled = mgrPrefs.chooseCandidateUsingSpace mgrPrefs.chooseCandidateUsingSpace = false var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3").map { - String($0) - } + let keys = Array("su3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: InputState.Empty()) { newState in @@ -1079,9 +1049,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { let enabled = mgrPrefs.chooseCandidateUsingSpace mgrPrefs.chooseCandidateUsingSpace = false var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1117,9 +1085,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testHomeAndEnd() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1191,9 +1157,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testHomeAndEndWithReading() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl").map { - String($0) - } + let keys = Array("su3cl").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1245,9 +1209,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testMarkingLeftAtBegin() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1279,9 +1241,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testMarkingRightAtEnd() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1304,9 +1264,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testMarkingLeft() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1371,9 +1329,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testMarkingRight() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1455,9 +1411,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { func testCancelMarking() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl3").map { - String($0) - } + let keys = Array("su3cl3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1503,9 +1457,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { let enabled = mgrPrefs.escToCleanInputBuffer mgrPrefs.escToCleanInputBuffer = false var state: InputStateProtocol = InputState.Empty() - let keys = Array("su").map { - String($0) - } + let keys = Array("su").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1535,9 +1487,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { let enabled = mgrPrefs.escToCleanInputBuffer mgrPrefs.escToCleanInputBuffer = false var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl").map { - String($0) - } + let keys = Array("su3cl").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in @@ -1571,9 +1521,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase { let enabled = mgrPrefs.escToCleanInputBuffer mgrPrefs.escToCleanInputBuffer = true var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3cl").map { - String($0) - } + let keys = Array("su3cl").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalTyping: false) _ = handler.handle(input: input, state: state) { newState in diff --git a/vChewingTests/KeyHandlerTestsSCPCCHT.swift b/vChewingTests/KeyHandlerTestsSCPCCHT.swift index 4c1fd5f3..a3daf0e4 100644 --- a/vChewingTests/KeyHandlerTestsSCPCCHT.swift +++ b/vChewingTests/KeyHandlerTestsSCPCCHT.swift @@ -190,9 +190,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase { func testInputNi() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su").map { - String($0) - } + let keys = Array("su").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: []) _ = handler.handle(input: input, state: state) { newState in @@ -209,9 +207,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase { func testInputNi3() { var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3").map { - String($0) - } + let keys = Array("su3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: []) _ = handler.handle(input: input, state: state) { newState in @@ -230,9 +226,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase { func testCancelCandidateUsingDelete() { mgrPrefs.useSCPCTypingMode = true var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3").map { - String($0) - } + let keys = Array("su3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: []) _ = handler.handle(input: input, state: state) { newState in @@ -257,9 +251,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase { func testCancelCandidateUsingEsc() { mgrPrefs.useSCPCTypingMode = true var state: InputStateProtocol = InputState.Empty() - let keys = Array("su3").map { - String($0) - } + let keys = Array("su3").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: []) _ = handler.handle(input: input, state: state) { newState in @@ -285,9 +277,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase { mgrPrefs.useSCPCTypingMode = true handler.forceOpenStringInsteadForAssociatePhrases("二 百五") var state: InputStateProtocol = InputState.Empty() - let keys = Array("-41").map { - String($0) - } + let keys = Array("-41").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: []) _ = handler.handle(input: input, state: state) { newState in @@ -308,9 +298,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase { let enabled = mgrPrefs.associatedPhrasesEnabled mgrPrefs.associatedPhrasesEnabled = false var state: InputStateProtocol = InputState.Empty() - let keys = Array("aul ").map { - String($0) - } + let keys = Array("aul ").charComponents for key in keys { let input = InputSignal(inputText: key, keyCode: 0, charCode: charCode(key), flags: []) _ = handler.handle(input: input, state: state) { newState in