Skip to content

Commit 0c4f6dc

Browse files
committedJan 19, 2016
added nofollow links to all user content that dont link to coderwall
1 parent 7d171ba commit 0c4f6dc

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed
 

‎Gemfile

+1-1
Original file line numberDiff line numberDiff 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

‎Gemfile.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ GEM
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!

‎lib/cfm.rb

+24-3
Original file line numberDiff line numberDiff 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)

0 commit comments

Comments
 (0)
Please sign in to comment.