LMCandidateNode // Use GCD on load.

This commit is contained in:
ShikiSuen 2022-09-21 00:31:09 +08:00
parent 9a58893585
commit d3668d9f0b
1 changed files with 17 additions and 15 deletions

View File

@ -33,23 +33,25 @@ public class CandidateNode {
} }
public static func load(url: URL) { public static func load(url: URL) {
// DispatchQueue.main.async {
var arrLines = [String.SubSequence]() //
var fieldSlice = [Substring.SubSequence]() var arrLines = [String.SubSequence]()
var arrMembers = [CandidateNode]() var fieldSlice = [Substring.SubSequence]()
do { var arrMembers = [CandidateNode]()
arrLines = try String(contentsOfFile: url.path, encoding: .utf8).split(separator: "\n") do {
for strLine in arrLines.lazy.filter({ !$0.isEmpty }) { arrLines = try String(contentsOfFile: url.path, encoding: .utf8).split(separator: "\n")
fieldSlice = strLine.split(separator: "=") for strLine in arrLines.lazy.filter({ !$0.isEmpty }) {
switch fieldSlice.count { fieldSlice = strLine.split(separator: "=")
case 1: arrMembers.append(.init(name: String(fieldSlice[0]))) switch fieldSlice.count {
case 2: arrMembers.append(.init(name: String(fieldSlice[0]), symbols: .init(fieldSlice[1]))) case 1: arrMembers.append(.init(name: String(fieldSlice[0])))
default: break case 2: arrMembers.append(.init(name: String(fieldSlice[0]), symbols: .init(fieldSlice[1])))
default: break
}
} }
root = arrMembers.isEmpty ? defaultSymbolRoot : .init(name: "/", members: arrMembers)
} catch {
root = defaultSymbolRoot
} }
root = arrMembers.isEmpty ? defaultSymbolRoot : .init(name: "/", members: arrMembers)
} catch {
root = defaultSymbolRoot
} }
} }