diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-11-03 12:09:26 -0200 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-11-03 12:09:26 -0200 |
commit | 4259cc0c5003c26f72105419c3d60e362f539040 (patch) | |
tree | 7693c91b1f0e360d475e642d849d7df1bc315c37 | |
parent | badd616cc931dc64de2540d734f5e01000262c0f (diff) | |
parent | 73ad15103019f94b789a3b0f13209a0a988df584 (diff) | |
download | rails-4259cc0c5003c26f72105419c3d60e362f539040.tar.gz rails-4259cc0c5003c26f72105419c3d60e362f539040.tar.bz2 rails-4259cc0c5003c26f72105419c3d60e362f539040.zip |
Merge pull request #17383 from rwz/string-remove
Make `String#remove` and `String#remove!` accept multiple arguments
Conflicts:
activesupport/CHANGELOG.md
-rw-r--r-- | activesupport/CHANGELOG.md | 4 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/string/filters.rb | 16 | ||||
-rw-r--r-- | activesupport/test/core_ext/string_ext_test.rb | 14 |
3 files changed, 26 insertions, 8 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 4ad602b066..b2b3cf4bd4 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,7 @@ +* `String#remove` and `String#remove!` accept multiple arguments. + + *Pavel Pravosud* + * TimeWithZone#strftime now delegates every directive to Time#strftime except for '%Z', it also now correctly handles escaped '%' characters placed just before time zone related directives. diff --git a/activesupport/lib/active_support/core_ext/string/filters.rb b/activesupport/lib/active_support/core_ext/string/filters.rb index 2b1583d4ac..499b9b26bc 100644 --- a/activesupport/lib/active_support/core_ext/string/filters.rb +++ b/activesupport/lib/active_support/core_ext/string/filters.rb @@ -20,14 +20,18 @@ class String self end - # Returns a new string with all occurrences of the pattern removed. Short-hand for String#gsub(pattern, ''). - def remove(pattern) - gsub pattern, '' + # Returns a new string with all occurrences of the patterns removed. + def remove(*patterns) + dup.remove!(*patterns) end - # Alters the string by removing all occurrences of the pattern. Short-hand for String#gsub!(pattern, ''). - def remove!(pattern) - gsub! pattern, '' + # Alters the string by removing all occurrences of the patterns. + def remove!(*patterns) + patterns.each do |pattern| + gsub! pattern, "" + end + + self end # Truncates a given +text+ after a given <tt>length</tt> if +text+ is longer than <tt>length</tt>: diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb index 2f4691817f..35095f2b2d 100644 --- a/activesupport/test/core_ext/string_ext_test.rb +++ b/activesupport/test/core_ext/string_ext_test.rb @@ -260,8 +260,18 @@ class StringInflectionsTest < ActiveSupport::TestCase end def test_remove - assert_equal "Summer", "Fast Summer".remove(/Fast /) - assert_equal "Summer", "Fast Summer".remove!(/Fast /) + original = "This is a good day to die" + assert_equal "This is a good day", original.remove(" to die") + assert_equal "This is a good day", original.remove(" to ", /die/) + assert_equal "This is a good day to die", original + end + + def test_remove! + original = "This is a very good day to die" + assert_equal "This is a good day to die", original.remove!(" very") + assert_equal "This is a good day to die", original + assert_equal "This is a good day", original.remove!(" to ", /die/) + assert_equal "This is a good day", original end def test_constantize |