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=&quot;sam, post:1, topic:9441, full:true&quot;]This is &#x60;&lt;not&gt;&#x60; 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() {