Anonymous avatar Anonymous committed 2c21430

Added the updir tokens when exiting from a directory.

Comments (0)

Files changed (2)

File-Dir-Dumper/lib/File/Dir/Dumper/Scanner.pm

 use File::Find::Object;
 
 use POSIX qw(strftime);
+use List::Util qw(min);
 
 __PACKAGE__->mk_accessors(
     qw(
     }
     else
     {
+        my $i = 0;
+        my $upper_limit =
+            min(
+                scalar(@{$last_result->dir_components()}),
+                scalar(@{$result->dir_components()}),
+            );
+        FIND_I:
+        while ($i < $upper_limit)
+        {
+            if ($last_result->dir_components()->[$i] ne 
+                $result->dir_components()->[$i]
+            )
+            {
+                last FIND_I;
+            }
+        }
+        continue
+        {
+            $i++;
+        }
+
+        for my $level (reverse($i .. $#{$last_result->dir_components()}))
+        {
+            $self->_add(
+                {
+                    type => "updir",
+                    depth => $level+1,
+                }
+            )
+        }
+
         if ($result->is_dir())
         {
             $self->_add(

File-Dir-Dumper/t/dumper.t

 use strict;
 use warnings;
 
-use Test::More tests => 12;
+use Test::More tests => 14;
 
 use POSIX qw(mktime strftime);
 use File::Path;
     # TEST
     is ($token->{filename}, "b", "dir name is 'b'");
 
+    $token = $scanner->fetch();
+
+    # TEST
+    is ($token->{type}, "updir", "Token is exitdir");
+
+    # TEST
+    is ($token->{depth}, 1, "exitdir token (from 'b') has depth 1");
+
     rmtree($t->get_path($test_dir))
 }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.