From 1519616ecb12fe9a121b83c32f74109cf2a5b533 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 17 Oct 2017 09:10:13 +0900 Subject: Add `Kernel#yield_self`; CRuby2.5 --- mrbgems/mruby-kernel-ext/mrblib/kernel.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mrbgems/mruby-kernel-ext/mrblib/kernel.rb (limited to 'mrbgems/mruby-kernel-ext') diff --git a/mrbgems/mruby-kernel-ext/mrblib/kernel.rb b/mrbgems/mruby-kernel-ext/mrblib/kernel.rb new file mode 100644 index 000000000..25a4d4ed4 --- /dev/null +++ b/mrbgems/mruby-kernel-ext/mrblib/kernel.rb @@ -0,0 +1,13 @@ +module Kernel + # call-seq: + # obj.yield_self {|_obj|...} -> an_object + # + # Yields obj and returns the result. + # + # 'my string'.yield_self {|s|s.upcase} #=> "MY STRING" + # + def yield_self(&block) + return to_enum :yield_self unless block + block.call(self) + end +end -- cgit v1.2.3 From fc930700b723ea2905deafb4dace5218b87d5a73 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 18 Oct 2017 10:21:54 +0900 Subject: Add `Kernel#itself`; CRuby2.2 --- mrbgems/mruby-kernel-ext/src/kernel.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'mrbgems/mruby-kernel-ext') diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c index 7e6fa28bd..94a8ac320 100644 --- a/mrbgems/mruby-kernel-ext/src/kernel.c +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -222,6 +222,22 @@ mrb_f_hash(mrb_state *mrb, mrb_value self) return tmp; } +/* + * call-seq: + * obj.itself -> an_object + * + * Returns obj. + * + * string = 'my string' #=> "my string" + * string.itself.object_id == string.object_id #=> true + * + */ +static mrb_value +mrb_f_itself(mrb_state *mrb, mrb_value self) +{ + return self; +} + void mrb_mruby_kernel_ext_gem_init(mrb_state *mrb) { @@ -235,6 +251,7 @@ mrb_mruby_kernel_ext_gem_init(mrb_state *mrb) 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)); mrb_define_module_function(mrb, krn, "Hash", mrb_f_hash, MRB_ARGS_REQ(1)); + mrb_define_module_function(mrb, krn, "itself", mrb_f_itself, MRB_ARGS_NONE()); } void -- cgit v1.2.3