From d065ec0f7befce2a8e15c05d3f7f156ef3447e06 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Fri, 27 May 2022 22:05:43 +0200 Subject: [PATCH] FIX: Correctly handle nested quotes in to-markdown (#16938) Given this html: ``` ``` The result was an invalid markdown: ``` [quote] [quote] > test > [/quote] > > > > test2 [/quote] ``` Now the result is: ``` [quote] [quote] test [/quote] test2 [/quote] ``` --- .../discourse/app/lib/to-markdown.js | 4 +-- .../tests/unit/lib/to-markdown-test.js | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/lib/to-markdown.js b/app/assets/javascripts/discourse/app/lib/to-markdown.js index 5f2b6cf98a..df260ab55e 100644 --- a/app/assets/javascripts/discourse/app/lib/to-markdown.js +++ b/app/assets/javascripts/discourse/app/lib/to-markdown.js @@ -167,7 +167,7 @@ export class Tag { } let text = Element.parse([blockquote], this.element) || ""; - text = text.trim().replace(/^>/g, ""); + text = text.trim().replaceAll(/^> /gm, "").trim(); if (text.length === 0) { return ""; } @@ -181,7 +181,7 @@ export class Tag { ? `[quote="${username}, post:${post}, topic:${topic}"]` : "[quote]"; - return `\n\n${prefix}\n${text}\n[/quote]\n\n`; + return `\n${prefix}\n${text}\n[/quote]\n`; } }; } diff --git a/app/assets/javascripts/discourse/tests/unit/lib/to-markdown-test.js b/app/assets/javascripts/discourse/tests/unit/lib/to-markdown-test.js index aaa2765f3a..c5e7b68b43 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/to-markdown-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/to-markdown-test.js @@ -426,6 +426,33 @@ there is a quote above assert.strictEqual(toMarkdown(html), markdown.trim()); }); + test("converts nested quotes to markdown", function (assert) { + let html = ` + + `; + + let markdown = ` +[quote] +[quote] +test +[/quote] + +test2 +[/quote] +`; + + assert.strictEqual(toMarkdown(html), markdown.trim()); + }); + test("strips base64 image URLs", function (assert) { const html = '';