diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index bcc258acc2..a1e487c2e1 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+# Allow the #simple_format text_helper to take an html_options hash for each paragraph. #2448 [Francois Beausoleil, thechrisoshow]
+
* Fix regression from filter refactoring where re-adding a skipped filter resulted in it being called twice. [rick]
* Refactor filters to use Active Support callbacks. #11235 [Josh Peek]
diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb
index 3d479608f3..f8c3b67474 100644
--- a/actionpack/lib/action_view/helpers/text_helper.rb
+++ b/actionpack/lib/action_view/helpers/text_helper.rb
@@ -291,6 +291,8 @@ module ActionView
# considered as a linebreak and a
tag is appended. This
# method does not remove the newlines from the +text+.
#
+ # You can pass any HTML attributes into html_options. These
+ # will be added to all created paragraphs.
# ==== Examples
# my_text = "Here is some basic text...\n...with a line break."
#
@@ -301,11 +303,17 @@ module ActionView
#
# simple_format(more_text)
# # => "
We want to put a paragraph...
\n\n...right there.
" - def simple_format(text) - content_tag 'p', text.to_s. - gsub(/\r\n?/, "\n"). # \r\n and \r -> \n - gsub(/\n\n+/, "\n\n"). # 2+ newline -> paragraph
- gsub(/([^\n]\n)(?=[^\n])/, '\1
') # 1 newline -> br
+ #
+ # simple_format("Look ma! A class!", :class => 'description')
+ # # => "
Look ma! A class!
" + def simple_format(text, html_options={}) + start_tag = tag('p', html_options, true) + text = text.to_s.dup + text.gsub!(/\r\n?/, "\n") # \r\n and \r -> \n + text.gsub!(/\n\n+/, "\n\n#{start_tag}") # 2+ newline -> paragraph + text.gsub!(/([^\n]\n)(?=[^\n])/, '\1A\n
\n
B
\t\n
C\n
D
This is a classy test
), simple_format("This is a classy test", :class => 'test') + assert_equal %Q(para 1
\n\npara 2
), simple_format("para 1\n\npara 2", :class => 'test') end def test_truncate