summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-object-ext/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-05-19 22:15:27 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2019-05-19 22:17:56 +0900
commit8e637bdd83505e8c1723f87a8d267e00ee209787 (patch)
tree9c862fa8015f64d8e0f730679885c6fb25de93e5 /mrbgems/mruby-object-ext/src
parent1cdb3ec93c09629dd24cab8a5e8f66ae6d26bf60 (diff)
downloadmruby-8e637bdd83505e8c1723f87a8d267e00ee209787.tar.gz
mruby-8e637bdd83505e8c1723f87a8d267e00ee209787.zip
Should clarify the role of `mruby-kernel-ext` and `mruby-object-ext`; close #4449
The former should contain function like methods, and the latter should contain methods shared by all objects.
Diffstat (limited to 'mrbgems/mruby-object-ext/src')
-rw-r--r--mrbgems/mruby-object-ext/src/object.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c
index b076b3ec0..dce97132c 100644
--- a/mrbgems/mruby-object-ext/src/object.c
+++ b/mrbgems/mruby-object-ext/src/object.c
@@ -46,6 +46,22 @@ nil_to_i(mrb_state *mrb, mrb_value obj)
/*
* call-seq:
+ * obj.itself -> an_object
+ *
+ * Returns <i>obj</i>.
+ *
+ * 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;
+}
+
+/*
+ * call-seq:
* obj.instance_exec(arg...) {|var...| block } -> obj
*
* Executes the given block within the context of the receiver
@@ -102,6 +118,7 @@ mrb_mruby_object_ext_gem_init(mrb_state* mrb)
mrb_define_method(mrb, n, "to_f", nil_to_f, MRB_ARGS_NONE());
#endif
mrb_define_method(mrb, n, "to_i", nil_to_i, MRB_ARGS_NONE());
+ mrb_define_module_function(mrb, mrb->kernel_module, "itself", mrb_f_itself, MRB_ARGS_NONE());
mrb_define_method(mrb, mrb->kernel_module, "instance_exec", mrb_obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK());
}