io.directories.search: faster directory traversal.
parent
ff46966cfb
commit
7e4f2ec618
|
@ -2,8 +2,8 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors arrays assocs continuations deques dlists fry
|
USING: accessors arrays assocs continuations deques dlists fry
|
||||||
io.backend io.directories io.files.info io.pathnames kernel
|
io.backend io.directories io.files.info io.pathnames kernel
|
||||||
locals math sequences sorting system unicode.case vocabs
|
kernel.private locals math sequences sorting strings system
|
||||||
vocabs.loader ;
|
unicode.case vocabs vocabs.loader ;
|
||||||
IN: io.directories.search
|
IN: io.directories.search
|
||||||
|
|
||||||
: qualified-directory-entries ( path -- seq )
|
: qualified-directory-entries ( path -- seq )
|
||||||
|
@ -22,9 +22,13 @@ IN: io.directories.search
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
TUPLE: directory-iterator path bfs queue ;
|
TUPLE: directory-iterator
|
||||||
|
{ path string }
|
||||||
|
{ bfs boolean }
|
||||||
|
{ queue dlist } ;
|
||||||
|
|
||||||
: push-directory-entries ( path iter -- )
|
: push-directory-entries ( path iter -- )
|
||||||
|
{ directory-iterator } declare
|
||||||
[ [ qualified-directory-entries ] [ 2drop f ] recover ] dip '[
|
[ [ qualified-directory-entries ] [ 2drop f ] recover ] dip '[
|
||||||
_ [ queue>> ] [ bfs>> ] bi
|
_ [ queue>> ] [ bfs>> ] bi
|
||||||
[ push-front ] [ push-back ] if
|
[ push-front ] [ push-back ] if
|
||||||
|
@ -35,6 +39,7 @@ TUPLE: directory-iterator path bfs queue ;
|
||||||
dup path>> over push-directory-entries ;
|
dup path>> over push-directory-entries ;
|
||||||
|
|
||||||
: next-directory-entry ( iter -- directory-entry/f )
|
: next-directory-entry ( iter -- directory-entry/f )
|
||||||
|
{ directory-iterator } declare
|
||||||
dup queue>> deque-empty? [ drop f ] [
|
dup queue>> deque-empty? [ drop f ] [
|
||||||
dup queue>> pop-back
|
dup queue>> pop-back
|
||||||
dup directory?
|
dup directory?
|
||||||
|
|
Loading…
Reference in New Issue