[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]