Feature #7388 ยป object_embed.patch
ChangeLog | ||
---|---|---|
Wed Dec 14 22:23:14 2011 <pyr@omega>
|
||
* object.c: Add Object#embed which works like tap but returns the block's
|
||
value. Useful in method chains.
|
||
Wed Dec 14 21:58:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
|
||
* test/ruby/test_io_m17n.rb
|
object.c | ||
---|---|---|
return obj;
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* obj.embed{|x|...} -> obj
|
||
*
|
||
* Yields <code>x</code> to the block, and then returns the return value
|
||
* of the block. The primary purpose of this method is to modify the object
|
||
* in place in a method chain.
|
||
*
|
||
* (1..10).embed {|x| {:numbers => x}}
|
||
*
|
||
*/
|
||
VALUE
|
||
rb_obj_embed(VALUE obj)
|
||
{
|
||
VALUE retval;
|
||
retval = rb_yield(obj);
|
||
return retval;
|
||
}
|
||
/*
|
||
* Document-method: inherited
|
||
... | ... | |
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_method(rb_mKernel, "embed", rb_obj_embed, 0);
|
||
rb_define_global_function("sprintf", rb_f_sprintf, -1); /* in sprintf.c */
|
||
rb_define_global_function("format", rb_f_sprintf, -1); /* in sprintf.c */
|