io.directories.search: Add some more combinators for finding files.

db4
Doug Coleman 2015-05-21 22:34:55 -07:00
parent a2913d6bd7
commit cf3ccd0abe
1 changed files with 27 additions and 3 deletions

View File

@ -2,8 +2,8 @@
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs continuations deques dlists fry
io.backend io.directories io.files.info io.pathnames kernel
kernel.private locals math sequences sorting strings system
unicode.case vocabs vocabs.loader ;
kernel.private locals math sequences sequences.extras sorting
strings system unicode.case vocabs ;
IN: io.directories.search
: qualified-directory-entries ( path -- seq )
@ -63,9 +63,27 @@ TUPLE: directory-iterator
PRIVATE>
: each-file ( path bfs? quot: ( ... name -- ... ) -- )
: each-file ( path bfs? quot -- )
setup-traversal iterate-directory drop ; inline
: each-file-breadth ( path quot -- )
t swap each-file ; inline
: each-file-depth ( path quot -- )
f swap each-file ; inline
: filter-files-by-depth ( quot -- seq )
selector* [ each-file-depth ] dip ; inline
: filter-files-by-breadth ( quot -- seq )
selector* [ each-file-breadth ] dip ; inline
: all-files-by-depth ( quot -- seq )
collector [ each-file-depth ] dip ; inline
: all-files-by-breadth ( quot -- seq )
collector [ each-file-breadth ] dip ; inline
: each-directory-entry ( path bfs? quot: ( ... entry -- ... ) -- )
setup-traversal iterate-directory-entries drop ; inline
@ -147,4 +165,10 @@ ERROR: sequence-expected obj ;
: find-by-extension ( path extension -- seq )
1array find-by-extensions ;
: find-files-larger-than ( path size -- seq )
'[ file-info size>> _ > ] filter-files-by-depth ;
: file-info-recursive ( path -- seq )
[ dup ?file-info [ 2array ] [ drop f ] if* ] filter-files-by-depth ;
os windows? [ "io.directories.search.windows" require ] when