Skip to content

Commit c1dffcc

Browse files
committed
Continue patching UOM APIs.
1 parent a065aa6 commit c1dffcc

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Sources/Megrez/3_KeyValuePaired.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,9 @@ extension Megrez {
403403

404404
// 選擇用來形成觀測 key 的資料源:長→短使用 after,其他使用 before
405405
let keySource = isBreakingUp ? currentAssembled : previouslyAssembled
406-
let keyCursor = afterHit.range.upperBound // 與現有 key 生成方法對齊
406+
let keyCursorRaw = Swift.max(afterHit.range.lowerBound, afterHit.range.upperBound - 1)
407+
guard keySource.totalKeyCount > 0 else { return nil }
408+
let keyCursor = Swift.max(0, Swift.min(keyCursorRaw, keySource.totalKeyCount - 1))
407409

408410
guard let keyGen = keySource.generateKeyForPerception(cursor: keyCursor) else { return nil }
409411

Tests/MegrezTests/MegrezTests.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,9 +671,11 @@ final class MegrezTestsAdvanced: XCTestCase {
671671
) {
672672
obsCaptured = $0
673673
}
674+
XCTAssertEqual(obsCaptured?.ngramKey, "((zai4:再),(chuang4:創),shi4)")
674675
// compositor.assemble() <- 已經組句了。
675676
let assembledAfter = compositor.assembledSentence.map(\.value).joined(separator: " ")
676677
XCTAssertTrue("再 創 世 的 凱歌" == assembledAfter)
678+
// ====
677679
let cursorShiDe = 3
678680
let prevAssembly = compositor.assembledSentence
679681
obsCaptured = nil
@@ -683,8 +685,9 @@ final class MegrezTestsAdvanced: XCTestCase {
683685
) {
684686
obsCaptured = $0
685687
}
688+
XCTAssertEqual(obsCaptured?.ngramKey, "((chuang4:創),(shi4:世),de5)")
686689
XCTAssertTrue(overrideSucceeded)
687-
let currentAssembly = compositor.assemble()
690+
let currentAssembly = compositor.assembledSentence
688691
guard let afterHit = currentAssembly.findGram(at: cursorShiDe) else {
689692
XCTFail("Expected current gram at cursor \(cursorShiDe)")
690693
return

0 commit comments

Comments
 (0)