From ee804f608f7335b04d82c3e74daa7a3382bad74a Mon Sep 17 00:00:00 2001
From: kerryliu <kerryliu@gmail.com>
Date: Tue, 18 Aug 2015 17:28:30 -0700
Subject: [PATCH] spoiler tag uses replaceBBCode instead of rawBBCode for emoji
 and text formatting support.

---
 .../javascripts/discourse/dialects/bbcode_dialect.js      | 8 +-------
 test/javascripts/lib/bbcode-test.js.es6                   | 5 ++++-
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/app/assets/javascripts/discourse/dialects/bbcode_dialect.js b/app/assets/javascripts/discourse/dialects/bbcode_dialect.js
index 4a138a7d8..816ed3934 100644
--- a/app/assets/javascripts/discourse/dialects/bbcode_dialect.js
+++ b/app/assets/javascripts/discourse/dialects/bbcode_dialect.js
@@ -133,16 +133,10 @@ Discourse.Markdown.whiteListTag('span', 'class', /^bbcode-[bius]$/);
 Discourse.BBCode.replaceBBCode('ul', function(contents) { return ['ul'].concat(Discourse.BBCode.removeEmptyLines(contents)); });
 Discourse.BBCode.replaceBBCode('ol', function(contents) { return ['ol'].concat(Discourse.BBCode.removeEmptyLines(contents)); });
 Discourse.BBCode.replaceBBCode('li', function(contents) { return ['li'].concat(Discourse.BBCode.removeEmptyLines(contents)); });
+Discourse.BBCode.replaceBBCode('spoiler', function(contents) { return ['span', {'class': 'spoiler'}].concat(contents); });
 
 Discourse.BBCode.rawBBCode('img', function(contents) { return ['img', {href: contents}]; });
 Discourse.BBCode.rawBBCode('email', function(contents) { return ['a', {href: "mailto:" + contents, 'data-bbcode': true}, contents]; });
-Discourse.BBCode.rawBBCode('spoiler', function(contents) {
-  if (/<img/i.test(contents)) {
-    return ['div', { 'class': 'spoiler' }, contents];
-  } else {
-    return ['span', { 'class': 'spoiler' }, contents];
-  }
-});
 
 Discourse.BBCode.replaceBBCode('url', function(contents) {
   if (!Array.isArray(contents)) { return; }
diff --git a/test/javascripts/lib/bbcode-test.js.es6 b/test/javascripts/lib/bbcode-test.js.es6
index 84901d7d5..84d9b93b8 100644
--- a/test/javascripts/lib/bbcode-test.js.es6
+++ b/test/javascripts/lib/bbcode-test.js.es6
@@ -51,7 +51,10 @@ test('code', function() {
 test('spoiler', function() {
   format("[spoiler]it's a sled[/spoiler]", "<span class=\"spoiler\">it's a sled</span>", "supports spoiler tags on text");
   format("[spoiler]<img src='http://eviltrout.com/eviltrout.png' width='50' height='50'>[/spoiler]",
-         "<div class=\"spoiler\"><img src=\"http://eviltrout.com/eviltrout.png\" width=\"50\" height=\"50\"></div>", "supports spoiler tags on images");
+         "<span class=\"spoiler\"><img src=\"http://eviltrout.com/eviltrout.png\" width=\"50\" height=\"50\"></span>", "supports spoiler tags on images");
+  format("[spoiler] This is the **bold** :smiley: [/spoiler]", "<span class=\"spoiler\"> This is the <strong>bold</strong> <img src=\"/images/emoji/undefined/smiley.png?v=0\" title=\":smiley:\" class=\"emoji\" alt=\"smiley\"> </span>", "supports spoiler tags on emojis");
+  format("[spoiler] Why not both <img src='http://eviltrout.com/eviltrout.png' width='50' height='50'>?[/spoiler]", "<span class=\"spoiler\"> Why not both <img src=\"http://eviltrout.com/eviltrout.png\" width=\"50\" height=\"50\">?</span>", "supports images and text");
+  format("In a p tag a spoiler [spoiler] <img src='http://eviltrout.com/eviltrout.png' width='50' height='50'>[/spoiler] can work.", "In a p tag a spoiler <span class=\"spoiler\"> <img src=\"http://eviltrout.com/eviltrout.png\" width=\"50\" height=\"50\"></span> can work.", "supports images and text in a p tag");
 });
 
 test('lists', function() {