From 80361e2c47fa79880e04df2f344b48fb607e144f Mon Sep 17 00:00:00 2001 From: knu Date: Mon, 14 Apr 2008 04:22:44 +0000 Subject: * range.c (range_each, range_step): Return an enumerator if no block is given. * struct.c (rb_struct_each, rb_struct_each_pair): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 12 +++++++----- NEWS | 10 ++++++++++ range.c | 4 ++++ struct.c | 2 ++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2535d633fe..8c5748b360 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Apr 14 13:19:36 2008 Akinori MUSHA + + * 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 * string.c (rb_str_partition, rb_str_rpartition, @@ -6,11 +13,6 @@ Mon Apr 14 13:07:59 2008 Akinori MUSHA backported from 1.9. These methods are $KCODE aware unlike #index, #rindex and #include?. -Mon Apr 14 00:11:22 2008 Akinori MUSHA - - * 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 * object.c (sym_to_proc): new method Symbol#to_proc; backported diff --git a/NEWS b/NEWS index 6fc2a9fe64..c0d2628ba7 100644 --- a/NEWS +++ b/NEWS @@ -68,6 +68,11 @@ with all sufficient information, see the ChangeLog file. * 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 @@ with all sufficient information, see the ChangeLog file. 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 diff --git a/range.c b/range.c index e1909047d1..e94ee13599 100644 --- a/range.c +++ b/range.c @@ -310,6 +310,8 @@ range_step(argc, argv, range) 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 @@ range_each(range) { VALUE beg, end; + RETURN_ENUMERATOR(range, 0, 0); + beg = rb_ivar_get(range, id_beg); end = rb_ivar_get(range, id_end); diff --git a/struct.c b/struct.c index aaa2a4bce7..73017d1210 100644 --- a/struct.c +++ b/struct.c @@ -431,6 +431,7 @@ rb_struct_each(s) { long i; + RETURN_ENUMERATOR(s, 0, 0); for (i=0; ilen; i++) { rb_yield(RSTRUCT(s)->ptr[i]); } @@ -462,6 +463,7 @@ rb_struct_each_pair(s) VALUE members; long i; + RETURN_ENUMERATOR(s, 0, 0); members = rb_struct_members(s); for (i=0; ilen; i++) { rb_yield_values(2, rb_ary_entry(members, i), RSTRUCT(s)->ptr[i]); -- cgit v1.2.3