From f6a111b521432aa81fcc46ad5819ee8892795eca Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Sun, 7 Aug 2022 18:28:50 +0200 Subject: [PATCH] Composer: Do not parse Markdown inside code block (#1986) --- src/util/parseMessageInput.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/util/parseMessageInput.ts b/src/util/parseMessageInput.ts index 2de952198..66a24a9df 100644 --- a/src/util/parseMessageInput.ts +++ b/src/util/parseMessageInput.ts @@ -85,24 +85,27 @@ function parseMarkdown(html: string) { parsedHtml = parsedHtml.replace(/[`]{3}([^`]+)[`]{3}/g, '
$1
'); // Code - parsedHtml = parsedHtml.replace(/[`]{1}([^`\n]+)[`]{1}/g, '$1'); + parsedHtml = parsedHtml.replace( + /(?!<(code|pre)[^<]*|<\/)[`]{1}([^`\n]+)[`]{1}(?![^<]*<\/(code|pre)>)/g, + '$2', + ); // Other simple markdown parsedHtml = parsedHtml.replace( - /(^|\s)(?!)(\s|$)/g, - '$1$2$3', + /(^|\s)(?!<(code|pre)[^<]*|<\/)[*]{2}([^*\n]+)[*]{2}(?![^<]*<\/(code|pre)>)(\s|$)/g, + '$1$3$5', ); parsedHtml = parsedHtml.replace( - /(^|\s)(?!)(\s|$)/g, - '$1$2$3', + /(^|\s)(?!<(code|pre)[^<]*|<\/)[_]{2}([^_\n]+)[_]{2}(?![^<]*<\/(code|pre)>)(\s|$)/g, + '$1$3$5', ); parsedHtml = parsedHtml.replace( - /(^|\s)(?!)(\s|$)/g, - '$1$2$3', + /(^|\s)(?!<(code|pre)[^<]*|<\/)[~]{2}([^~\n]+)[~]{2}(?![^<]*<\/(code|pre)>)(\s|$)/g, + '$1$3$5', ); parsedHtml = parsedHtml.replace( - /(^|\s)(?!)(\s|$)/g, - `$1$2$3`, + /(^|\s)(?!<(code|pre)[^<]*|<\/)[|]{2}([^|\n]+)[|]{2}(?![^<]*<\/(code|pre)>)(\s|$)/g, + `$1$3$5`, ); return parsedHtml;