diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 index bc15c40fb2b..52e0ecba1e6 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 @@ -9,6 +9,8 @@ export function register(helper, codeName, args, emitter) { start: new RegExp("\\[" + codeName + "(=[^\\[\\]]+)?\\]([\\s\\S]*)", "igm"), stop: new RegExp("\\[\\/" + codeName + "\\]", "igm"), emitter(blockContents, matches) { + + const options = helper.getOptions(); while (blockContents.length && (typeof blockContents[0] === "string" || blockContents[0] instanceof String)) { blockContents[0] = String(blockContents[0]).replace(/^\s+/, ''); @@ -22,7 +24,11 @@ export function register(helper, codeName, args, emitter) { let contents = []; if (blockContents.length) { const nextContents = blockContents.slice(1); - blockContents = this.processBlock(blockContents[0], nextContents).concat(nextContents); + blockContents = this.processBlock(blockContents[0], nextContents); + + nextContents.forEach(nc => { + blockContents = blockContents.concat(this.processBlock(nc, [])); + }); blockContents.forEach(bc => { if (typeof bc === "string" || bc instanceof String) { diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/quote.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/quote.js.es6 index 96b798a3269..87bc948d69c 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/quote.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/quote.js.es6 @@ -10,6 +10,7 @@ registerOption((siteSettings, opts) => { export function setup(helper) { register(helper, 'quote', {noWrap: true, singlePara: true}, (contents, bbParams, options) => { + const params = {'class': 'quote'}; let username = null; const opts = helper.getOptions(); diff --git a/test/javascripts/lib/pretty-text-test.js.es6 b/test/javascripts/lib/pretty-text-test.js.es6 index 2d10f0c0d04..72c1adf30b9 100644 --- a/test/javascripts/lib/pretty-text-test.js.es6 +++ b/test/javascripts/lib/pretty-text-test.js.es6 @@ -220,6 +220,11 @@ test("Quotes", function() { "

1

\n\n\n\n

2

", "includes no avatar if none is found"); + + cooked(`[quote]\na\n\n[quote]\nb\n[/quote]\n[/quote]`, + "

", + "handles nested quotes properly"); + }); test("Mentions", function() {