From 0f1e02b3ddb7db8f5efdcd35a48a6f926b6ff13c Mon Sep 17 00:00:00 2001 From: Almeida Date: Sun, 24 Dec 2023 16:16:33 +0000 Subject: [PATCH] fix(escape*): dont escape urls (#9958) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/formatters/__tests__/escapers.test.ts | 15 +++++++++++++++ packages/formatters/src/escapers.ts | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/formatters/__tests__/escapers.test.ts b/packages/formatters/__tests__/escapers.test.ts index 69ee713ef..280dc4d1a 100644 --- a/packages/formatters/__tests__/escapers.test.ts +++ b/packages/formatters/__tests__/escapers.test.ts @@ -17,6 +17,13 @@ import { const testString = "`_Behold!_`\n||___~~***```js\n`use strict`;\nrequire('discord.js');```***~~___||"; const testStringForums = '# Title\n## Subtitle\n### Subsubtitle\n- Bullet list\n - # Title with bullet\n * Subbullet\n1. Number list\n 1. Sub number list'; +const testURLs = [ + 'https://example.com/name_wow', + 'https://example.com/name__wow', + 'https://example.com/name_with_underscores', + 'https://example.com/name__with__underscores', + 'https://example.com/name_with_underscores_and__double__underscores', +]; describe('Markdown escapers', () => { describe('escapeCodeblock', () => { @@ -76,6 +83,10 @@ describe('Markdown escapers', () => { 'This is a test with \\_emojis\\_ <:Frost_ed_Wreath:1053399941210443826> and **bold text**.', ); }); + + test('url', () => { + for (const url of testURLs) expect(escapeItalic(url)).toBe(url); + }); }); describe('escapeUnderline', () => { @@ -95,6 +106,10 @@ describe('Markdown escapers', () => { 'This is a test with \\_\\_emojis\\_\\_ <:Frost__ed__Wreath:1053399939654352978> and **bold text**.', ); }); + + test('url', () => { + for (const url of testURLs) expect(escapeUnderline(url)).toBe(url); + }); }); describe('escapeStrikethrough', () => { diff --git a/packages/formatters/src/escapers.ts b/packages/formatters/src/escapers.ts index 1c89ce193..118707616 100644 --- a/packages/formatters/src/escapers.ts +++ b/packages/formatters/src/escapers.ts @@ -217,7 +217,7 @@ export function escapeItalic(text: string): string { return `\\*${match}`; }); idx = 0; - return newText.replaceAll(/(?<=^|[^_])(?)([^_]|__|$)/g, (_, match) => { + return newText.replaceAll(/(?<=^|[^_])(?)([^_]|__|$)/g, (_, match) => { if (match === '__') return ++idx % 2 ? `\\_${match}` : `${match}\\_`; return `\\_${match}`; }); @@ -243,7 +243,7 @@ export function escapeBold(text: string): string { */ export function escapeUnderline(text: string): string { let idx = 0; - return text.replaceAll(/(?)/g, (_, match) => { + return text.replaceAll(/(?)/g, (_, match) => { if (match) return ++idx % 2 ? `${match}\\_\\_` : `\\_\\_${match}`; return '\\_\\_'; });