diff options
| -rw-r--r-- | mrbgems/mruby-string-ext/src/string.c | 7 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/test/string.rb | 11 |
2 files changed, 18 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index ce11da866..303aae65d 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -169,6 +169,12 @@ mrb_str_hex(mrb_state *mrb, mrb_value self) return mrb_str_to_inum(mrb, self, 16, FALSE); } +static mrb_value +mrb_str_oct(mrb_state *mrb, mrb_value self) +{ + return mrb_str_to_inum(mrb, self, 8, FALSE); +} + void mrb_mruby_string_ext_gem_init(mrb_state* mrb) { @@ -183,6 +189,7 @@ mrb_mruby_string_ext_gem_init(mrb_state* mrb) 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()); + mrb_define_method(mrb, s, "oct", mrb_str_oct, MRB_ARGS_NONE()); } void diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb index fc6e6d563..53bb175bd 100644 --- a/mrbgems/mruby-string-ext/test/string.rb +++ b/mrbgems/mruby-string-ext/test/string.rb @@ -143,3 +143,14 @@ assert('String#hex') do assert_equal 16, "10z".hex assert_equal 0, "".hex end + +assert('String#oct') do + assert_equal 8, "10".oct + assert_equal 7, "7".oct + assert_equal 0, "8".oct + assert_equal 0, "9".oct + assert_equal 0, "xyz".oct + assert_equal 8, "10z".oct + assert_equal 8, "010".oct + assert_equal (-8), "-10".oct +end |
