ruby-changes:4506
From: ko1@a...
Date: Mon, 14 Apr 2008 13:23:00 +0900 (JST)
Subject: [ruby-changes:4506] knu - Ruby:r15999 (ruby_1_8): * range.c (range_each, range_step): Return an enumerator if no
knu 2008-04-14 13:22:44 +0900 (Mon, 14 Apr 2008)
New Revision: 15999
Modified files:
branches/ruby_1_8/ChangeLog
branches/ruby_1_8/NEWS
branches/ruby_1_8/range.c
branches/ruby_1_8/struct.c
Log:
* range.c (range_each, range_step): Return an enumerator if no
block is given.
* struct.c (rb_struct_each, rb_struct_each_pair): Ditto.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/range.c?r1=15999&r2=15998&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=15999&r2=15998&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/struct.c?r1=15999&r2=15998&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/NEWS?r1=15999&r2=15998&diff_format=u
Index: ruby_1_8/NEWS
===================================================================
--- ruby_1_8/NEWS (revision 15998)
+++ ruby_1_8/NEWS (revision 15999)
@@ -68,6 +68,11 @@
* Process.exec implemented.
+ * Range#each
+ * Range#step
+
+ Return an enumerator if no block is given.
+
* Regexp.union accepts an array of patterns.
* String#partition
@@ -83,6 +88,11 @@
New exception class that causes Kernel#loop to stop iteration when
raised.
+ * Struct#each
+ * Struct#each_pair
+
+ Return an enumerator if no block is given.
+
* Symbol#to_proc implemented.
* enumerator
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog (revision 15998)
+++ ruby_1_8/ChangeLog (revision 15999)
@@ -1,3 +1,10 @@
+Mon Apr 14 13:19:36 2008 Akinori MUSHA <knu@i...>
+
+ * range.c (range_each, range_step): Return an enumerator if no
+ block is given.
+
+ * struct.c (rb_struct_each, rb_struct_each_pair): Ditto.
+
Mon Apr 14 13:07:59 2008 Akinori MUSHA <knu@i...>
* string.c (rb_str_partition, rb_str_rpartition,
@@ -6,11 +13,6 @@
backported from 1.9. These methods are $KCODE aware unlike
#index, #rindex and #include?.
-Mon Apr 14 00:11:22 2008 Akinori MUSHA <knu@i...>
-
- * struct.c (rb_struct_each, rb_struct_each_pair): Return
- an enumerator if no block is given.
-
Sun Apr 13 15:55:52 2008 Kazuhiro NISHIYAMA <zn@m...>
* object.c (sym_to_proc): new method Symbol#to_proc; backported
Index: ruby_1_8/range.c
===================================================================
--- ruby_1_8/range.c (revision 15998)
+++ ruby_1_8/range.c (revision 15999)
@@ -310,6 +310,8 @@
VALUE b, e, step;
long unit;
+ RETURN_ENUMERATOR(range, argc, argv);
+
b = rb_ivar_get(range, id_beg);
e = rb_ivar_get(range, id_end);
if (rb_scan_args(argc, argv, "01", &step) == 0) {
@@ -411,6 +413,8 @@
{
VALUE beg, end;
+ RETURN_ENUMERATOR(range, 0, 0);
+
beg = rb_ivar_get(range, id_beg);
end = rb_ivar_get(range, id_end);
Index: ruby_1_8/struct.c
===================================================================
--- ruby_1_8/struct.c (revision 15998)
+++ ruby_1_8/struct.c (revision 15999)
@@ -431,6 +431,7 @@
{
long i;
+ RETURN_ENUMERATOR(s, 0, 0);
for (i=0; i<RSTRUCT(s)->len; i++) {
rb_yield(RSTRUCT(s)->ptr[i]);
}
@@ -462,6 +463,7 @@
VALUE members;
long i;
+ RETURN_ENUMERATOR(s, 0, 0);
members = rb_struct_members(s);
for (i=0; i<RSTRUCT(s)->len; i++) {
rb_yield_values(2, rb_ary_entry(members, i), RSTRUCT(s)->ptr[i]);
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/