UOM // Fix the processing of convertKeyFrom().

This commit is contained in:
ShikiSuen 2022-06-20 23:04:50 +08:00
parent ee7e7870b4
commit 282144be88
1 changed files with 10 additions and 9 deletions

View File

@ -159,24 +159,25 @@ extension vChewing {
walkedNodes: [Megrez.NodeAnchor], cursorIndex: Int walkedNodes: [Megrez.NodeAnchor], cursorIndex: Int
) -> String { ) -> String {
let arrEndingPunctuation = ["", "", "", "", "", "", "", ""] let arrEndingPunctuation = ["", "", "", "", "", "", "", ""]
var arrNodesReversed: [Megrez.NodeAnchor] = [] var arrNodes: [Megrez.NodeAnchor] = []
var intLength = 0 var intLength = 0
for theNodeAnchor in walkedNodes { for theNodeAnchor in walkedNodes {
// .reverse() arrNodes.append(theNodeAnchor)
arrNodesReversed = [theNodeAnchor] + arrNodesReversed
intLength += theNodeAnchor.spanningLength intLength += theNodeAnchor.spanningLength
if intLength >= cursorIndex { if intLength >= cursorIndex {
break break
} }
} }
if arrNodesReversed.isEmpty { return "" } if arrNodes.isEmpty { return "" }
arrNodes = Array(arrNodes.reversed())
var strCurrent = "()" var strCurrent = "()"
var strPrevious = "()" var strPrevious = "()"
var strAnterior = "()" var strAnterior = "()"
guard let kvCurrent = arrNodesReversed[0].node?.currentKeyValue, guard let kvCurrent = arrNodes[0].node?.currentKeyValue,
!arrEndingPunctuation.contains(kvCurrent.value) !arrEndingPunctuation.contains(kvCurrent.value)
else { else {
return "" return ""
@ -185,15 +186,15 @@ extension vChewing {
// //
strCurrent = kvCurrent.key strCurrent = kvCurrent.key
if arrNodesReversed.count >= 2, if arrNodes.count >= 2,
let kvPrevious = arrNodesReversed[1].node?.currentKeyValue, let kvPrevious = arrNodes[1].node?.currentKeyValue,
!arrEndingPunctuation.contains(kvPrevious.value) !arrEndingPunctuation.contains(kvPrevious.value)
{ {
strPrevious = "(\(kvPrevious.key),\(kvPrevious.value))" strPrevious = "(\(kvPrevious.key),\(kvPrevious.value))"
} }
if arrNodesReversed.count >= 3, if arrNodes.count >= 3,
let kvAnterior = arrNodesReversed[2].node?.currentKeyValue, let kvAnterior = arrNodes[2].node?.currentKeyValue,
!arrEndingPunctuation.contains(kvAnterior.value) !arrEndingPunctuation.contains(kvAnterior.value)
{ {
strAnterior = "(\(kvAnterior.key),\(kvAnterior.value))" strAnterior = "(\(kvAnterior.key),\(kvAnterior.value))"