LMAssoc. // Optimize key conversion process.
This commit is contained in:
parent
042f96d73d
commit
4cc105b257
|
@ -42,6 +42,15 @@ extension vChewing {
|
||||||
!rangeMap.isEmpty
|
!rangeMap.isEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal func cnvNgramKeyFromPinyinToPhona(target: String) -> String {
|
||||||
|
guard target.contains("("), target.contains(","), target.contains(")") else {
|
||||||
|
return target
|
||||||
|
}
|
||||||
|
let arrTarget = target.dropLast().dropFirst().split(separator: ",")
|
||||||
|
guard arrTarget.count == 2 else { return target }
|
||||||
|
return "(\(Tekkon.cnvHanyuPinyinToPhona(target: String(arrTarget[0]))),\(arrTarget[1]))"
|
||||||
|
}
|
||||||
|
|
||||||
@discardableResult public mutating func open(_ path: String) -> Bool {
|
@discardableResult public mutating func open(_ path: String) -> Bool {
|
||||||
if isLoaded() {
|
if isLoaded() {
|
||||||
return false
|
return false
|
||||||
|
@ -60,7 +69,7 @@ extension vChewing {
|
||||||
if !theKey.isEmpty, theKey.first != "#" {
|
if !theKey.isEmpty, theKey.first != "#" {
|
||||||
for (i, _) in neta.filter({ $0.first != "#" && !$0.isEmpty }).enumerated() {
|
for (i, _) in neta.filter({ $0.first != "#" && !$0.isEmpty }).enumerated() {
|
||||||
if i == 0 { continue }
|
if i == 0 { continue }
|
||||||
rangeMap[theKey, default: []].append(($0, i))
|
rangeMap[cnvNgramKeyFromPinyinToPhona(target: theKey), default: []].append(($0, i))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,8 +111,6 @@ extension vChewing {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func valuesFor(pair: Megrez.KeyValuePaired) -> [String] {
|
public func valuesFor(pair: Megrez.KeyValuePaired) -> [String] {
|
||||||
var pairPinyin = pair
|
|
||||||
pairPinyin.key = Tekkon.cnvPhonaToHanyuPinyin(target: pairPinyin.key)
|
|
||||||
var pairs: [String] = []
|
var pairs: [String] = []
|
||||||
if let arrRangeRecords: [(Range<String.Index>, Int)] = rangeMap[pair.toNGramKey] {
|
if let arrRangeRecords: [(Range<String.Index>, Int)] = rangeMap[pair.toNGramKey] {
|
||||||
for (netaRange, index) in arrRangeRecords {
|
for (netaRange, index) in arrRangeRecords {
|
||||||
|
@ -112,13 +119,6 @@ extension vChewing {
|
||||||
pairs.append(theValue)
|
pairs.append(theValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let arrRangeRecords: [(Range<String.Index>, Int)] = rangeMap[pairPinyin.toNGramKey] {
|
|
||||||
for (netaRange, index) in arrRangeRecords {
|
|
||||||
let neta = strData[netaRange].split(separator: " ")
|
|
||||||
let theValue: String = .init(neta[index])
|
|
||||||
pairs.append(theValue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if let arrRangeRecords: [(Range<String.Index>, Int)] = rangeMap[pair.value] {
|
if let arrRangeRecords: [(Range<String.Index>, Int)] = rangeMap[pair.value] {
|
||||||
for (netaRange, index) in arrRangeRecords {
|
for (netaRange, index) in arrRangeRecords {
|
||||||
let neta = strData[netaRange].split(separator: " ")
|
let neta = strData[netaRange].split(separator: " ")
|
||||||
|
|
Loading…
Reference in New Issue