refactor :remove ad-hoc impl

This commit is contained in:
ensan-hcl
2025-07-14 22:55:29 -07:00
parent d787e88efd
commit 2b2329d50e
2 changed files with 4 additions and 32 deletions

View File

@ -213,31 +213,6 @@ public struct ComposingText: Sendable {
return (oldString.count - common.count, String(newString.dropFirst(common.count)))
}
/// input
/// TODO:
private mutating func updateInput(_ string: String, at inputCursorPosition: Int, inputStyle: InputStyle) {
if inputCursorPosition == 0 {
self.input.insert(contentsOf: string.map {InputElement(character: $0, inputStyle: inputStyle)}, at: inputCursorPosition)
return
}
let prev = self.input[inputCursorPosition - 1]
if inputStyle == .roman2kana && prev.inputStyle == inputStyle, let first = string.first, String(first).onlyRomanAlphabet {
if prev.character == first && !["a", "i", "u", "e", "o", "n"].contains(first) {
self.input[inputCursorPosition - 1] = InputElement(character: "", inputStyle: .direct)
self.input.insert(contentsOf: string.map {InputElement(character: $0, inputStyle: inputStyle)}, at: inputCursorPosition)
return
}
let n_prefix = self.input[0 ..< inputCursorPosition].suffix {$0.character == "n" && $0.inputStyle == .roman2kana}
if n_prefix.count % 2 == 1 && !["n", "a", "i", "u", "e", "o", "y"].contains(first)
&& self.input.dropLast(n_prefix.count).last != .init(character: "x", inputStyle: .roman2kana) {
self.input[inputCursorPosition - 1] = InputElement(character: "", inputStyle: .direct)
self.input.insert(contentsOf: string.map {InputElement(character: $0, inputStyle: inputStyle)}, at: inputCursorPosition)
return
}
}
self.input.insert(contentsOf: string.map {InputElement(character: $0, inputStyle: inputStyle)}, at: inputCursorPosition)
}
///
public mutating func insertAtCursorPosition(_ string: String, inputStyle: InputStyle) {
if string.isEmpty {
@ -246,7 +221,7 @@ public struct ComposingText: Sendable {
let inputCursorPosition = self.forceGetInputCursorPosition(target: self.convertTarget.prefix(convertTargetCursorPosition))
// input, convertTarget, convertTargetCursorPosition3
// input
self.updateInput(string, at: inputCursorPosition, inputStyle: inputStyle)
self.input.insert(contentsOf: string.map {InputElement(character: $0, inputStyle: inputStyle)}, at: inputCursorPosition)
let oldConvertTarget = self.convertTarget.prefix(self.convertTargetCursorPosition)
let newConvertTarget = Self.getConvertTarget(for: self.input.prefix(inputCursorPosition + string.count))

View File

@ -75,7 +75,7 @@ final class ComposingTextTests: XCTestCase {
sequentialInput(&c, sequence: "itte", inputStyle: .roman2kana)
XCTAssertEqual(c.input, [
ComposingText.InputElement(character: "i", inputStyle: .roman2kana),
ComposingText.InputElement(character: "", inputStyle: .direct),
ComposingText.InputElement(character: "t", inputStyle: .roman2kana),
ComposingText.InputElement(character: "t", inputStyle: .roman2kana),
ComposingText.InputElement(character: "e", inputStyle: .roman2kana)
])
@ -88,7 +88,7 @@ final class ComposingTextTests: XCTestCase {
sequentialInput(&c, sequence: "anta", inputStyle: .roman2kana)
XCTAssertEqual(c.input, [
ComposingText.InputElement(character: "a", inputStyle: .roman2kana),
ComposingText.InputElement(character: "", inputStyle: .direct),
ComposingText.InputElement(character: "n", inputStyle: .roman2kana),
ComposingText.InputElement(character: "t", inputStyle: .roman2kana),
ComposingText.InputElement(character: "a", inputStyle: .roman2kana)
])
@ -223,9 +223,6 @@ final class ComposingTextTests: XCTestCase {
sequentialInput(&c, sequence: "kyouhaiitenkida", inputStyle: .roman2kana)
let map = c.inputIndexToSurfaceIndexMap()
// Note: n""
XCTAssertEqual(c.input[10], .init(character: "", inputStyle: .direct))
XCTAssertEqual(map[0], 0) // ""
XCTAssertEqual(map[1], nil) // k
XCTAssertEqual(map[2], nil) // y
@ -237,7 +234,7 @@ final class ComposingTextTests: XCTestCase {
XCTAssertEqual(map[8], 6) // i
XCTAssertEqual(map[9], nil) // t
XCTAssertEqual(map[10], 7) // e
XCTAssertEqual(map[11], 8) // n // nnil
XCTAssertEqual(map[11], nil) // n
XCTAssertEqual(map[12], nil) // k
XCTAssertEqual(map[13], 9) // i
XCTAssertEqual(map[14], nil) // d