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; }