LMCassette // Partial CIN2 Support (%sname & %intlname).

This commit is contained in:
ShikiSuen 2022-10-19 13:18:42 +08:00
parent 2cdfce640f
commit 2614916354
3 changed files with 15 additions and 3 deletions

View File

@ -15,8 +15,10 @@ import Shared
extension vChewingLM {
/// 便使
public class LMCassette {
public private(set) var nameShort: String = ""
public private(set) var nameENG: String = ""
public private(set) var nameCJK: String = ""
public private(set) var nameIntl: String = ""
///
public private(set) var maxKeyLength: Int = 1
public private(set) var selectionKeys: [String] = []
@ -48,7 +50,8 @@ extension vChewingLM {
/// CIN
/// - Note:
/// - `%gen_inp` `%ename` cin
/// - `%ename` `%cname` CJK
/// - `%ename` `%cname` CJK
/// `%sname` `%intlname`
/// - `%encoding` Swift UTF-8
/// - `%selkey`
/// - `%endkey`
@ -117,7 +120,11 @@ extension vChewingLM {
}
if nameENG.isEmpty { nameENG = String(cells[1]) }
}
if nameIntl.isEmpty, strLine.contains("%intlname ") {
nameIntl = String(cells[1]).replacingOccurrences(of: "_", with: " ")
}
if nameCJK.isEmpty, strLine.contains("%cname ") { nameCJK = String(cells[1]) }
if nameShort.isEmpty, strLine.contains("%sname ") { nameShort = String(cells[1]) }
if selectionKeys.isEmpty, strLine.contains("%selkey ") {
selectionKeys = cells[1].map { String($0) }.deduplicated
}
@ -144,6 +151,7 @@ extension vChewingLM {
keyNameMap.removeAll()
charDefMap.removeAll()
charDefWildcardMap.removeAll()
nameShort.removeAll()
nameENG.removeAll()
nameCJK.removeAll()
selectionKeys.removeAll()
@ -151,6 +159,7 @@ extension vChewingLM {
octagramMap.removeAll()
octagramDividedMap.removeAll()
wildcardKey.removeAll()
nameIntl.removeAll()
maxKeyLength = 1
norm = 0
}

View File

@ -31,8 +31,10 @@ final class LMCassetteTests: XCTestCase {
XCTAssertEqual(lmCassette.charDefWildcardMap.count, 8390)
XCTAssertEqual(lmCassette.octagramMap.count, 14616)
XCTAssertEqual(lmCassette.octagramDividedMap.count, 0)
XCTAssertEqual(lmCassette.nameShort, "WUBI")
XCTAssertEqual(lmCassette.nameENG, "Wubi")
XCTAssertEqual(lmCassette.nameCJK, "五笔")
XCTAssertEqual(lmCassette.nameIntl, "Haifeng Wubi:en;海峰五笔:zh-Hans;海峰五筆:zh-Hant")
XCTAssertEqual(lmCassette.maxKeyLength, 4)
XCTAssertEqual(lmCassette.endKeys.count, 0)
XCTAssertEqual(lmCassette.selectionKeys.count, 10)

View File

@ -1,8 +1,9 @@
# 該磁帶CIN 表格)檔案僅供單元測試之用途,使用體驗不受威注音專案保證。請依個人需求自備磁帶檔案。
# 八股文詞頻資料取自 CNCorpus。
%ename Wubi:en;五笔:zh_CN;五筆:zh;
%ename Wubi:en;五笔:zh_CN;五筆:zh
%cname 五笔
#sname WUBI
%sname WUBI
%intlname Haifeng_Wubi:en;海峰五笔:zh-Hans;海峰五筆:zh-Hant
%selkey 1234567890
%wildcardkey z
%keyname begin