diff --git a/Gemfile b/Gemfile index b6c35ac2..f103d21d 100644 --- a/Gemfile +++ b/Gemfile @@ -20,11 +20,11 @@ gem "faker" gem "seed-fu" gem "linguist", "~> 1.0.0", :git => "https://github.com/github/linguist.git" gem "pygments.rb", "0.2.11" +gem "redcarpet", "~> 2.1.1" gem "thin" gem "unicorn" gem "git" gem "acts_as_list" -gem "rdiscount" gem "acts-as-taggable-on", "~> 2.1.0" gem "drapper" gem "resque", "~> 1.20.0" diff --git a/Gemfile.lock b/Gemfile.lock index c852a8bd..12d0ddd6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -211,9 +211,9 @@ GEM thor (~> 0.14.6) raindrops (0.8.0) rake (0.9.2.2) - rdiscount (1.6.8) rdoc (3.12) json (~> 1.4) + redcarpet (2.1.1) redis (2.2.2) redis-namespace (1.0.3) redis (< 3.0.0) @@ -346,7 +346,7 @@ DEPENDENCIES rails (= 3.2.1) rails-footnotes rake - rdiscount + redcarpet (~> 2.1.1) resque (~> 1.20.0) rspec-rails sass-rails (= 3.2.3) diff --git a/app/assets/stylesheets/highlight.scss b/app/assets/stylesheets/highlight.scss index 0dbfc0ed..8f71c4f5 100644 --- a/app/assets/stylesheets/highlight.scss +++ b/app/assets/stylesheets/highlight.scss @@ -22,7 +22,7 @@ td.linenos{ vertical-align:top; } -.highlight{ +.highlighttable .highlight{ background:none; padding:10px 0px 0px 10px; margin-left:0px; @@ -31,7 +31,7 @@ td.linenos{ } .linenodiv pre, -.highlight pre{ +.highlighttable .highlight pre{ margin:0; padding:0; background:none; diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 0edd3125..92f1680e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -72,7 +72,18 @@ module ApplicationHelper end def markdown(text) - RDiscount.new(text, :autolink, :no_pseudo_protocols, :safelink, :smart, :filter_html).to_html.html_safe + @__renderer ||= Redcarpet::Markdown.new(Redcarpet::Render::GitlabHTML.new(filter_html: true), { + no_intra_emphasis: true, + tables: true, + fenced_code_blocks: true, + autolink: true, + strikethrough: true, + lax_html_blocks: true, + space_after_headers: true, + superscript: true + }) + + @__renderer.render(text).html_safe end def search_autocomplete_source diff --git a/app/helpers/wikis_helper.rb b/app/helpers/wikis_helper.rb index 0c24f57a..bb168351 100644 --- a/app/helpers/wikis_helper.rb +++ b/app/helpers/wikis_helper.rb @@ -1,5 +1,2 @@ module WikisHelper - def markdown_to_html(text) - RDiscount.new(text).to_html.html_safe - end end diff --git a/app/views/wikis/show.html.haml b/app/views/wikis/show.html.haml index 8ac4994a..e7f879f9 100644 --- a/app/views/wikis/show.html.haml +++ b/app/views/wikis/show.html.haml @@ -9,7 +9,7 @@ %hr .wiki_content = preserve do - = markdown_to_html @wiki.content + = markdown @wiki.content %p.time Last edited by #{@wiki.user.name}, in #{time_ago_in_words @wiki.created_at} - if can? current_user, :admin_wiki, @project diff --git a/lib/redcarpet/render/gitlab_html.rb b/lib/redcarpet/render/gitlab_html.rb new file mode 100644 index 00000000..29be4780 --- /dev/null +++ b/lib/redcarpet/render/gitlab_html.rb @@ -0,0 +1,9 @@ +class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML + def block_code(code, language) + if Pygments::Lexer.find(language) + Pygments.highlight(code, :lexer => language) + else + Pygments.highlight(code) + end + end +end \ No newline at end of file