From 229ea6537459d9d55c2f140bce14fdfe45b4472e Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sun, 19 Nov 2006 09:57:16 +0000 Subject: simple_format helper doesn't choke on nil. Closes #6644. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5561 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/text_helper.rb | 10 ++++------ 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
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/, '

\0

') # turn two newlines into paragraph - text.gsub!(/([^\n])(\n)(?=[^\n])/, '\1\2
') # turn single newline into
- - content_tag("p", 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 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 "

", simple_format(nil) + assert_equal "

crazy\n
cross\n
platform linebreaks

", simple_format("crazy\r\n cross\r platform linebreaks") assert_equal "

A paragraph

\n\n

and another one!

", simple_format("A paragraph\n\nand another one!") assert_equal "

A paragraph\n
With a newline

", simple_format("A paragraph\n With a newline") - - text = "A\nB\nC\nD" + + text = "A\nB\nC\nD".freeze assert_equal "

A\n
B\n
C\n
D

", 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 "

A\n
\n
B

\n\n

\t\n
C\n
D

", simple_format(text) end - + def test_truncate assert_equal "Hello World!", truncate("Hello World!", 12) assert_equal "Hello Wor...", truncate("Hello World!!", 12) -- cgit v1.2.3