File tree Expand file tree Collapse file tree 3 files changed +27
-6
lines changed
Expand file tree Collapse file tree 3 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -38,7 +38,7 @@ source 'https://rubygems.org' do
3838 gem 'omniauth-twitter' , '~> 0.0.16'
3939
4040# Markdown
41- gem 'redcarpet' #markdown processing
41+ gem 'redcarpet' , ">=3.3.4"
4242 gem 'kramdown'
4343 gem 'github-markdown'
4444
Original file line number Diff line number Diff line change 503503 ffi (>= 0.5.0 )
504504 rdoc (3.12.2 )
505505 json (~> 1.4 )
506- redcarpet (3.3.2 )
506+ redcarpet (3.3.4 )
507507 redis (3.2.1 )
508508 redis-actionpack (3.2.4 )
509509 actionpack (~> 3.2.0 )
@@ -776,7 +776,7 @@ DEPENDENCIES
776776 rails_12factor !
777777 rails_latest !
778778 rakismet !
779- redcarpet !
779+ redcarpet ( >= 3.3.4 ) !
780780 redis-rails (= 3.2.4 )!
781781 rest-client !
782782 rspec-rails !
Original file line number Diff line number Diff line change @@ -5,16 +5,37 @@ module CFM
55 class Markdown
66 class << self
77 def render ( text )
8- renderer = Redcarpet ::Render ::HTML . new
9- extensions = { fenced_code_blocks : true , strikethrough : true , autolink : true }
8+ return nil if text . nil?
9+
10+ extensions = {
11+ fenced_code_blocks : true ,
12+ strikethrough : true ,
13+ autolink : true
14+ }
15+
16+ renderer = Redcarpet ::Render ::HTML . new ( link_attributes : { rel : "nofollow" } )
1017 redcarpet = Redcarpet ::Markdown . new ( renderer , extensions )
11- redcarpet . render ( render_cfm ( text ) ) unless text . nil?
18+ html = redcarpet . render ( render_cfm ( text ) )
19+ html = add_nofollow ( html )
20+ html
1221 end
1322
1423 USERNAME_BLACKLIST = %w( include )
1524
1625 private
1726
27+ def add_nofollow ( html )
28+ #redcarpet isn't adding nofollow like it is suppose to.
29+ html . scan ( /(\< a href=["'].*?["']\> .*?\< \/ a\> )/ ) . flatten . each do |link |
30+ if link . match ( /\< a href=["'](http:\/ \/ |www){0,1}((coderwall.com)(\/ .*?){0,1}|\/ .*?)["']\> (.*?)\< \/ a\> / )
31+ else
32+ link . match ( /(\< a href=["'](.*?)["']\> (.*?)\< \/ a\> )/ )
33+ html . gsub! ( link , "<a href='#{ $2} ' rel='nofollow' >#{ $3} </a>" )
34+ end
35+ end
36+ html
37+ end
38+
1839 def render_cfm ( text )
1940 text . lines . map do |x |
2041 inspect_line ( x )
You can’t perform that action at this time.
0 commit comments