diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-02-03 09:48:00 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-02-03 09:48:00 +0000 |
commit | 06d4e3b42d836b762c29cdc9dc7181caf14dcdec (patch) | |
tree | 4c85b1a55d024c59143e193b17e2444cb6873c6e /enum.c | |
parent | 99839272a3cf1dfe69bd3bad26d96a915b905ef1 (diff) |
990203
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -123,6 +123,28 @@ enum_find_all(obj) } static VALUE +reject_i(i, tmp) + VALUE i, tmp; +{ + if (!RTEST(rb_yield(i))) { + rb_ary_push(tmp, i); + } + return Qnil; +} + +static VALUE +enum_reject(obj) + VALUE obj; +{ + VALUE tmp; + + tmp = rb_ary_new(); + rb_iterate(rb_each, obj, reject_i, tmp); + + return tmp; +} + +static VALUE collect_i(i, tmp) VALUE i, tmp; { @@ -377,6 +399,7 @@ Init_Enumerable() rb_define_method(rb_mEnumerable,"detect", enum_find, -1); rb_define_method(rb_mEnumerable,"find_all", enum_find_all, 0); rb_define_method(rb_mEnumerable,"select", enum_find_all, 0); + rb_define_method(rb_mEnumerable,"reject", enum_reject, 0); rb_define_method(rb_mEnumerable,"collect", enum_collect, 0); rb_define_method(rb_mEnumerable,"min", enum_min, 0); rb_define_method(rb_mEnumerable,"max", enum_max, 0); |