]> source.dussan.org Git - redmine.git/commitdiff
Fixes syntax highlighting broken by r1930 (#2143).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 8 Nov 2008 15:18:02 +0000 (15:18 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 8 Nov 2008 15:18:02 +0000 (15:18 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@1993 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redcloth3.rb
test/unit/helpers/application_helper_test.rb

index 638ef6d97f17d1cb7e243fb3ef93ee6a308c5b2d..220617f14615038d62f0b60fb614fc9d3e29601f 100644 (file)
@@ -1051,7 +1051,11 @@ class RedCloth3 < String
                     else
                         htmlesc( aftertag, :NoQuotes ) if aftertag
                         line = "<redpre##{ @pre_list.length }>"
-                        @pre_list << "#{ $3.gsub(/<(#{ OFFTAGS })[^>]*>/, '<\\1>') }#{ aftertag }"
+                        $3.match(/<#{ OFFTAGS }([^>]*)>/)
+                        tag = $1
+                        $2.to_s.match(/(class\=\S+)/i)
+                        tag << " #{$1}" if $1
+                        @pre_list << "<#{ tag }>#{ aftertag }"
                     end
                 elsif $1 and codepre > 0
                     if codepre - used_offtags.length > 0
index cbf5a54bc17c1370402a47897835ca44090fd391..b3ff974e9fd2e3caf5215cdfe5a219eb3db35654 100644 (file)
@@ -192,8 +192,9 @@ class ApplicationHelperTest < HelperTestCase
       "<pre><div>content</div></pre>" => "<pre>&lt;div&gt;content&lt;/div&gt;</pre>",
       "HTML comment: <!-- no comments -->" => "<p>HTML comment: &lt;!-- no comments --&gt;</p>",
       "<!-- opening comment" => "<p>&lt;!-- opening comment</p>",
-      # remove attributes
-      "<pre class='foo'>some text</pre>" => "<pre>some text</pre>",
+      # remove attributes except class
+      "<pre class='foo'>some text</pre>" => "<pre class='foo'>some text</pre>",
+      "<pre onmouseover='alert(1)'>some text</pre>" => "<pre>some text</pre>",
     }
     to_test.each { |text, result| assert_equal result, textilizable(text) }
   end
@@ -207,6 +208,21 @@ class ApplicationHelperTest < HelperTestCase
     to_test.each { |text, result| assert_equal result, textilizable(text) }
   end
   
+  def syntax_highlight
+    raw = <<-RAW
+<pre><code class="ruby">
+# Some ruby code here
+</pre></code>
+RAW
+
+    expected = <<-EXPECTED
+<pre><code class="ruby CodeRay"><span class="no">1</span> <span class="c"># Some ruby code here</span>
+</pre></code>
+EXPECTED
+
+    assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '')
+  end
+  
   def test_wiki_links_in_tables
     to_test = {"|[[Page|Link title]]|[[Other Page|Other title]]|\n|Cell 21|[[Last page]]|" =>
                  '<tr><td><a href="/wiki/ecookbook/Page" class="wiki-page new">Link title</a></td>' +