mirror of
https://github.com/github/rails.git
synced 2026-01-29 16:28:09 -05:00
Allow the #simple_format text_helper to take an html_options hash for each paragraph. Closes #2448 [Francois Beausoleil, thechrisoshow]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9083 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -291,6 +291,8 @@ module ActionView
|
||||
# considered as a linebreak and a <tt><br /></tt> tag is appended. This
|
||||
# method does not remove the newlines from the +text+.
|
||||
#
|
||||
# You can pass any HTML attributes into <tt>html_options</tt>. 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)
|
||||
# # => "<p>We want to put a paragraph...</p>\n\n<p>...right there.</p>"
|
||||
def simple_format(text)
|
||||
content_tag 'p', text.to_s.
|
||||
gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
|
||||
gsub(/\n\n+/, "</p>\n\n<p>"). # 2+ newline -> paragraph
|
||||
gsub(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
|
||||
#
|
||||
# simple_format("Look ma! A class!", :class => 'description')
|
||||
# # => "<p class='description'>Look ma! A class!</p>"
|
||||
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+/, "</p>\n\n#{start_tag}") # 2+ newline -> paragraph
|
||||
text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
|
||||
text.insert 0, start_tag
|
||||
text << "</p>"
|
||||
end
|
||||
|
||||
# Turns all URLs and e-mail addresses into clickable links. The +link+ parameter
|
||||
|
||||
@@ -24,6 +24,9 @@ class TextHelperTest < Test::Unit::TestCase
|
||||
|
||||
text = "A\r\n \nB\n\n\r\n\t\nC\nD".freeze
|
||||
assert_equal "<p>A\n<br /> \n<br />B</p>\n\n<p>\t\n<br />C\n<br />D</p>", simple_format(text)
|
||||
|
||||
assert_equal %q(<p class="test">This is a classy test</p>), simple_format("This is a classy test", :class => 'test')
|
||||
assert_equal %Q(<p class="test">para 1</p>\n\n<p class="test">para 2</p>), simple_format("para 1\n\npara 2", :class => 'test')
|
||||
end
|
||||
|
||||
def test_truncate
|
||||
|
||||
Reference in New Issue
Block a user