From d10f9f756fbacbc72a7b1993637bad7e90453977 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 21 Oct 2013 12:12:58 -0400 Subject: [PATCH] FIX: `[code]` blocks with `#` headers within --- .../javascripts/discourse/dialects/bbcode_dialect.js | 2 +- .../javascripts/discourse/dialects/quote_dialect.js | 1 + test/javascripts/components/bbcode_test.js | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/dialects/bbcode_dialect.js b/app/assets/javascripts/discourse/dialects/bbcode_dialect.js index 00fc0f55ba..0e154527a7 100644 --- a/app/assets/javascripts/discourse/dialects/bbcode_dialect.js +++ b/app/assets/javascripts/discourse/dialects/bbcode_dialect.js @@ -99,7 +99,7 @@ Discourse.Dialect.replaceBlock({ stop: '[/code]', emitter: function(blockContents) { - return ['p', ['pre'].concat(blockContents)]; + return ['p', ['pre'].concat(blockContents.join("\n"))]; } }); diff --git a/app/assets/javascripts/discourse/dialects/quote_dialect.js b/app/assets/javascripts/discourse/dialects/quote_dialect.js index 87920d4710..abf228990e 100644 --- a/app/assets/javascripts/discourse/dialects/quote_dialect.js +++ b/app/assets/javascripts/discourse/dialects/quote_dialect.js @@ -46,6 +46,7 @@ Discourse.Dialect.replaceBlock({ }); } + // If there's no username just return a simple quote if (!username) { return ['p', ['aside', params, contents ]]; } diff --git a/test/javascripts/components/bbcode_test.js b/test/javascripts/components/bbcode_test.js index f95f39ba88..0c06638576 100644 --- a/test/javascripts/components/bbcode_test.js +++ b/test/javascripts/components/bbcode_test.js @@ -11,8 +11,6 @@ test('basic bbcode', function() { format("[i]emphasis[/i]", "emphasis", "italics text"); format("[u]underlined[/u]", "underlined", "underlines text"); format("[s]strikethrough[/s]", "strikethrough", "strikes-through text"); - format("[code]\nx++\n[/code]", "
\nx++
", "makes code into pre"); - format("[code]\nx++\ny++\nz++\n[/code]", "
\nx++\ny++\nz++
", "makes code into pre"); format("[spoiler]it's a sled[/spoiler]", "it's a sled", "supports spoiler tags"); format("[img]http://eviltrout.com/eviltrout.png[/img]", "", "links images"); format("[url]http://bettercallsaul.com[/url]", "http://bettercallsaul.com", "supports [url] without a title"); @@ -27,6 +25,12 @@ test('invalid bbcode', function() { equal(cooked, "

[code]I am not closed

\n\n

This text exists.

", "does not raise an error with an open bbcode tag."); }); +test('code', function() { + format("[code]\nx++\n[/code]", "
\nx++
", "makes code into pre"); + format("[code]\nx++\ny++\nz++\n[/code]", "
\nx++\ny++\nz++
", "makes code into pre"); + format("[code]abc\n#def\n[/code]", '
abc\n#def
', 'it handles headings in a [code] block'); +}); + test('lists', function() { format("[ul][li]option one[/li][/ul]", "", "creates an ul"); format("[ol][li]option one[/li][/ol]", "
  1. option one
", "creates an ol");