summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-11-22 08:37:12 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-11-22 08:37:12 +0000
commit0d9c33d14be362e51eb189472351a1f78299b4b9 (patch)
tree384ea66acf57989e9da7fc194c3362684529d047
parent5dd8f6e20cb982a5598f3f8977d844b17cf2e6b8 (diff)
* object.c (rb_obj_tap): a new method. [ruby-talk:224013]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--object.c18
2 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d0f05504c3..8ca1abea84 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,10 @@ Wed Nov 22 16:00:49 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tkutil/extconf.rb: able to be called manually
[ruby-talk:225950].
+Sat Nov 18 23:39:20 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_tap): a new method. [ruby-talk:224013]
+
Wed Nov 15 23:22:54 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (test_grpowned, rb_stat_grpowned): should honor
diff --git a/object.c b/object.c
index 9660ee6d95..a73ee66b4f 100644
--- a/object.c
+++ b/object.c
@@ -410,6 +410,23 @@ rb_obj_is_kind_of(VALUE obj, VALUE c)
/*
+ * call-seq:
+ * obj.tap{|x|...} => obj
+ *
+ * Returns the receiver after executing the block given. Its main
+ * purpose is to be inseted in the method chain.
+ *
+ */
+
+VALUE
+rb_obj_tap(VALUE obj)
+{
+ rb_yield(obj);
+ return obj;
+}
+
+
+/*
* Document-method: inherited
*
* call-seq:
@@ -2326,6 +2343,7 @@ Init_Object(void)
rb_define_method(rb_mKernel, "instance_of?", rb_obj_is_instance_of, 1);
rb_define_method(rb_mKernel, "kind_of?", rb_obj_is_kind_of, 1);
rb_define_method(rb_mKernel, "is_a?", rb_obj_is_kind_of, 1);
+ rb_define_method(rb_mKernel, "tap", rb_obj_tap, 0);
rb_define_private_method(rb_mKernel, "singleton_method_added", rb_obj_dummy, 1);
rb_define_private_method(rb_mKernel, "singleton_method_removed", rb_obj_dummy, 1);