diff --git a/lib/pretty_text.rb b/lib/pretty_text.rb index c912f60bc09..f2050a96892 100644 --- a/lib/pretty_text.rb +++ b/lib/pretty_text.rb @@ -213,17 +213,18 @@ module PrettyText end def self.extract_links(html) - doc = Nokogiri::HTML.fragment(html) links = [] - doc.css("a").each do |l| - links << l.attributes["href"].to_s - end - + doc = Nokogiri::HTML.fragment(html) + # remove href inside quotes + doc.css("aside.quote a").each { |l| l["href"] = "" } + # extract all links from the post + doc.css("a").each { |l| links << l["href"] unless l["href"].empty? } + # extract links to quotes doc.css("aside.quote").each do |a| - topic_id = a.attributes['data-topic'] + topic_id = a['data-topic'] url = "/t/topic/#{topic_id}" - if post_number = a.attributes['data-post'] + if post_number = a['data-post'] url << "/#{post_number}" end diff --git a/spec/components/pretty_text_spec.rb b/spec/components/pretty_text_spec.rb index 16f6d14e85f..8c74454e278 100644 --- a/spec/components/pretty_text_spec.rb +++ b/spec/components/pretty_text_spec.rb @@ -162,6 +162,17 @@ test PrettyText.extract_links("").to_a.should == ["/t/topic/1234/4567"] end + it "should not extract links inside quotes" do + PrettyText.extract_links(" + http://useless1.com + + http://useless2.com + ").to_a.should == ["http://body_only.com", "http://body_and_quote.com", "/t/topic/1234"] + end + it "should not preserve tags in code blocks" do PrettyText.excerpt("
<h3>Hours</h3>
",100).should == "<h3>Hours</h3>"
end