From e2c361f353b475fa99ce68c0b3ac037b3d5c926c Mon Sep 17 00:00:00 2001 From: Robin Ward <robin.ward@gmail.com> Date: Tue, 21 Jan 2014 16:18:20 -0500 Subject: [PATCH] FIX: Indented code blocks followed by `<blockquote>` weren't working. --- .../discourse/dialects/autoquote_dialect.js | 2 +- app/assets/javascripts/discourse/dialects/html.js | 10 +++++++--- test/javascripts/lib/markdown_test.js | 3 +++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/dialects/autoquote_dialect.js b/app/assets/javascripts/discourse/dialects/autoquote_dialect.js index e34bd3c23..e58e6b4ce 100644 --- a/app/assets/javascripts/discourse/dialects/autoquote_dialect.js +++ b/app/assets/javascripts/discourse/dialects/autoquote_dialect.js @@ -20,4 +20,4 @@ Discourse.Dialect.registerInline('"', function(str, match, prev) { return [str.length, ['blockquote', inner]]; } } -}); \ No newline at end of file +}); diff --git a/app/assets/javascripts/discourse/dialects/html.js b/app/assets/javascripts/discourse/dialects/html.js index ed4d4641a..466a0ad4f 100644 --- a/app/assets/javascripts/discourse/dialects/html.js +++ b/app/assets/javascripts/discourse/dialects/html.js @@ -25,12 +25,16 @@ var blockTags = ['address', 'article', 'aside', 'audio', 'blockquote', 'canvas', }; Discourse.Dialect.registerBlock('html', function(block, next) { + var split; // Fix manual blockquote paragraphing even though it's not strictly correct - var split = splitAtLast('blockquote', block, next, true); - if (split) { return split; } + if (block.search(/[^\s]+<blockquote/) === 0) { + console.log(/[^\s]+<blockquote/.exec(block)); + split = splitAtLast('blockquote', block, next, true); + if (split) { return this.processInline(split[0]); } + } - var m = /^<([^>]+)\>/m.exec(block); + var m = /^<([^>]+)\>/.exec(block); if (m && m[1]) { var tag = m[1].split(/\s/); if (tag && tag[0] && blockTags.indexOf(tag[0]) !== -1) { diff --git a/test/javascripts/lib/markdown_test.js b/test/javascripts/lib/markdown_test.js index 4fb041e0e..62821659b 100644 --- a/test/javascripts/lib/markdown_test.js +++ b/test/javascripts/lib/markdown_test.js @@ -321,6 +321,9 @@ test("Code Blocks", function() { "<p><pre><code class=\"lang-auto\">[quote="sam, post:1, topic:9441, full:true"]This is `<not>` a bug.[/quote]</code></pre></p>", "it allows code with backticks in it"); + cooked(" hello\n<blockquote>test</blockquote>", + "<pre><code>hello</code></pre>\n\n<blockquote>test</blockquote>", + "it allows an indented code block to by followed by a `<blockquote>`"); }); test("sanitize", function() {