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

View File

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

View File

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