UOM // Lambda-escaping all mgrLM calls.

This commit is contained in:
ShikiSuen 2022-07-23 23:29:26 +08:00
parent 728dedbf53
commit be57740d2d
3 changed files with 9 additions and 8 deletions

View File

@ -188,7 +188,7 @@ class KeyHandler {
// //
currentUOM.observe( currentUOM.observe(
walkedAnchors: walkedAnchors, cursorIndex: adjustedCursor, candidate: theCandidate.value, walkedAnchors: walkedAnchors, cursorIndex: adjustedCursor, candidate: theCandidate.value,
timestamp: NSDate().timeIntervalSince1970 timestamp: NSDate().timeIntervalSince1970, saveCallback: { mgrLangModel.saveUserOverrideModelData() }
) )
} }
} }

View File

@ -44,7 +44,8 @@ extension vChewing {
walkedAnchors: [Megrez.NodeAnchor], walkedAnchors: [Megrez.NodeAnchor],
cursorIndex: Int, cursorIndex: Int,
candidate: String, candidate: String,
timestamp: Double timestamp: Double,
saveCallback: @escaping () -> Void
) { ) {
let key = convertKeyFrom(walkedAnchors: walkedAnchors, cursorIndex: cursorIndex) let key = convertKeyFrom(walkedAnchors: walkedAnchors, cursorIndex: cursorIndex)
guard !key.isEmpty else { return } guard !key.isEmpty else { return }
@ -64,7 +65,7 @@ extension vChewing {
mutLRUList.removeLast() mutLRUList.removeLast()
} }
IME.prtDebugIntel("UOM: Observation finished with new observation: \(key)") IME.prtDebugIntel("UOM: Observation finished with new observation: \(key)")
mgrLangModel.saveUserOverrideModelData() saveCallback()
return return
} }
if var theNeta = mutLRUMap[key] { if var theNeta = mutLRUMap[key] {
@ -72,7 +73,7 @@ extension vChewing {
mutLRUList.insert(theNeta, at: 0) mutLRUList.insert(theNeta, at: 0)
mutLRUMap[key] = theNeta mutLRUMap[key] = theNeta
IME.prtDebugIntel("UOM: Observation finished with existing observation: \(key)") IME.prtDebugIntel("UOM: Observation finished with existing observation: \(key)")
mgrLangModel.saveUserOverrideModelData() saveCallback()
} }
} }
@ -270,13 +271,13 @@ extension vChewing.LMUserOverride {
extension vChewing.LMUserOverride { extension vChewing.LMUserOverride {
/// LRU /// LRU
public func bleachUnigrams() { public func bleachUnigrams(saveCallback: @escaping () -> Void) {
for key in mutLRUMap.keys { for key in mutLRUMap.keys {
if !key.contains("(),()") { continue } if !key.contains("(),()") { continue }
mutLRUMap.removeValue(forKey: key) mutLRUMap.removeValue(forKey: key)
} }
resetMRUList() resetMRUList()
mgrLangModel.saveUserOverrideModelData() saveCallback()
} }
internal func resetMRUList() { internal func resetMRUList() {

View File

@ -492,9 +492,9 @@ enum mgrLangModel {
static func removeUnigramsFromUserOverrideModel(_ mode: InputMode) { static func removeUnigramsFromUserOverrideModel(_ mode: InputMode) {
switch mode { switch mode {
case .imeModeCHS: case .imeModeCHS:
gUserOverrideModelCHT.bleachUnigrams() gUserOverrideModelCHT.bleachUnigrams(saveCallback: { mgrLangModel.saveUserOverrideModelData() })
case .imeModeCHT: case .imeModeCHT:
gUserOverrideModelCHS.bleachUnigrams() gUserOverrideModelCHS.bleachUnigrams(saveCallback: { mgrLangModel.saveUserOverrideModelData() })
case .imeModeNULL: case .imeModeNULL:
break break
} }