Repo // Using map(\.description) in lieu of charComponents().

This commit is contained in:
ShikiSuen 2023-02-10 21:24:18 +08:00
parent 7beb6d3cd2
commit 18bdf80afd
15 changed files with 32 additions and 45 deletions

View File

@ -27,16 +27,6 @@ fileprivate extension String {
}
}
// MARK: - String charComponents Extension
public extension String {
var charComponents: [String] { map { String($0) } }
}
public extension Array where Element == String.Element {
var charComponents: [String] { map { String($0) } }
}
// MARK: - StringView Ranges Extension (by Isaac Xen)
fileprivate extension String {
@ -717,7 +707,7 @@ func healthCheck(_ data: [Unigram]) -> String {
break outerMatchCheck
}
innerMatchCheck: if checkPerCharMachingStatus {
let char = neta.value.charComponents[i]
let char = neta.value.map(\.description)[i]
if exceptedChars.contains(char) { break innerMatchCheck }
guard let queriedPhones = mapReverseLookupForCheck[char] else {
bad = true

View File

@ -315,7 +315,7 @@ extension CandidatePool {
}
} else {
for (i, neta) in candidateRow.enumerated() {
neta.key = selectionKeys.map { String($0) }[i]
neta.key = selectionKeys.map(\.description)[i]
}
}
}
@ -349,7 +349,7 @@ extension CandidatePool {
} else {
for (i, neta) in candidateColumn.enumerated() {
if neta.key.isEmpty { continue }
neta.key = selectionKeys.map { String($0) }[i]
neta.key = selectionKeys.map(\.description)[i]
}
}
}

View File

@ -329,7 +329,7 @@ public extension vChewingLM {
// rawUserUnigrams
rawAllUnigrams += lmUserPhrases.unigramsFor(key: keyChain).reversed()
if !isCassetteEnabled || isCassetteEnabled && keyChain.charComponents[0] == "_" {
if !isCassetteEnabled || isCassetteEnabled && keyChain.map(\.description)[0] == "_" {
// LMMisc LMCore score (-10.0, 0.0)
rawAllUnigrams += lmMisc.unigramsFor(key: keyChain)
rawAllUnigrams += lmCore.unigramsFor(key: keyChain)

View File

@ -107,7 +107,7 @@ public extension vChewingLM {
theMaxKeyLength = max(theMaxKeyLength, cells[0].count)
charDefMap[strFirstCell, default: []].append(strSecondCell)
reverseLookupMap[strSecondCell, default: []].append(strFirstCell)
var keyComps = strFirstCell.charComponents
var keyComps = strFirstCell.map(\.description)
while !keyComps.isEmpty {
keyComps.removeLast()
charDefWildcardMap[keyComps.joined() + wildcard, default: []].append(strSecondCell)
@ -138,10 +138,10 @@ public extension vChewingLM {
if nameCJK.isEmpty, strLine.contains("%cname ") { nameCJK = strSecondCell }
if nameShort.isEmpty, strLine.contains("%sname ") { nameShort = strSecondCell }
if selectionKeys.isEmpty, strLine.contains("%selkey ") {
selectionKeys = cells[1].map { String($0) }.deduplicated
selectionKeys = cells[1].map(\.description).deduplicated
}
if endKeys.isEmpty, strLine.contains("%endkey ") {
endKeys = cells[1].map { String($0) }.deduplicated
endKeys = cells[1].map(\.description).deduplicated
}
if wildcardKey.isEmpty, strLine.contains("%wildcardkey ") {
wildcardKey = cells[1].first?.description ?? ""

View File

@ -61,7 +61,7 @@ public extension vChewingLM {
public func valuesFor(key: String) -> [String] {
var pairs: [String] = []
if let arrRangeRecords: String = dataMap[key]?.trimmingCharacters(in: .newlines) {
pairs.append(contentsOf: arrRangeRecords.map { String($0) })
pairs.append(contentsOf: arrRangeRecords.map(\.description))
}
return pairs.deduplicated
}

View File

@ -259,7 +259,7 @@ extension Megrez.Compositor {
func getJoinedKeyArray(range: Range<Int>) -> [String] {
// contains macOS 13 Ventura
guard range.upperBound <= keys.count, range.lowerBound >= 0 else { return [] }
return keys[range].map { String($0) }
return keys[range].map(\.description)
}
///

View File

@ -25,16 +25,6 @@ public extension RangeReplaceableCollection where Element: Hashable {
}
}
// MARK: - String charComponents Extension
public extension String {
var charComponents: [String] { map { String($0) } }
}
public extension Array where Element == String.Element {
var charComponents: [String] { map { String($0) } }
}
// MARK: - String Tildes Expansion Extension
public extension String {

View File

@ -32,10 +32,10 @@ public enum ChineseConverter {
// JIS
private static func processKanjiRepeatSymbol(target: inout String) {
guard !target.isEmpty else { return }
var arr = target.charComponents
var arr = target.map(\.description)
for (i, char) in arr.enumerated() {
if i == 0 { continue }
if char == target.charComponents[i - 1] {
if char == target.map(\.description)[i - 1] {
arr[i] = ""
}
}

View File

@ -62,11 +62,11 @@ public struct IMEStateData: IMEStateDataProtocol {
/// Swift.utf16NSString.length()
///
public var u16Cursor: Int {
displayedText.charComponents[0 ..< cursor].joined().utf16.count
displayedText.map(\.description)[0 ..< cursor].joined().utf16.count
}
public var u16Marker: Int {
displayedText.charComponents[0 ..< marker].joined().utf16.count
displayedText.map(\.description)[0 ..< marker].joined().utf16.count
}
public var u16MarkedRange: Range<Int> {
@ -170,7 +170,7 @@ public struct IMEStateData: IMEStateDataProtocol {
public extension IMEStateData {
var doesUserPhraseExist: Bool {
let text = displayedText.charComponents[markedRange].joined()
let text = displayedText.map(\.description)[markedRange].joined()
let joined = markedReadings.joined(separator: InputHandler.keySeparator)
return LMMgr.checkIfUserPhraseExist(
userPhrase: text, mode: IMEApp.currentInputMode, key: joined
@ -207,7 +207,7 @@ public extension IMEStateData {
var userPhraseKVPair: (String, String) {
let key = markedReadings.joined(separator: InputHandler.keySeparator)
let value = displayedText.charComponents[markedRange].joined()
let value = displayedText.map(\.description)[markedRange].joined()
return (key, value)
}

View File

@ -255,7 +255,7 @@ public class InputHandler: InputHandlerProtocol {
position += currentNode.keyArray.count
continue
}
let values = currentNode.currentPair.value.charComponents
let values = currentNode.currentPair.value.map(\.description)
for (subPosition, key) in currentNode.keyArray.enumerated() {
guard values.count > subPosition else { break } //
let thePair = Megrez.Compositor.KeyValuePaired(
@ -447,7 +447,7 @@ public class InputHandler: InputHandlerProtocol {
if compositor.cursor == 0 { return nil }
let cursorPrevious = max(compositor.cursor - 1, 0)
let rawData = compositor.keys[cursorPrevious]
let components = rawData.charComponents
let components = rawData.map(\.description)
var hasIntonation = false
for neta in components {
if !Tekkon.allowedPhonabets.contains(neta) || neta == " " { return nil }
@ -473,7 +473,7 @@ public class InputHandler: InputHandlerProtocol {
return composer.getInlineCompositionForDisplay(isHanyuPinyin: prefs.showHanyuPinyinInCompositionBuffer)
}
if !prefs.showTranslatedStrokesInCompositionBuffer { return calligrapher }
return calligrapher.charComponents.map {
return calligrapher.map(\.description).map {
currentLM.convertCassetteKeyToDisplay(char: $0)
}.joined()
}
@ -534,7 +534,7 @@ extension InputHandler {
textToCommit += node.currentPair.value
} else {
delta = min(delta, node.keyArray.count)
textToCommit += node.currentPair.value.charComponents[0 ..< delta].joined()
textToCommit += node.currentPair.value.map(\.description)[0 ..< delta].joined()
}
let newCursor = max(compositor.cursor - delta, 0)
compositor.cursor = 0

View File

@ -133,7 +133,7 @@ extension InputHandler {
let selectionKeys = delegate.selectionKeys
for j in 0 ..< selectionKeys.count {
let label = selectionKeys.charComponents[j]
let label = selectionKeys.map(\.description)[j]
if match.compare(label, options: .caseInsensitive, range: nil, locale: .current) == .orderedSame {
index = j
break

View File

@ -47,7 +47,7 @@ extension InputHandler {
// prevReading 調調
guard let prevReading = previousParsableReading, isIntonationKey(input) else { break proc }
var theComposer = composer
prevReading.0.charComponents.forEach { theComposer.receiveKey(fromPhonabet: $0) }
prevReading.0.map(\.description).forEach { theComposer.receiveKey(fromPhonabet: $0) }
// 調調
let oldIntonation: Tekkon.Phonabet = theComposer.intonation
theComposer.receiveKey(fromString: input.text)

View File

@ -300,7 +300,7 @@ extension InputHandler {
var displayedText = state.displayedText
if input.modifierFlags == [.option, .shift] {
displayedText = displayedText.charComponents.joined(separator: " ")
displayedText = displayedText.map(\.description).joined(separator: " ")
} else if readingOnly {
displayedText = commissionByCtrlCommandEnter()
} else if input.isCommandHold, input.isControlHold {
@ -426,7 +426,7 @@ extension InputHandler {
// prevReading 調調
compositor.dropKey(direction: .rear)
walk() // Walk walk
prevReading.1.charComponents.forEach { composer.receiveKey(fromPhonabet: $0) }
prevReading.1.map(\.description).forEach { composer.receiveKey(fromPhonabet: $0) }
}
delegate.switchState(generateStateOfInputting())
return true

View File

@ -22,7 +22,14 @@ extension CandidateNode {
switch fieldSlice.count {
case 1: arrMembers.append(.init(name: String(fieldSlice[0])))
case 2:
arrMembers.append(.init(name: String(fieldSlice[0]), symbols: .init(fieldSlice[1].map { String($0) })))
arrMembers.append(
.init(
name: String(fieldSlice[0]),
symbols: .init(
fieldSlice[1].map(\.description)
)
)
)
default: break
}
}

View File

@ -161,7 +161,7 @@ class FrmRevLookupWindow: NSWindow {
strBuilder.append("Char\tReading(s)\n".localized)
strBuilder.append("==\t====\n")
var i = 0
theLoop: for char in input.charComponents {
theLoop: for char in input.map(\.description) {
if i == 15 {
strBuilder.append("Maximum 15 results returnable.".localized + "\n")
break theLoop