io.directories.search: Add some more combinators for finding files.
parent
a2913d6bd7
commit
cf3ccd0abe
|
@ -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
|
||||||
kernel.private locals math sequences sorting strings system
|
kernel.private locals math sequences sequences.extras sorting
|
||||||
unicode.case vocabs vocabs.loader ;
|
strings system unicode.case vocabs ;
|
||||||
IN: io.directories.search
|
IN: io.directories.search
|
||||||
|
|
||||||
: qualified-directory-entries ( path -- seq )
|
: qualified-directory-entries ( path -- seq )
|
||||||
|
@ -63,9 +63,27 @@ TUPLE: directory-iterator
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: each-file ( path bfs? quot: ( ... name -- ... ) -- )
|
: each-file ( path bfs? quot -- )
|
||||||
setup-traversal iterate-directory drop ; inline
|
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 -- ... ) -- )
|
: each-directory-entry ( path bfs? quot: ( ... entry -- ... ) -- )
|
||||||
setup-traversal iterate-directory-entries drop ; inline
|
setup-traversal iterate-directory-entries drop ; inline
|
||||||
|
|
||||||
|
@ -147,4 +165,10 @@ ERROR: sequence-expected obj ;
|
||||||
: find-by-extension ( path extension -- seq )
|
: find-by-extension ( path extension -- seq )
|
||||||
1array find-by-extensions ;
|
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
|
os windows? [ "io.directories.search.windows" require ] when
|
||||||
|
|
Loading…
Reference in New Issue