diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-20 21:30:16 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-20 21:30:16 +0900 |
| commit | a6d8df6761a0c84f0cd275a709050c187f60b35f (patch) | |
| tree | dc456e277901035c91046cdfebe35a4841442291 /mrbgems | |
| parent | bd75406a3e48d95c0e67619719f43fdf1712757a (diff) | |
| parent | 617fa702117e1afd8557bfc8d8627942deee80e2 (diff) | |
| download | mruby-a6d8df6761a0c84f0cd275a709050c187f60b35f.tar.gz mruby-a6d8df6761a0c84f0cd275a709050c187f60b35f.zip | |
Merge pull request #2088 from ksss/string-casecmp
String#casecmp should be call `to_str`
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 4 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/test/string.rb | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index a517aa209..45c631b94 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -47,7 +47,9 @@ class String # "abcdef".casecmp("ABCDEF") #=> 0 # def casecmp(str) - self.downcase <=> str.downcase + self.downcase <=> str.to_str.downcase + rescue NoMethodError + raise TypeError, "no implicit conversion of #{str.class} into String" end def partition(sep) diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb index 90bb43c65..4c5620575 100644 --- a/mrbgems/mruby-string-ext/test/string.rb +++ b/mrbgems/mruby-string-ext/test/string.rb @@ -98,6 +98,11 @@ assert('String#casecmp') do assert_equal 0, "aBcDeF".casecmp("abcdef") assert_equal(-1, "abcdef".casecmp("abcdefg")) assert_equal 0, "abcdef".casecmp("ABCDEF") + o = Object.new + def o.to_str + "ABCDEF" + end + assert_equal 0, "abcdef".casecmp(o) end assert('String#start_with?') do |
