diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb index 3f79ed99b..0adf2076e 100644 --- a/lib/redcloth3.rb +++ b/lib/redcloth3.rb @@ -1016,7 +1016,7 @@ class RedCloth3 < String end OFFTAGS = /(code|pre|kbd|notextile)/ - OFFTAG_MATCH = /(?:(<\/#{ OFFTAGS }>)|(<#{ OFFTAGS }[^>]*>))(.*?)(?=<\/?#{ OFFTAGS }|\Z)/mi + OFFTAG_MATCH = /(?:(<\/#{ OFFTAGS }>)|(<#{ OFFTAGS }[^>]*>))(.*?)(?=<\/?#{ OFFTAGS }\W|\Z)/mi OFFTAG_OPEN = /<#{ OFFTAGS }/ OFFTAG_CLOSE = /<\/?#{ OFFTAGS }/ HASTAG_MATCH = /(<\/?\w[^\n]*?>)/m diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index 05742150b..f61f219ab 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -258,6 +258,28 @@ RAW to_test.each { |text, result| assert_equal result, textilizable(text) } end + def test_pre_tags + raw = <<-RAW +Before + +
+32
+
+ +After +RAW + + expected = <<-EXPECTED +

Before

+
+<prepared-statement-cache-size>32</prepared-statement-cache-size>
+
+

After

+EXPECTED + + assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + end + def test_syntax_highlight raw = <<-RAW