ruby-changes:5140
From: knu <ko1@a...>
Date: Tue, 27 May 2008 19:05:13 +0900 (JST)
Subject: [ruby-changes:5140] Ruby:r16635 (trunk): * ext/stringio/stringio.c (strio_each_char, Init_stringio): Add
knu 2008-05-27 19:03:23 +0900 (Tue, 27 May 2008)
New Revision: 16635
Modified files:
trunk/ChangeLog
trunk/ext/stringio/stringio.c
Log:
* ext/stringio/stringio.c (strio_each_char, Init_stringio): Add
StringIO#{each_char,chars}.
(Init_stringio): Fix StringIO#bytes.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16635&r2=16634&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/stringio/stringio.c?r1=16635&r2=16634&diff_format=u
Index: ChangeLog
===================================================================
--- ChangeLog (revision 16634)
+++ ChangeLog (revision 16635)
@@ -1,3 +1,9 @@
+Tue May 27 19:00:22 2008 Akinori MUSHA <knu@i...>
+
+ * ext/stringio/stringio.c (strio_each_char, Init_stringio): Add
+ StringIO#{each_char,chars}.
+ (Init_stringio): Fix StringIO#bytes.
+
Tue May 27 17:54:35 2008 Akinori MUSHA <knu@i...>
* ext/stringio/stringio.c (strio_each_byte): Return self instead
Index: ext/stringio/stringio.c
===================================================================
--- ext/stringio/stringio.c (revision 16634)
+++ ext/stringio/stringio.c (revision 16635)
@@ -755,6 +755,25 @@
return c;
}
+/*
+ * call-seq:
+ * strio.each_char {|char| block } -> strio
+ *
+ * See IO#each_char.
+ */
+static VALUE
+strio_each_char(VALUE self)
+{
+ VALUE c;
+
+ RETURN_ENUMERATOR(self, 0, 0);
+
+ while (!NIL_P(c = strio_getc(self))) {
+ rb_yield(c);
+ }
+ return self;
+}
+
/* Boyer-Moore search: copied from regex.c */
static void
bm_init_skip(long *skip, const char *pat, long m)
@@ -1237,10 +1256,12 @@
rb_define_method(StringIO, "path", strio_path, 0);
rb_define_method(StringIO, "each", strio_each, -1);
- rb_define_method(StringIO, "each_byte", strio_each_byte, 0);
- rb_define_method(StringIO, "bytes", strio_each_byte, -1);
rb_define_method(StringIO, "each_line", strio_each, -1);
rb_define_method(StringIO, "lines", strio_each, -1);
+ rb_define_method(StringIO, "each_byte", strio_each_byte, 0);
+ rb_define_method(StringIO, "bytes", strio_each_byte, 0);
+ rb_define_method(StringIO, "each_char", strio_each_char, 0);
+ rb_define_method(StringIO, "chars", strio_each_char, 0);
rb_define_method(StringIO, "getc", strio_getc, 0);
rb_define_method(StringIO, "ungetc", strio_ungetc, 1);
rb_define_method(StringIO, "readchar", strio_readchar, 0);
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/