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\nand 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