diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/text_helper.rb | 10 | ||||
-rw-r--r-- | actionpack/test/template/text_helper_test.rb | 14 |
3 files changed, 15 insertions, 11 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 8cb95c56b3..6c42480034 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* simple_format helper doesn't choke on nil. #6644 [jerry426] + * Update to Prototype 1.5.0_rc2 [5550] which makes it work in Opera again [Thomas Fuchs] * Reuse named route helper module between Routing reloads. Use remove_method to delete named route methods after each load. Since the module is never collected, this fixes a significant memory leak. [Nicholas Seckar] diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index 8f956133b7..0b04bd323f 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -154,12 +154,10 @@ module ActionView # considered as a linebreak and a <tt><br /></tt> tag is appended. This # method does not remove the newlines from the +text+. def simple_format(text) - text = text.gsub(/(\r\n|\n|\r)/, "\n") # lets make them newlines crossplatform - text.gsub!(/\n\n+/, "\n\n") # zap dupes - text.gsub!(/\n\n/, '</p>\0<p>') # turn two newlines into paragraph - text.gsub!(/([^\n])(\n)(?=[^\n])/, '\1\2<br />') # turn single newline into <br /> - - content_tag("p", 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 end # Turns all urls and email addresses into clickable links. The +link+ parameter diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index 43538dd9b1..8825a24f14 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -11,17 +11,21 @@ class TextHelperTest < Test::Unit::TestCase # a view is rendered. The cycle helper depends on this behavior. @_cycles = nil if (defined? @_cycles) end - + def test_simple_format + assert_equal "<p></p>", simple_format(nil) + assert_equal "<p>crazy\n<br /> cross\n<br /> platform linebreaks</p>", simple_format("crazy\r\n cross\r platform linebreaks") assert_equal "<p>A paragraph</p>\n\n<p>and another one!</p>", simple_format("A paragraph\n\nand another one!") assert_equal "<p>A paragraph\n<br /> With a newline</p>", simple_format("A paragraph\n With a newline") - - text = "A\nB\nC\nD" + + text = "A\nB\nC\nD".freeze assert_equal "<p>A\n<br />B\n<br />C\n<br />D</p>", simple_format(text) - assert_equal text, "A\nB\nC\nD" + + 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) end - + def test_truncate assert_equal "Hello World!", truncate("Hello World!", 12) assert_equal "Hello Wor...", truncate("Hello World!!", 12) |