Commit 31e6f9507bc47ca96ac596af41f1d1c348c53d51

Authored by Antonio Terceiro
1 parent b449ecbd

Rewrite Article#first_paragraph using an actual HTML parser

(ActionItem1668)
app/models/article.rb
  1 +require 'hpricot'
  2 +
1 3 class Article < ActiveRecord::Base
2 4  
3 5 # xss_terminate plugin can't sanitize array fields
... ... @@ -340,8 +342,7 @@ class Article &lt; ActiveRecord::Base
340 342 end
341 343  
342 344 def first_paragraph
343   - to_html =~ /<p>(.*)<\/p>/
344   - $1 || ''
  345 + Hpricot(to_html).search('p').first.to_html
345 346 end
346 347  
347 348 def creator
... ...
test/unit/article_test.rb
... ... @@ -89,8 +89,8 @@ class ArticleTest &lt; Test::Unit::TestCase
89 89 should 'provide first paragraph of HTML version' do
90 90 profile = create_user('testinguser').person
91 91 a = fast_create(Article, :name => 'my article', :profile_id => profile.id)
92   - a.expects(:body).returns('<p>the first paragraph of the article</p> The second paragraph')
93   - assert_equal 'the first paragraph of the article', a.first_paragraph
  92 + a.expects(:body).returns('<p>the first paragraph of the article</p><p>The second paragraph</p>')
  93 + assert_equal '<p>the first paragraph of the article</p>', a.first_paragraph
94 94 end
95 95  
96 96 should 'inform the icon to be used' do
... ...