From d1ce70dbd0aeafd72a421e9eb0e7c54505332f48 Mon Sep 17 00:00:00 2001 From: sudacode Date: Tue, 1 Sep 2026 00:51:36 -0700 Subject: [PATCH] fix(anki): close trailing Senren markup --- .../field-grouping-merge.test.ts | 18 ++++++++++++++++++ src/anki-integration/field-grouping-merge.ts | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/anki-integration/field-grouping-merge.test.ts b/src/anki-integration/field-grouping-merge.test.ts index 8a6c0d44..96fe569e 100644 --- a/src/anki-integration/field-grouping-merge.test.ts +++ b/src/anki-integration/field-grouping-merge.test.ts @@ -394,6 +394,24 @@ test('Senren merge closes unclosed group spans so later scenes stay siblings', a assert.equal(openTags, closeTags); }); +test('Senren merge closes unclosed trailing markup before appending later scenes', async () => { + const { collaborator } = createCollaborator({ fieldGroupingProvider: 'senren' }); + + const merged = await collaborator.computeFieldGroupingMergedFields( + 300, + 200, + makeNote(300, { miscInfo: 'leadingtail' }), + makeNote(200, { miscInfo: 'next' }), + false, + ); + + assert.equal( + merged.miscInfo, + 'leadingtail' + + 'next', + ); +}); + test('Kiku merge clears SentenceFurigana when either note lacks it', async () => { const { collaborator } = createCollaborator(); diff --git a/src/anki-integration/field-grouping-merge.ts b/src/anki-integration/field-grouping-merge.ts index 7c996757..20024381 100644 --- a/src/anki-integration/field-grouping-merge.ts +++ b/src/anki-integration/field-grouping-merge.ts @@ -441,7 +441,7 @@ export class FieldGroupingMergeCollaborator { // markup) so the following scenes are siblings rather than nested inside it. entries.push(`${value.slice(entryStart)}${''.repeat(depth)}`); } else { - pushUngrouped(value.slice(cursor)); + pushUngrouped(`${value.slice(cursor)}${''.repeat(depth)}`); } return entries; }