ruby-changes:4517
From: ko1@a...
Date: Mon, 14 Apr 2008 18:20:13 +0900 (JST)
Subject: [ruby-changes:4517] knu - Ruby:r16010 (ruby_1_8): * enum.c (enum_find, enum_reject): Return an enumerator if no
knu 2008-04-14 18:19:52 +0900 (Mon, 14 Apr 2008)
New Revision: 16010
Modified files:
branches/ruby_1_8/ChangeLog
branches/ruby_1_8/NEWS
branches/ruby_1_8/enum.c
branches/ruby_1_8/io.c
branches/ruby_1_8/string.c
Log:
* enum.c (enum_find, enum_reject): Return an enumerator if no
block is given.
* io.c (rb_io_each_line, rb_io_each_byte, rb_io_s_foreach,
argf_each_line, argf_each_byte): Ditto.
* string.c (str_gsub): Ditto.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/enum.c?r1=16010&r2=16009&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=16010&r2=16009&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/io.c?r1=16010&r2=16009&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/NEWS?r1=16010&r2=16009&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/string.c?r1=16010&r2=16009&diff_format=u
Index: ruby_1_8/NEWS
===================================================================
--- ruby_1_8/NEWS (revision 16009)
+++ ruby_1_8/NEWS (revision 16010)
@@ -68,8 +68,10 @@
New methods.
+ * Enumerable#find
* Enumerable#find_all
* Enumerable#partition
+ * Enumerable#reject
* Enumerable#select
* Enumerable#sort_by
@@ -105,6 +107,16 @@
Return an enumerator if no block is given.
+ * IO#each
+ * IO#each_line
+ * IO#each_byte
+ * IO.foreach
+ * ARGF.each
+ * ARGF.each_line
+ * ARGF.each_byte
+
+ Return an enumerator if no block is given.
+
* Numeric#step
Return an enumerator if no block is given.
@@ -137,6 +149,7 @@
* String#each_byte
* String#each
* String#each_lines
+ * String#gsub(pattern)
Return an enumerator if no block is given.
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog (revision 16009)
+++ ruby_1_8/ChangeLog (revision 16010)
@@ -1,3 +1,13 @@
+Mon Apr 14 18:14:19 2008 Akinori MUSHA <knu@i...>
+
+ * enum.c (enum_find, enum_reject): Return an enumerator if no
+ block is given.
+
+ * io.c (rb_io_each_line, rb_io_each_byte, rb_io_s_foreach,
+ argf_each_line, argf_each_byte): Ditto.
+
+ * string.c (str_gsub): Ditto.
+
Mon Apr 14 18:10:05 2008 NAKAMURA Usaku <usa@r...>
* enum.c (find_index_i, find_index_iter_i): add prototype for VC.
Index: ruby_1_8/enum.c
===================================================================
--- ruby_1_8/enum.c (revision 16009)
+++ ruby_1_8/enum.c (revision 16010)
@@ -219,6 +219,7 @@
VALUE if_none;
rb_scan_args(argc, argv, "01", &if_none);
+ RETURN_ENUMERATOR(obj, argc, argv);
rb_iterate(rb_each, obj, find_i, (VALUE)&memo);
if (memo != Qundef) {
return memo;
@@ -366,6 +367,7 @@
{
VALUE ary = rb_ary_new();
+ RETURN_ENUMERATOR(obj, 0, 0);
rb_iterate(rb_each, obj, reject_i, ary);
return ary;
Index: ruby_1_8/string.c
===================================================================
--- ruby_1_8/string.c (revision 16009)
+++ ruby_1_8/string.c (revision 16010)
@@ -2096,7 +2096,8 @@
char *buf, *bp, *sp, *cp;
int tainted = 0;
- if (argc == 1 && rb_block_given_p()) {
+ if (argc == 1) {
+ RETURN_ENUMERATOR(str, argc, argv);
iter = 1;
}
else if (argc == 2) {
Index: ruby_1_8/io.c
===================================================================
--- ruby_1_8/io.c (revision 16009)
+++ ruby_1_8/io.c (revision 16010)
@@ -1964,6 +1964,7 @@
VALUE str;
VALUE rs;
+ RETURN_ENUMERATOR(io, argc, argv);
if (argc == 0) {
rs = rb_rs;
}
@@ -1999,6 +2000,7 @@
FILE *f;
int c;
+ RETURN_ENUMERATOR(io, 0, 0);
GetOpenFile(io, fptr);
for (;;) {
@@ -5268,14 +5270,16 @@
*/
static VALUE
-rb_io_s_foreach(argc, argv)
+rb_io_s_foreach(argc, argv, self)
int argc;
VALUE *argv;
+ VALUE self;
{
VALUE fname;
struct foreach_arg arg;
rb_scan_args(argc, argv, "11", &fname, &arg.sep);
+ RETURN_ENUMERATOR(self, argc, argv);
SafeStringValue(fname);
if (argc == 1) {
@@ -5527,12 +5531,14 @@
}
static VALUE
-argf_each_line(argc, argv)
+argf_each_line(argc, argv, argf)
int argc;
VALUE *argv;
+ VALUE argf;
{
VALUE str;
+ RETURN_ENUMERATOR(argf, argc, argv);
if (!next_argv()) return Qnil;
if (TYPE(current_file) != T_FILE) {
for (;;) {
@@ -5548,10 +5554,12 @@
}
static VALUE
-argf_each_byte()
+argf_each_byte(argf)
+ VALUE argf;
{
VALUE byte;
+ RETURN_ENUMERATOR(argf, 0, 0);
while (!NIL_P(byte = argf_getc())) {
rb_yield(byte);
}
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/