fix: avoid false italic conversion in Telegram reasoning (#526)
This commit is contained in:
@@ -96,6 +96,14 @@ describe('formatReasoningDisplay', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('does not convert math-like asterisks to telegram italic formatting', () => {
|
||||
const spaced = formatReasoningDisplay('2 * 3 * 4', 'telegram');
|
||||
const compact = formatReasoningDisplay('2*3*4', 'telegram');
|
||||
expect(spaced.parseMode).toBe('HTML');
|
||||
expect(spaced.text).toBe('<blockquote expandable><b>Thinking</b>\n2 * 3 * 4</blockquote>');
|
||||
expect(compact.text).toBe('<blockquote expandable><b>Thinking</b>\n2*3*4</blockquote>');
|
||||
});
|
||||
|
||||
it('formats non-signal/telegram channels as markdown blockquote', () => {
|
||||
const result = formatReasoningDisplay('line 1\n line 2', 'discord');
|
||||
expect(result).toEqual({ text: '> **Thinking**\n> line 1\n> line 2' });
|
||||
|
||||
@@ -239,8 +239,11 @@ export function formatReasoningDisplay(
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
const html = escaped
|
||||
.replace(/\*\*(.+?)\*\*/g, '<b>$1</b>')
|
||||
.replace(/\*(.+?)\*/g, '<i>$1</i>');
|
||||
// Only convert likely markdown delimiters:
|
||||
// - ignore escaped asterisks (\*)
|
||||
// - ignore in-word/math operators (e.g., 2*3*4, 2 * 3 * 4)
|
||||
.replace(/(?<![\\\w])\*\*(?=\S)([\s\S]*?\S)\*\*(?!\w)/g, '<b>$1</b>')
|
||||
.replace(/(?<![\\\w])\*(?=\S)([^*\n]*?\S)\*(?!\w)/g, '<i>$1</i>');
|
||||
return {
|
||||
text: `<blockquote expandable><b>Thinking</b>\n${html}</blockquote>`,
|
||||
parseMode: 'HTML',
|
||||
|
||||
Reference in New Issue
Block a user