зеркало из https://github.com/github/ruby.git
dir.c: Dir#each_child
* dir.c (dir_each_child_m): new instance methods Dir#each_child and Dir#children. [Feature #13969] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
f7210deb82
Коммит
6a3a7e9114
6
NEWS
6
NEWS
|
@ -20,6 +20,12 @@ with all sufficient information, see the ChangeLog file or Redmine
|
|||
|
||||
=== Core classes updates (outstanding ones only)
|
||||
|
||||
* Dir
|
||||
|
||||
* New methods:
|
||||
|
||||
* added Dir#each_child and Dir#children instance methods. [Feature #13969]
|
||||
|
||||
* Proc
|
||||
|
||||
* Proc#call doesn't change $SAFE any more. [Feature #14250]
|
||||
|
|
9
dir.c
9
dir.c
|
@ -2859,6 +2859,13 @@ dir_s_each_child(int argc, VALUE *argv, VALUE io)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
dir_each_child_m(VALUE dir)
|
||||
{
|
||||
RETURN_ENUMERATOR(dir, 0, 0);
|
||||
return dir_each_entry(dir, dir_yield, Qnil, TRUE);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
dir_collect_children(VALUE dir)
|
||||
{
|
||||
|
@ -3212,6 +3219,8 @@ Init_Dir(void)
|
|||
rb_define_method(rb_cDir,"inspect", dir_inspect, 0);
|
||||
rb_define_method(rb_cDir,"read", dir_read, 0);
|
||||
rb_define_method(rb_cDir,"each", dir_each, 0);
|
||||
rb_define_method(rb_cDir,"each_child", dir_each_child_m, 0);
|
||||
rb_define_method(rb_cDir,"children", dir_collect_children, 0);
|
||||
rb_define_method(rb_cDir,"rewind", dir_rewind, 0);
|
||||
rb_define_method(rb_cDir,"tell", dir_tell, 0);
|
||||
rb_define_method(rb_cDir,"seek", dir_seek, 1);
|
||||
|
|
|
@ -232,14 +232,17 @@ class TestDir < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_foreach
|
||||
assert_entries(Dir.open(@root) {|dir| dir.each.to_a})
|
||||
assert_entries(Dir.foreach(@root).to_a)
|
||||
end
|
||||
|
||||
def test_children
|
||||
assert_entries(Dir.open(@root) {|dir| dir.children}, true)
|
||||
assert_entries(Dir.children(@root), true)
|
||||
end
|
||||
|
||||
def test_each_child
|
||||
assert_entries(Dir.open(@root) {|dir| dir.each_child.to_a}, true)
|
||||
assert_entries(Dir.each_child(@root).to_a, true)
|
||||
end
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче