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
"<pre><div>content</div></pre>" => "<pre><div>content</div></pre>",
"HTML comment: <!-- no comments -->" => "<p>HTML comment: <!-- no comments --></p>",
"<!-- opening comment" => "<p><!-- 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
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>' +