diff options
| author | takahashim <[email protected]> | 2015-11-23 19:51:02 +0900 |
|---|---|---|
| committer | takahashim <[email protected]> | 2015-11-24 08:39:39 +0900 |
| commit | 621487a0cd8acc5bbec73c98ebbb23c519ba6e6d (patch) | |
| tree | 7c28981ea380b3fa0f1bc7f9e59f98e7b2a0cb2d /mrbgems/mruby-string-ext | |
| parent | 625a3fee7729a12b0ff613e80b7b45ba0e2f086b (diff) | |
| download | mruby-621487a0cd8acc5bbec73c98ebbb23c519ba6e6d.tar.gz mruby-621487a0cd8acc5bbec73c98ebbb23c519ba6e6d.zip | |
add {Array|Hash|String}.try_convert
Diffstat (limited to 'mrbgems/mruby-string-ext')
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 19 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/test/string.rb | 7 |
2 files changed, 26 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index 4c8a2ce3b..c699e13b7 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -1,6 +1,25 @@ class String ## + # call-seq: + # String.try_convert(obj) -> string or nil + # + # Try to convert <i>obj</i> into a String, using to_str method. + # Returns converted string or nil if <i>obj</i> cannot be converted + # for any reason. + # + # String.try_convert("str") #=> "str" + # String.try_convert(/re/) #=> nil + # + def self.try_convert(obj) + if obj.respond_to?(:to_str) + obj.to_str + else + nil + end + end + + ## # call-seq: # string.clear -> string # diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb index 8324a1613..37a5d28cf 100644 --- a/mrbgems/mruby-string-ext/test/string.rb +++ b/mrbgems/mruby-string-ext/test/string.rb @@ -3,6 +3,13 @@ UTF8STRING = ("\343\201\202".size == 1) +assert('String.try_convert') do + assert_nil String.try_convert(nil) + assert_nil String.try_convert(:foo) + assert_equal "", String.try_convert("") + assert_equal "1,2,3", String.try_convert("1,2,3") +end + assert('String#getbyte') do str1 = "hello" bytes1 = [104, 101, 108, 108, 111] |
