diff options
| author | Jun Hiroe <[email protected]> | 2014-10-20 10:59:21 +0900 |
|---|---|---|
| committer | Jun Hiroe <[email protected]> | 2014-10-20 22:35:58 +0900 |
| commit | de04d3f0804dc7d87539bf8cc979abbf50e61735 (patch) | |
| tree | 007e68292b7d1c3556b2a34af716057f0a534384 /mrbgems/mruby-kernel-ext/src | |
| parent | 69ba4f0ed5e7ce179a01316dea753042dfcdfd77 (diff) | |
| download | mruby-de04d3f0804dc7d87539bf8cc979abbf50e61735.tar.gz mruby-de04d3f0804dc7d87539bf8cc979abbf50e61735.zip | |
Add Kernel.String
Diffstat (limited to 'mrbgems/mruby-kernel-ext/src')
| -rw-r--r-- | mrbgems/mruby-kernel-ext/src/kernel.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c index ed3c1787e..011c58049 100644 --- a/mrbgems/mruby-kernel-ext/src/kernel.c +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -24,6 +24,31 @@ mrb_f_method(mrb_state *mrb, mrb_value self) /* * call-seq: + * String(arg) -> string + * + * Returns <i>arg</i> as an <code>String</code>. + * + * First tries to call its <code>to_str</code> method, then its to_s method. + * + * String(self) #=> "main" + * String(self.class) #=> "Object" + * String(123456) #=> "123456" + */ +static mrb_value +mrb_f_string(mrb_state *mrb, mrb_value self) +{ + mrb_value arg, tmp; + + mrb_get_args(mrb, "o", &arg); + tmp = mrb_check_convert_type(mrb, arg, MRB_TT_STRING, "String", "to_str"); + if (mrb_nil_p(tmp)) { + tmp = mrb_check_convert_type(mrb, arg, MRB_TT_STRING, "String", "to_s"); + } + return tmp; +} + +/* + * call-seq: * Array(arg) -> array * * Returns +arg+ as an Array. @@ -57,6 +82,7 @@ mrb_mruby_kernel_ext_gem_init(mrb_state *mrb) mrb_define_module_function(mrb, krn, "fail", mrb_f_raise, MRB_ARGS_OPT(2)); mrb_define_method(mrb, krn, "__method__", mrb_f_method, MRB_ARGS_NONE()); + mrb_define_module_function(mrb, krn, "String", mrb_f_string, MRB_ARGS_REQ(1)); mrb_define_module_function(mrb, krn, "Array", mrb_f_array, MRB_ARGS_REQ(1)); } |
