diff --git a/src/channels/telegram-format.test.ts b/src/channels/telegram-format.test.ts index 839b0d3..55c3388 100644 --- a/src/channels/telegram-format.test.ts +++ b/src/channels/telegram-format.test.ts @@ -40,4 +40,47 @@ describe('markdownToTelegramV2', () => { const result = await markdownToTelegramV2('Just some plain text'); expect(result).toContain('Just some plain text'); }); + + it('preserves intentional markdown blockquotes', async () => { + const result = await markdownToTelegramV2('> got annexed by the relationship problem.'); + expect(result).toContain('> got annexed by the relationship problem'); + }); + + it('does not alter greater-than signs in the middle of a line', async () => { + const result = await markdownToTelegramV2('2 > 1'); + expect(result).toContain('2 \\> 1'); + }); + + it('preserves greater-than signs inside fenced code blocks', async () => { + const result = await markdownToTelegramV2('```\n> code\n```'); + expect(result).toContain('```\n> code\n```'); + }); + + it('preserves mixed multiline content with blockquotes and plain text', async () => { + const result = await markdownToTelegramV2('> quote\nnormal line\n2 > 1'); + expect(result).toContain('> quote'); + expect(result).toContain('normal line'); + expect(result).toContain('2 \\> 1'); + }); + + it('preserves indented blockquotes', async () => { + const result = await markdownToTelegramV2(' > indented quote'); + expect(result).toContain('> indented quote'); + expect(result).not.toContain('\\> indented quote'); + }); + + it('preserves nested blockquotes', async () => { + const result = await markdownToTelegramV2('>> nested'); + expect(result).toContain('> > nested'); + }); + + it('preserves greater-than signs in fenced code blocks with language and multiple lines', async () => { + const result = await markdownToTelegramV2('```ts\n> one\n> two\nconst x = 1 > 0\n```'); + expect(result).toContain('```\n> one\n> two\nconst x = 1 > 0\n```'); + }); + + it('preserves greater-than signs in inline code spans', async () => { + const result = await markdownToTelegramV2('Use `a > b` inline'); + expect(result).toContain('`a > b`'); + }); }); diff --git a/src/channels/telegram-format.ts b/src/channels/telegram-format.ts index 0904e51..c878d7a 100644 --- a/src/channels/telegram-format.ts +++ b/src/channels/telegram-format.ts @@ -16,7 +16,7 @@ export async function markdownToTelegramV2(markdown: string): Promise { try { // Dynamic import to handle ESM module const telegramifyMarkdown = (await import('telegramify-markdown')).default; - // Use 'keep' strategy to preserve blockquotes (>) and other unsupported elements + // Use 'keep' strategy for broad markdown support, including blockquotes. return telegramifyMarkdown(markdown, 'keep'); } catch (e) { log.error('Markdown conversion failed, using escape fallback:', e);