From 9686dcdb5b0cefe2ab80ac457917025848afb9b3 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 22 Sep 2007 18:21:54 +0000 Subject: Fixed TextHelper#word_wrap for multiline strings with extra carrier returns (closes #8663) [seth] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7562 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/text_helper.rb | 4 +++- actionpack/test/template/text_helper_test.rb | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 2a81480e2a..0835258d5e 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed TextHelper#word_wrap for multiline strings with extra carrier returns #8663 [seth] + * Fixed that setting the :host option in url_for would automatically turn off :only_path (since :host would otherwise not be shown) #9586 [Bounga] * Added FormHelper#label #8641 [jcoglan] diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index e07c8c5ef3..e7a6303154 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -161,7 +161,9 @@ module ActionView # word_wrap('Once upon a time', 1) # # => Once\nupon\na\ntime def word_wrap(text, line_width = 80) - text.gsub(/\n/, "\n\n").gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip + text.split("\n").collect do |line| + line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line + end * "\n" end begin diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index 1e80d030ec..822b88adee 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -120,6 +120,10 @@ class TextHelperTest < Test::Unit::TestCase assert_equal("my very very\nvery long\nstring", word_wrap("my very very very long string", 15)) end + def test_word_wrap_with_extra_newlines + assert_equal("my very very\nvery long\nstring\n\nwith another\nline", word_wrap("my very very very long string\n\nwith another line", 15)) + end + def test_pluralization assert_equal("1 count", pluralize(1, "count")) assert_equal("2 counts", pluralize(2, "count")) -- cgit v1.2.3