зеркало из https://github.com/github/ruby.git
* enum.c (enum_all): now works without block.
* enum.c (enum_any): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ed8fb0876d
Коммит
a973f9698f
|
@ -12,6 +12,12 @@ Tue Jan 14 21:47:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
||||||
the suffix specifiched. [ruby-dev:18702]
|
the suffix specifiched. [ruby-dev:18702]
|
||||||
http://moonrock.jp/~don/d/200211.html#d08_t1
|
http://moonrock.jp/~don/d/200211.html#d08_t1
|
||||||
|
|
||||||
|
Tue Jan 14 18:36:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* enum.c (enum_all): now works without block.
|
||||||
|
|
||||||
|
* enum.c (enum_any): ditto.
|
||||||
|
|
||||||
Tue Jan 14 01:21:32 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
Tue Jan 14 01:21:32 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
||||||
|
|
||||||
* io.c (next_argv): not always set binmode.
|
* io.c (next_argv): not always set binmode.
|
||||||
|
|
32
enum.c
32
enum.c
|
@ -287,7 +287,7 @@ enum_sort_by(obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
all_i(i, memo)
|
all_iter_i(i, memo)
|
||||||
VALUE i;
|
VALUE i;
|
||||||
NODE *memo;
|
NODE *memo;
|
||||||
{
|
{
|
||||||
|
@ -298,6 +298,18 @@ all_i(i, memo)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
all_i(i, memo)
|
||||||
|
VALUE i;
|
||||||
|
NODE *memo;
|
||||||
|
{
|
||||||
|
if (!RTEST(i)) {
|
||||||
|
memo->u1.value = Qfalse;
|
||||||
|
rb_iter_break();
|
||||||
|
}
|
||||||
|
return Qnil;
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
enum_all(obj)
|
enum_all(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
|
@ -306,18 +318,30 @@ enum_all(obj)
|
||||||
NODE *memo = rb_node_newnode(NODE_MEMO, Qnil, 0, 0);
|
NODE *memo = rb_node_newnode(NODE_MEMO, Qnil, 0, 0);
|
||||||
|
|
||||||
memo->u1.value = Qtrue;
|
memo->u1.value = Qtrue;
|
||||||
rb_iterate(rb_each, obj, all_i, (VALUE)memo);
|
rb_iterate(rb_each, obj, rb_block_given_p() ? all_iter_i : all_i, (VALUE)memo);
|
||||||
result = memo->u1.value;
|
result = memo->u1.value;
|
||||||
rb_gc_force_recycle((VALUE)memo);
|
rb_gc_force_recycle((VALUE)memo);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
any_iter_i(i, memo)
|
||||||
|
VALUE i;
|
||||||
|
NODE *memo;
|
||||||
|
{
|
||||||
|
if (RTEST(rb_yield(i))) {
|
||||||
|
memo->u1.value = Qtrue;
|
||||||
|
rb_iter_break();
|
||||||
|
}
|
||||||
|
return Qnil;
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
any_i(i, memo)
|
any_i(i, memo)
|
||||||
VALUE i;
|
VALUE i;
|
||||||
NODE *memo;
|
NODE *memo;
|
||||||
{
|
{
|
||||||
if (RTEST(rb_yield(i))) {
|
if (RTEST(i)) {
|
||||||
memo->u1.value = Qtrue;
|
memo->u1.value = Qtrue;
|
||||||
rb_iter_break();
|
rb_iter_break();
|
||||||
}
|
}
|
||||||
|
@ -332,7 +356,7 @@ enum_any(obj)
|
||||||
NODE *memo = rb_node_newnode(NODE_MEMO, Qnil, 0, 0);
|
NODE *memo = rb_node_newnode(NODE_MEMO, Qnil, 0, 0);
|
||||||
|
|
||||||
memo->u1.value = Qfalse;
|
memo->u1.value = Qfalse;
|
||||||
rb_iterate(rb_each, obj, any_i, (VALUE)memo);
|
rb_iterate(rb_each, obj, rb_block_given_p() ? any_iter_i : any_i, (VALUE)memo);
|
||||||
result = memo->u1.value;
|
result = memo->u1.value;
|
||||||
rb_gc_force_recycle((VALUE)memo);
|
rb_gc_force_recycle((VALUE)memo);
|
||||||
return result;
|
return result;
|
||||||
|
|
1
eval.c
1
eval.c
|
@ -5613,6 +5613,7 @@ rb_f_require(obj, fname)
|
||||||
|
|
||||||
SafeStringValue(fname);
|
SafeStringValue(fname);
|
||||||
ext = strrchr(RSTRING(fname)->ptr, '.');
|
ext = strrchr(RSTRING(fname)->ptr, '.');
|
||||||
|
if (ext && strchr(ext, '/')) ext = 0;
|
||||||
if (ext) {
|
if (ext) {
|
||||||
if (strcmp(".rb", ext) == 0) {
|
if (strcmp(".rb", ext) == 0) {
|
||||||
feature = rb_str_dup(fname);
|
feature = rb_str_dup(fname);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче