M: Pass directory and basename to callback functions.
This commit is contained in:
@@ -128,7 +128,6 @@ sub entryList {
|
|||||||
|
|
||||||
sub walk {
|
sub walk {
|
||||||
my ($self,$path) = @_;
|
my ($self,$path) = @_;
|
||||||
|
|
||||||
my $currentDir = dirname($path);
|
my $currentDir = dirname($path);
|
||||||
my $currentBasename = basename($path);
|
my $currentBasename = basename($path);
|
||||||
my $currentPath = $path;
|
my $currentPath = $path;
|
||||||
@@ -137,13 +136,13 @@ sub walk {
|
|||||||
$self->{currentBasename} = $currentBasename;
|
$self->{currentBasename} = $currentBasename;
|
||||||
$self->{currentPath} = $path;
|
$self->{currentPath} = $path;
|
||||||
|
|
||||||
if ((my $r = $self->{onBeginWalk}->($path)) != SUCCESS) {
|
if ((my $r = $self->{onBeginWalk}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-l $path) {
|
if (-l $path) {
|
||||||
|
|
||||||
if ((my $r = $self->{onLink}->($path)) != SUCCESS) {
|
if ((my $r = $self->{onLink}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +157,7 @@ sub walk {
|
|||||||
$self->{count} = scalar @{$self->{entryList}};
|
$self->{count} = scalar @{$self->{entryList}};
|
||||||
|
|
||||||
++$self->{currentDepth};
|
++$self->{currentDepth};
|
||||||
if ((my $r = $self->{onDirEnter}->($path)) != SUCCESS) {
|
if ((my $r = $self->{onDirEnter}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,12 +182,12 @@ sub walk {
|
|||||||
$self->{currentBasename} = $currentBasename;
|
$self->{currentBasename} = $currentBasename;
|
||||||
$self->{currentPath} = $path;
|
$self->{currentPath} = $path;
|
||||||
|
|
||||||
if ((my $r = $self->{onDirLeave}->($path)) != SUCCESS) {
|
if ((my $r = $self->{onDirLeave}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
--$self->{currentDepth};
|
--$self->{currentDepth};
|
||||||
} else {
|
} else {
|
||||||
if ((my $r = $self->{onFile}->($path)) != SUCCESS) {
|
if ((my $r = $self->{onFile}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
9
t/2.t
9
t/2.t
@@ -14,11 +14,16 @@ foreach my $f qw(1.t 2.t 3.t 4.t) {
|
|||||||
$dw->setDepth(1);
|
$dw->setDepth(1);
|
||||||
|
|
||||||
$dw->onFile(sub {
|
$dw->onFile(sub {
|
||||||
my ($path) = @_;
|
my ($path,$dir,$basename) = @_;
|
||||||
ok(-e $path);
|
ok(-e $path);
|
||||||
ok(-f $path);
|
ok(-f $path);
|
||||||
|
ok(-d $dir);
|
||||||
|
is($dir, "t");
|
||||||
|
is($dw->currentDir(), "t");
|
||||||
|
is($dw->currentDir(), $dir);
|
||||||
|
is($dw->currentBasename(), $basename);
|
||||||
|
|
||||||
if ($dw->currentBasename() eq $f) {
|
if (($dw->currentBasename() eq $f) and ($basename eq $f)) {
|
||||||
return 42;
|
return 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
32
t/4.t
32
t/4.t
@@ -18,10 +18,12 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
|||||||
|
|
||||||
$dw = new File::DirWalk();
|
$dw = new File::DirWalk();
|
||||||
$dw->onBeginWalk(sub {
|
$dw->onBeginWalk(sub {
|
||||||
my ($path) = @_;
|
my ($path,$dir,$basename) = @_;
|
||||||
ok(-e $path);
|
ok(-e $path);
|
||||||
|
is($dw->currentDir(), $dir);
|
||||||
|
is($dw->currentBasename(), $basename);
|
||||||
|
|
||||||
if ($dw->currentBasename() eq $subdir) {
|
if (($dw->currentBasename() eq $subdir) and ($basename eq $subdir)) {
|
||||||
return 42;
|
return 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,11 +33,14 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
|||||||
|
|
||||||
$dw = new File::DirWalk();
|
$dw = new File::DirWalk();
|
||||||
$dw->onDirEnter(sub {
|
$dw->onDirEnter(sub {
|
||||||
my ($path) = @_;
|
my ($path,$dir,$basename) = @_;
|
||||||
ok(-e $path);
|
ok(-e $path);
|
||||||
ok(-d $path);
|
ok(-d $path);
|
||||||
|
ok(-d $dir);
|
||||||
|
is($dw->currentDir(), $dir);
|
||||||
|
is($dw->currentBasename(), $basename);
|
||||||
|
|
||||||
if ($dw->currentBasename() eq $subdir) {
|
if (($dw->currentBasename() eq $subdir) and ($basename eq $subdir)) {
|
||||||
is( $dw->count(), 10 );
|
is( $dw->count(), 10 );
|
||||||
is( $dw->currentDepth(), 2 );
|
is( $dw->currentDepth(), 2 );
|
||||||
return 42;
|
return 42;
|
||||||
@@ -47,11 +52,14 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
|||||||
|
|
||||||
$dw = new File::DirWalk();
|
$dw = new File::DirWalk();
|
||||||
$dw->onDirLeave(sub {
|
$dw->onDirLeave(sub {
|
||||||
my ($path) = @_;
|
my ($path,$dir,$basename) = @_;
|
||||||
ok(-e $path);
|
ok(-e $path);
|
||||||
ok(-d $path);
|
ok(-d $path);
|
||||||
|
ok(-d $dir);
|
||||||
|
is($dw->currentDir(), $dir);
|
||||||
|
is($dw->currentBasename(), $basename);
|
||||||
|
|
||||||
if ($dw->currentBasename() eq $subdir) {
|
if (($dw->currentBasename() eq $subdir) and ($basename eq $subdir)) {
|
||||||
is( $dw->count(), 10 );
|
is( $dw->count(), 10 );
|
||||||
is( $dw->currentDepth(), 2 );
|
is( $dw->currentDepth(), 2 );
|
||||||
return 42;
|
return 42;
|
||||||
@@ -64,9 +72,14 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
|||||||
|
|
||||||
$dw = new File::DirWalk();
|
$dw = new File::DirWalk();
|
||||||
$dw->onFile(sub {
|
$dw->onFile(sub {
|
||||||
my ($path) = @_;
|
my ($path,$dir,$basename) = @_;
|
||||||
ok(-e $path);
|
ok(-e $path);
|
||||||
ok(-f $path);
|
ok(-f $path);
|
||||||
|
ok(-d $dir);
|
||||||
|
is($dir, "t/tree/$subdir");
|
||||||
|
is($dw->currentDir(), "t/tree/$subdir");
|
||||||
|
is($dw->currentDir(), $dir);
|
||||||
|
is($dw->currentBasename(), $basename);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -77,9 +90,12 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
|||||||
$files = 0;
|
$files = 0;
|
||||||
$dw = new File::DirWalk();
|
$dw = new File::DirWalk();
|
||||||
$dw->onFile(sub {
|
$dw->onFile(sub {
|
||||||
my ($path) = @_;
|
my ($path,$dir,$basename) = @_;
|
||||||
ok(-e $path);
|
ok(-e $path);
|
||||||
ok(-f $path);
|
ok(-f $path);
|
||||||
|
ok(-d $dir);
|
||||||
|
is($dw->currentDir(), $dir);
|
||||||
|
is($dw->currentBasename(), $basename);
|
||||||
++$files;
|
++$files;
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user