From bddbca64131e3396e8d352cd5cd4af6f1368fdbc Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sun, 27 Aug 2023 23:49:54 +0800 Subject: [PATCH] UOM // Fix an issue which generates wrecked trigram keys. --- .../SubLMs/lmUserOverride.swift | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmUserOverride.swift b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmUserOverride.swift index 3e5a1955..7a791aad 100644 --- a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmUserOverride.swift +++ b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmUserOverride.swift @@ -363,20 +363,24 @@ extension vChewingLM.LMUserOverride { } } - if arrNodes.count >= 2, - !kvPrevious.joinedKey().contains("_"), - kvPrevious.joinedKey().split(separator: "-").count == kvPrevious.value.count - { - kvPrevious = arrNodes[1].currentPair - readingStack = kvPrevious.joinedKey() + readingStack + func checkKeyValueValidityInThisContext(_ target: Megrez.KeyValuePaired) -> Bool { + !target.joinedKey().contains("_") && target.joinedKey().split(separator: "-").count == target.value.count } - if arrNodes.count >= 3, - !kvAnterior.joinedKey().contains("_"), - kvAnterior.joinedKey().split(separator: "-").count == kvAnterior.value.count - { - kvAnterior = arrNodes[2].currentPair - readingStack = kvAnterior.joinedKey() + readingStack + if arrNodes.count >= 2 { + let maybeKvPrevious = arrNodes[1].currentPair + if checkKeyValueValidityInThisContext(maybeKvPrevious) { + kvPrevious = maybeKvPrevious + readingStack = kvPrevious.joinedKey() + readingStack + } + } + + if arrNodes.count >= 3 { + let maybeKvAnterior = arrNodes[2].currentPair + if checkKeyValueValidityInThisContext(maybeKvAnterior) { + kvAnterior = maybeKvAnterior + readingStack = kvAnterior.joinedKey() + readingStack + } } return result