FIX: Have onebox ignore internal links

This commit is contained in:
Régis Hanol 2013-06-05 20:53:07 +02:00
parent 7d089fdfb5
commit 01855b70b4
2 changed files with 19 additions and 7 deletions

View File

@ -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

View File

@ -162,6 +162,17 @@ test
PrettyText.extract_links("<aside class=\"quote\" data-topic=\"1234\" data-post=\"4567\">aside</aside>").to_a.should == ["/t/topic/1234/4567"]
end
it "should not extract links inside quotes" do
PrettyText.extract_links("
<a href='http://body_only.com'>http://useless1.com</a>
<aside class=\"quote\" data-topic=\"1234\">
<a href='http://body_and_quote.com'>http://useless3.com</a>
<a href='http://quote_only.com'>http://useless4.com</a>
</aside>
<a href='http://body_and_quote.com'>http://useless2.com</a>
").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("<pre><code class='handlebars'>&lt;h3&gt;Hours&lt;/h3&gt;</code></pre>",100).should == "&lt;h3&gt;Hours&lt;/h3&gt;"
end