From 076536433f0eb3e684c8e7a571223c274c179b5e Mon Sep 17 00:00:00 2001
From: Alexey Gaziev <alex.gaziev@gmail.com>
Date: Sun, 29 Apr 2012 13:42:40 +0400
Subject: Tests for regexp separator in String#truncate
 https://github.com/rails/rails/commit/5a7513593f64e0ff7e4de1ee37bac5eeddfae270

---
 activesupport/lib/active_support/core_ext/string/filters.rb | 5 ++++-
 activesupport/test/core_ext/string_ext_test.rb              | 6 ++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/activesupport/lib/active_support/core_ext/string/filters.rb b/activesupport/lib/active_support/core_ext/string/filters.rb
index 9ef410c38b..32a37296d5 100644
--- a/activesupport/lib/active_support/core_ext/string/filters.rb
+++ b/activesupport/lib/active_support/core_ext/string/filters.rb
@@ -25,11 +25,14 @@ class String
   #   'Once upon a time in a world far far away'.truncate(27)
   #   # => "Once upon a time in a wo..."
   #
-  # Pass a <tt>:separator</tt> to truncate +text+ at a natural break:
+  # Pass a string or regexp <tt>:separator</tt> to truncate +text+ at a natural break:
   #
   #   'Once upon a time in a world far far away'.truncate(27, :separator => ' ')
   #   # => "Once upon a time in a..."
   #
+  #   'Once upon a time in a world far far away'.truncate(27, :separator => /\s/)
+  #   # => "Once upon a time in a..."
+  #
   # The last characters will be replaced with the <tt>:omission</tt> string (defaults to "...")
   # for a total length not exceeding <tt>:length</tt>:
   #
diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb
index 6c2828b74e..9010a4a716 100644
--- a/activesupport/test/core_ext/string_ext_test.rb
+++ b/activesupport/test/core_ext/string_ext_test.rb
@@ -279,6 +279,12 @@ class StringInflectionsTest < ActiveSupport::TestCase
     assert_equal "Hello Big[...]", "Hello Big World!".truncate(15, :omission => "[...]", :separator => ' ')
   end
 
+  def test_truncate_with_omission_and_regexp_seperator
+    assert_equal "Hello[...]", "Hello Big World!".truncate(13, :omission => "[...]", :separator => /\s/)
+    assert_equal "Hello Big[...]", "Hello Big World!".truncate(14, :omission => "[...]", :separator => /\s/)
+    assert_equal "Hello Big[...]", "Hello Big World!".truncate(15, :omission => "[...]", :separator => /\s/)
+  end
+
   def test_truncate_multibyte
     assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 ...".force_encoding('UTF-8'),
       "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 \354\225\204\353\235\274\353\246\254\354\230\244".force_encoding('UTF-8').truncate(10)
-- 
cgit v1.2.3