diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-03-27 12:15:19 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-03-27 12:15:19 +0900 |
| commit | 5067e7b0640507b1b953609b53a00a1bf14042c1 (patch) | |
| tree | eb3975b13412687b8261f60cb82e6d3afefb3da4 | |
| parent | 292abdb609386b56cfa75fb0a48e0d564bdc9443 (diff) | |
| parent | 0df65751c68492285306f9f6f020f3727dfaf51a (diff) | |
| download | mruby-5067e7b0640507b1b953609b53a00a1bf14042c1.tar.gz mruby-5067e7b0640507b1b953609b53a00a1bf14042c1.zip | |
Merge pull request #1959 from mattn/string_hex
Implement String#hex
| -rw-r--r-- | mrbgems/mruby-string-ext/src/string.c | 7 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/test/string.rb | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index bb4b4c8fc..ce11da866 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -163,6 +163,12 @@ mrb_str_end_with(mrb_state *mrb, mrb_value self) return mrb_false_value(); } +static mrb_value +mrb_str_hex(mrb_state *mrb, mrb_value self) +{ + return mrb_str_to_inum(mrb, self, 16, FALSE); +} + void mrb_mruby_string_ext_gem_init(mrb_state* mrb) { @@ -176,6 +182,7 @@ mrb_mruby_string_ext_gem_init(mrb_state* mrb) mrb_define_method(mrb, s, "<<", mrb_str_concat2, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "start_with?", mrb_str_start_with, MRB_ARGS_REST()); mrb_define_method(mrb, s, "end_with?", mrb_str_end_with, MRB_ARGS_REST()); + mrb_define_method(mrb, s, "hex", mrb_str_hex, MRB_ARGS_NONE()); } void diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb index c951ea7e3..fc6e6d563 100644 --- a/mrbgems/mruby-string-ext/test/string.rb +++ b/mrbgems/mruby-string-ext/test/string.rb @@ -133,3 +133,13 @@ assert('String#rpartition') do assert_equal ["", "b", "aaaa"], "baaaa".rpartition("b") assert_equal ["", "", ""], "".rpartition("a") end + +assert('String#hex') do + assert_equal 16, "10".hex + assert_equal 255, "ff".hex + assert_equal 16, "0x10".hex + assert_equal (-16), "-0x10".hex + assert_equal 0, "xyz".hex + assert_equal 16, "10z".hex + assert_equal 0, "".hex +end |
