From d2d8d4ab58ca7ba1dd4366f1b9c4484ba03f24db Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 22 Oct 2022 13:34:27 +0800 Subject: [PATCH] LMCassette // Handle delimiters consisting of multiple spaces. --- .../LangModelAssembly/SubLMs/lmCassette.swift | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmCassette.swift b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmCassette.swift index f86ac546..c32b2147 100644 --- a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmCassette.swift +++ b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/SubLMs/lmCassette.swift @@ -75,16 +75,22 @@ extension vChewingLM { var loadingKeys = false var loadingCharDefinitions = false var loadingOctagramData = false - for (_, strLine) in lineReader.enumerated() { - if !loadingKeys, strLine.contains("%keyname begin") { loadingKeys = true } - if loadingKeys, strLine.contains("%keyname end") { loadingKeys = false } - if !loadingCharDefinitions, strLine.contains("%chardef begin") { loadingCharDefinitions = true } - if loadingCharDefinitions, strLine.contains("%chardef end") { + for strLine in lineReader { + if !loadingKeys, strLine.contains("%keyname"), strLine.contains("begin") { loadingKeys = true } + if loadingKeys, strLine.contains("%keyname"), strLine.contains("end") { loadingKeys = false } + if !loadingCharDefinitions, strLine.contains("%chardef"), strLine.contains("begin") { + loadingCharDefinitions = true + } + if loadingCharDefinitions, strLine.contains("%chardef"), strLine.contains("end") { loadingCharDefinitions = false if charDefMap.keys.contains(wildcardKey) { wildcardKey = "" } } - if !loadingOctagramData, strLine.contains("%octagram begin") { loadingOctagramData = true } - if loadingOctagramData, strLine.contains("%octagram end") { loadingOctagramData = false } + if !loadingOctagramData, strLine.contains("%octagram"), strLine.contains("begin") { + loadingOctagramData = true + } + if loadingOctagramData, strLine.contains("%octagram"), strLine.contains("end") { + loadingOctagramData = false + } let cells: [String.SubSequence] = strLine.contains("\t") ? strLine.split(separator: "\t") : strLine.split(separator: " ") guard cells.count >= 2 else { continue }