diff options
author | bogdanvlviv <bogdanvlviv@gmail.com> | 2016-03-31 02:11:19 +0300 |
---|---|---|
committer | bogdanvlviv <bogdanvlviv@gmail.com> | 2016-03-31 19:52:10 +0300 |
commit | f2489f493b794ee83a86e746b6240031acb8994e (patch) | |
tree | 2cf9a32c4e351373ff68e526ba8c042dbf8e29b4 /activesupport | |
parent | a564fecbd0c96815664067b727817045459cae98 (diff) | |
download | rails-f2489f493b794ee83a86e746b6240031acb8994e.tar.gz rails-f2489f493b794ee83a86e746b6240031acb8994e.tar.bz2 rails-f2489f493b794ee83a86e746b6240031acb8994e.zip |
Fix method String#upcase_first
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/CHANGELOG.md | 2 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/string/inflections.rb | 4 | ||||
-rw-r--r-- | activesupport/lib/active_support/inflector/methods.rb | 6 | ||||
-rw-r--r-- | activesupport/test/core_ext/string_ext_test.rb | 8 |
4 files changed, 16 insertions, 4 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index dd1b347e73..0baa95cdf0 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,6 +1,6 @@ * Add `String#upcase_first` method. - *Glauco Custódio* + *Glauco Custódio*, *bogdanvlviv* * Prevent `Marshal.load` from looping infinitely when trying to autoload a constant which resolves to a different name. diff --git a/activesupport/lib/active_support/core_ext/string/inflections.rb b/activesupport/lib/active_support/core_ext/string/inflections.rb index f301eeac43..7277f51076 100644 --- a/activesupport/lib/active_support/core_ext/string/inflections.rb +++ b/activesupport/lib/active_support/core_ext/string/inflections.rb @@ -224,7 +224,9 @@ class String # Converts just the first character to uppercase. # - # 'what a Lovely Day'.upcase_first # => "What a Lovely Day" + # 'what a Lovely Day'.upcase_first # => "What a Lovely Day" + # 'w'.upcase_first # => "W" + # ''.upcase_first # => "" def upcase_first ActiveSupport::Inflector.upcase_first(self) end diff --git a/activesupport/lib/active_support/inflector/methods.rb b/activesupport/lib/active_support/inflector/methods.rb index 3fbc19ddf8..f94e12e14f 100644 --- a/activesupport/lib/active_support/inflector/methods.rb +++ b/activesupport/lib/active_support/inflector/methods.rb @@ -142,9 +142,11 @@ module ActiveSupport # Converts just the first character to uppercase. # - # 'what a Lovely Day'.upcase_first # => "What a Lovely Day" + # upcase_first('what a Lovely Day') # => "What a Lovely Day" + # upcase_first('w') # => "W" + # upcase_first('') # => "" def upcase_first(string) - string[0].upcase.concat(string[1..-1]) + string.length > 0 ? string[0].upcase.concat(string[1..-1]) : '' end # Capitalizes all the words and replaces some characters in the string to diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb index 5c0b60039a..4761ce580c 100644 --- a/activesupport/test/core_ext/string_ext_test.rb +++ b/activesupport/test/core_ext/string_ext_test.rb @@ -80,6 +80,14 @@ class StringInflectionsTest < ActiveSupport::TestCase assert_equal "What a Lovely Day", "what a Lovely Day".upcase_first end + def test_upcase_first_with_one_char + assert_equal "W", "w".upcase_first + end + + def test_upcase_first_with_empty_string + assert_equal "", "".upcase_first + end + def test_camelize CamelToUnderscore.each do |camel, underscore| assert_equal(camel, underscore.camelize) |