diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-06 17:06:07 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-06 17:06:07 +0000 |
commit | 42db3cac06ad7f49dc10c7993e2df54b5bb4b2ab (patch) | |
tree | 26f3dc7e68a723cfe7dba800f89a341a467cc167 | |
parent | 22c5e0d61481f4d33d4eab48a7007ad49fb00190 (diff) | |
download | redmine-42db3cac06ad7f49dc10c7993e2df54b5bb4b2ab.tar.gz redmine-42db3cac06ad7f49dc10c7993e2df54b5bb4b2ab.zip |
Added code highlighting support in wiki, using this syntax:
<pre><code> <-- cut here
<pre><code class="ruby">
Place you code here.
</code></pre>
cut here --> </pre></code>
git-svn-id: http://redmine.rubyforge.org/svn/trunk@710 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/views/wiki/edit.rhtml | 4 | ||||
-rw-r--r-- | app/views/wiki/show.rhtml | 4 | ||||
-rw-r--r-- | lib/redmine/wiki_formatting.rb | 18 | ||||
-rw-r--r-- | public/stylesheets/scm.css | 2 | ||||
-rw-r--r-- | vendor/plugins/coderay-0.7.6.227/lib/coderay/encoders/html.rb | 8 |
5 files changed, 33 insertions, 3 deletions
diff --git a/app/views/wiki/edit.rhtml b/app/views/wiki/edit.rhtml index 56ed5d8d3..368ab098b 100644 --- a/app/views/wiki/edit.rhtml +++ b/app/views/wiki/edit.rhtml @@ -25,3 +25,7 @@ <% end %> <div id="preview" class="wiki"></div> + +<% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> +<% end %> diff --git a/app/views/wiki/show.rhtml b/app/views/wiki/show.rhtml index 06eca76ee..31c4b60ce 100644 --- a/app/views/wiki/show.rhtml +++ b/app/views/wiki/show.rhtml @@ -37,3 +37,7 @@ <%= submit_tag l(:button_add) %> <% end %> <% end %> + +<% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> +<% end %> diff --git a/lib/redmine/wiki_formatting.rb b/lib/redmine/wiki_formatting.rb index b6b2ff802..e9f5eb749 100644 --- a/lib/redmine/wiki_formatting.rb +++ b/lib/redmine/wiki_formatting.rb @@ -1,4 +1,5 @@ require 'redcloth' +require 'coderay' module Redmine module WikiFormatting @@ -24,7 +25,22 @@ module Redmine def hard_break( text ) text.gsub!( /(.)\n(?!\n|\Z| *([#*=]+(\s|$)|[{|]))/, "\\1<br />" ) if hard_breaks end - + + # Patch to add code highlighting support to RedCloth + def smooth_offtags( text ) + unless @pre_list.empty? + ## replace <pre> content + text.gsub!(/<redpre#(\d+)>/) do + content = @pre_list[$1.to_i] + if content.match(/<code\s+class="(\w+)">\s?(.+)/m) + content = "<code class=\"#{$1} CodeRay\">" + + CodeRay.scan($2, $1).html(:escape => false, :line_numbers => :inline) + end + content + end + end + end + AUTO_LINK_RE = %r{ ( # leading text <\w+.*?>| # leading HTML tag, or diff --git a/public/stylesheets/scm.css b/public/stylesheets/scm.css index 88d7cec37..338229b0b 100644 --- a/public/stylesheets/scm.css +++ b/public/stylesheets/scm.css @@ -29,7 +29,7 @@ table.list thead th.list-filename { /************* Coderay styles *************/ -.CodeRay { +table.CodeRay { background-color: #fafafa; } .CodeRay pre { margin: 0px } diff --git a/vendor/plugins/coderay-0.7.6.227/lib/coderay/encoders/html.rb b/vendor/plugins/coderay-0.7.6.227/lib/coderay/encoders/html.rb index 0c66f68c3..f0a123ed8 100644 --- a/vendor/plugins/coderay-0.7.6.227/lib/coderay/encoders/html.rb +++ b/vendor/plugins/coderay-0.7.6.227/lib/coderay/encoders/html.rb @@ -25,6 +25,10 @@ module Encoders # # == Options # + # === :escape + # Escape html entities + # Default: true + # # === :tab_width # Convert \t characters to +n+ spaces (a number.) # Default: 8 @@ -70,6 +74,7 @@ module Encoders FILE_EXTENSION = 'html' DEFAULT_OPTIONS = { + :escape => true, :tab_width => 8, :level => :xhtml, @@ -145,6 +150,7 @@ module Encoders @HTML_ESCAPE = HTML_ESCAPE.dup @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] + @escape = options[:escape] @opened = [nil] @css = CSS.new options[:style] @@ -222,7 +228,7 @@ module Encoders def token text, type if text.is_a? ::String - if text =~ /#{HTML_ESCAPE_PATTERN}/o + if @escape && (text =~ /#{HTML_ESCAPE_PATTERN}/o) text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } end @opened[0] = type |