From 076536433f0eb3e684c8e7a571223c274c179b5e Mon Sep 17 00:00:00 2001 From: Alexey Gaziev 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(-) (limited to 'activesupport') 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 :separator to truncate +text+ at a natural break: + # Pass a string or regexp :separator 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 :omission string (defaults to "...") # for a total length not exceeding :length: # 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