refactor: possibleNextsを手動で列挙せず、自動で列挙できるようにした

This commit is contained in:
Miwa / Ensan
2025-07-21 18:01:05 +09:00
parent 59cde2a2ca
commit 7b520e5793
2 changed files with 17 additions and 54 deletions

View File

@ -1028,58 +1028,14 @@ public final class DicdataStore {
return true return true
} }
static let possibleNexts: [String: [String]] = [ static let possibleNexts: [String: [String]] = {
"x": ["", "", "", "", "", "", "", "", "", ""], var results: [String: [String]] = [:]
"l": ["", "", "", "", "", "", "", "", "", ""], for (key, value) in Roman2Kana.katakanaChanges {
"xt": [""], for prefixCount in 0 ..< key.count where 0 < prefixCount {
"lt": [""], let prefix = String(key.prefix(prefixCount))
"xts": [""], results[prefix, default: []].append(value)
"lts": [""], }
"xy": ["", "", ""], }
"ly": ["", "", ""], return results
"xw": [""], }()
"lw": [""],
"v": [""],
"k": ["", "", "", "", ""],
"q": ["クァ", "クィ", "クゥ", "クェ", "クォ"],
"qy": ["クャ", "クィ", "クュ", "クェ", "クョ"],
"qw": ["クヮ", "クィ", "クゥ", "クェ", "クォ"],
"ky": ["キャ", "キィ", "キュ", "キェ", "キョ"],
"g": ["", "", "", "", ""],
"gy": ["ギャ", "ギィ", "ギュ", "ギェ", "ギョ"],
"s": ["", "", "", "", ""],
"sy": ["シャ", "シィ", "シュ", "シェ", "ショ"],
"sh": ["シャ", "シィ", "シュ", "シェ", "ショ"],
"z": ["", "", "", "", ""],
"zy": ["ジャ", "ジィ", "ジュ", "ジェ", "ジョ"],
"j": [""],
"t": ["", "", "", "", ""],
"ty": ["チャ", "チィ", "チュ", "チェ", "チョ"],
"ts": [""],
"th": ["テャ", "ティ", "テュ", "テェ", "テョ"],
"tw": ["トァ", "トィ", "トゥ", "トェ", "トォ"],
"cy": ["チャ", "チィ", "チュ", "チェ", "チョ"],
"ch": [""],
"d": ["", "", "", "", ""],
"dy": ["ヂャ", "ヂィ", "ヂュ", "ヂェ", "ヂョ"],
"dh": ["デャ", "ディ", "デュ", "デェ", "デョ"],
"dw": ["ドァ", "ドィ", "ドゥ", "ドェ", "ドォ"],
"n": ["", "", "", "", "", ""],
"ny": ["ニャ", "ニィ", "ニュ", "ニェ", "ニョ"],
"h": ["", "", "", "", ""],
"hy": ["ヒャ", "ヒィ", "ヒュ", "ヒェ", "ヒョ"],
"hw": ["ファ", "フィ", "フェ", "フォ"],
"f": [""],
"b": ["", "", "", "", ""],
"by": ["ビャ", "ビィ", "ビュ", "ビェ", "ビョ"],
"p": ["", "", "", "", ""],
"py": ["ピャ", "ピィ", "ピュ", "ピェ", "ピョ"],
"m": ["", "", "", "", ""],
"my": ["ミャ", "ミィ", "ミュ", "ミェ", "ミョ"],
"y": ["", "", "イェ", ""],
"r": ["", "", "", "", ""],
"ry": ["リャ", "リィ", "リュ", "リェ", "リョ"],
"w": ["", "ウィ", "ウェ", ""],
"wy": ["", ""]
]
} }

View File

@ -329,4 +329,11 @@ final class DicdataStoreTests: XCTestCase {
XCTAssertEqual(dynamicUserDictResult?.data.metadata, .isFromUserDictionary) XCTAssertEqual(dynamicUserDictResult?.data.metadata, .isFromUserDictionary)
} }
} }
func testPossibleNexts() throws {
let possibleNexts = DicdataStore.possibleNexts
XCTAssertEqual(Set(possibleNexts["f", default: []]).symmetricDifference(["ファ", "フィ", "", "フェ", "フォ", "フャ", "フュ", "フョ", "フゥ"]), [])
XCTAssertEqual(Set(possibleNexts["xy", default: []]).symmetricDifference(["", "", ""]), [])
XCTAssertEqual(possibleNexts["", default: []], [])
}
} }