diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-27 10:03:23 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-27 10:03:23 +0000 |
commit | f643817e31d50eb6cf7b694aa1199fc522c49f51 (patch) | |
tree | 551a531d6caa89df03e5a0af713fbcaf29d22a9b /ext/stringio | |
parent | 0bc19f3b711a0eceda718be46a80272024683c05 (diff) | |
download | ruby-f643817e31d50eb6cf7b694aa1199fc522c49f51.tar.gz ruby-f643817e31d50eb6cf7b694aa1199fc522c49f51.tar.xz ruby-f643817e31d50eb6cf7b694aa1199fc522c49f51.zip |
* ext/stringio/stringio.c (strio_each_char, Init_stringio): Add
StringIO#{each_char,chars}.
(Init_stringio): Fix StringIO#bytes.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@16635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/stringio')
-rw-r--r-- | ext/stringio/stringio.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index b72f5a9a3..2f32d5a30 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -755,6 +755,25 @@ strio_readbyte(VALUE self) 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 @@ Init_stringio() 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); |