LMMgr && Main // Allow dumping user dicts through terminal.
This commit is contained in:
parent
97a9e9aa5c
commit
67a6bb5f87
|
@ -345,3 +345,26 @@ public extension LMMgr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - 將當前輸入法的所有使用者辭典數據傾印成 JSON
|
||||||
|
|
||||||
|
// 威注音輸入法並非可永續的專案。用單個 JSON 檔案遷移資料的話,可方便其他程式開發者們實作相關功能。
|
||||||
|
|
||||||
|
public extension LMMgr {
|
||||||
|
@discardableResult static func dumpUserDictDataToJSON(print: Bool = false, all: Bool) -> String? {
|
||||||
|
var summarizedDict = [LMAssembly.UserDictionarySummarized]()
|
||||||
|
Shared.InputMode.allCases.forEach { mode in
|
||||||
|
guard mode != .imeModeNULL else { return }
|
||||||
|
summarizedDict.append(mode.langModel.summarize(all: all))
|
||||||
|
}
|
||||||
|
let encoder = JSONEncoder()
|
||||||
|
encoder.outputFormatting = .prettyPrinted
|
||||||
|
if #available(macOS 10.13, *) {
|
||||||
|
encoder.outputFormatting.insert(.sortedKeys)
|
||||||
|
}
|
||||||
|
guard let data = try? encoder.encode(summarizedDict) else { return nil }
|
||||||
|
guard let outputStr = String(data: data, encoding: .utf8) else { return nil }
|
||||||
|
if print { Swift.print(outputStr) }
|
||||||
|
return outputStr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
import AppKit
|
import AppKit
|
||||||
import IMKUtils
|
import IMKUtils
|
||||||
import InputMethodKit
|
import InputMethodKit
|
||||||
|
import LangModelAssembly
|
||||||
import MainAssembly
|
import MainAssembly
|
||||||
import Shared
|
import Shared
|
||||||
import Uninstaller
|
import Uninstaller
|
||||||
|
@ -24,6 +25,19 @@ case 1:
|
||||||
print(strDumpedPrefs)
|
print(strDumpedPrefs)
|
||||||
}
|
}
|
||||||
exit(0)
|
exit(0)
|
||||||
|
case "--dump-user-dict":
|
||||||
|
LMAssembly.LMInstantiator.asyncLoadingUserData = false
|
||||||
|
LMMgr.initUserLangModels()
|
||||||
|
LMMgr.loadUserPhraseReplacement()
|
||||||
|
LMMgr.dumpUserDictDataToJSON(print: true, all: false)
|
||||||
|
exit(0)
|
||||||
|
case "--dump-user-dict-all":
|
||||||
|
LMAssembly.LMInstantiator.asyncLoadingUserData = false
|
||||||
|
LMMgr.initUserLangModels()
|
||||||
|
LMMgr.loadUserPhraseReplacement()
|
||||||
|
LMMgr.loadUserAssociatesData()
|
||||||
|
LMMgr.dumpUserDictDataToJSON(print: true, all: true)
|
||||||
|
exit(0)
|
||||||
case "install":
|
case "install":
|
||||||
let exitCode = IMKHelper.registerInputMethod()
|
let exitCode = IMKHelper.registerInputMethod()
|
||||||
exit(exitCode)
|
exit(exitCode)
|
||||||
|
@ -60,6 +74,7 @@ case 2:
|
||||||
exit(0)
|
exit(0)
|
||||||
default: break
|
default: break
|
||||||
}
|
}
|
||||||
|
exit(0)
|
||||||
default: exit(0)
|
default: exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue