From 7621463acb1c687680e1bdf5923255d980692845 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 14 Mar 2010 09:05:58 +0000 Subject: [PATCH] Do not html escape code that is going to be highlighted (#2985, #3359). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3582 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redcloth3.rb | 10 +++++++--- lib/redmine/wiki_formatting/textile/formatter.rb | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb index 2470fa5a9..fb9691631 100644 --- a/lib/redcloth3.rb +++ b/lib/redcloth3.rb @@ -1060,7 +1060,7 @@ class RedCloth3 < String codepre, used_offtags = 0, {} text.gsub!( OFFTAG_MATCH ) do |line| if $3 - offtag, aftertag = $4, $5 + first, offtag, aftertag = $3, $4, $5 codepre += 1 used_offtags[offtag] = true if codepre - used_offtags.length > 0 @@ -1068,9 +1068,13 @@ class RedCloth3 < String @pre_list.last << line line = "" else - htmlesc( aftertag, :NoQuotes ) if aftertag && escape_aftertag + ### htmlesc is disabled between CODE tags which will be parsed with highlighter + ### Regexp in formatter.rb is : /\s?(.+)/m + ### NB: some changes were made not to use $N variables, because we use "match" + ### and it breaks following lines + htmlesc( aftertag, :NoQuotes ) if aftertag && escape_aftertag && !first.match(//) line = "" - $3.match(/<#{ OFFTAGS }([^>]*)>/) + first.match(/<#{ OFFTAGS }([^>]*)>/) tag = $1 $2.to_s.match(/(class\=\S+)/i) tag << " #{$1}" if $1 diff --git a/lib/redmine/wiki_formatting/textile/formatter.rb b/lib/redmine/wiki_formatting/textile/formatter.rb index ab66ba5b7..2010986f5 100644 --- a/lib/redmine/wiki_formatting/textile/formatter.rb +++ b/lib/redmine/wiki_formatting/textile/formatter.rb @@ -54,7 +54,7 @@ module Redmine content = @pre_list[$1.to_i] if content.match(/\s?(.+)/m) content = "" + - CodeRay.scan($2, $1.downcase).html(:escape => false, :line_numbers => :inline) + CodeRay.scan($2, $1.downcase).html(:line_numbers => :inline) end content end