io.directories: add "directory-tree-files" and "with-directory-tree-files" words
parent
83d10d8135
commit
2b05f90c7b
|
@ -46,10 +46,18 @@ HELP: directory-files
|
|||
{ $values { "path" "a pathname string" } { "seq" "a sequence of filenames" } }
|
||||
{ $description "Outputs the contents of a directory named by " { $snippet "path" } "." } ;
|
||||
|
||||
HELP: directory-tree-files
|
||||
{ $values { "path" "a pathname string" } { "seq" "a sequence of filenames" } }
|
||||
{ $description "Outputs a sequence of all non-directory files inside the directory named by " { $snippet "path" } " and its subdirectories." } ;
|
||||
|
||||
HELP: with-directory-files
|
||||
{ $values { "path" "a pathname string" } { "quot" quotation } }
|
||||
{ $description "Calls the quotation with the directory file names on the stack and with the directory set as the " { $link current-directory } ". Restores the current directory after the quotation is called." } ;
|
||||
|
||||
HELP: with-directory-tree-files
|
||||
{ $values { "path" "a pathname string" } { "quot" quotation } }
|
||||
{ $description "Calls the quotation with the recursive directory file names on the stack and with the directory set as the " { $link current-directory } ". Restores the current directory after the quotation is called." } ;
|
||||
|
||||
HELP: with-directory-entries
|
||||
{ $values { "path" "a pathname string" } { "quot" quotation } }
|
||||
{ $description "Calls the quotation with the directory entries on the stack and with the directory set as the " { $link current-directory } ". Restores the current directory after the quotation is called." } ;
|
||||
|
|
|
@ -22,6 +22,18 @@ IN: io.directories.tests
|
|||
] with-directory-files
|
||||
] unit-test
|
||||
|
||||
[ { "classes/tuple/tuple.factor" } ] [
|
||||
"resource:core" [
|
||||
"." directory-tree-files [ "classes/tuple/tuple.factor" = ] filter
|
||||
] with-directory
|
||||
] unit-test
|
||||
|
||||
[ { "classes/tuple/tuple.factor" } ] [
|
||||
"resource:core" [
|
||||
[ "classes/tuple/tuple.factor" = ] filter
|
||||
] with-directory-tree-files
|
||||
] unit-test
|
||||
|
||||
[ ] [ "blahblah" temp-file dup exists? [ delete-directory ] [ drop ] if ] unit-test
|
||||
[ ] [ "blahblah" temp-file make-directory ] unit-test
|
||||
[ t ] [ "blahblah" temp-file file-info directory? ] unit-test
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
! Copyright (C) 2004, 2008 Slava Pestov, Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors combinators destructors io io.backend
|
||||
io.encodings.binary io.files io.pathnames kernel namespaces
|
||||
sequences system vocabs.loader fry ;
|
||||
USING: accessors arrays combinators destructors io io.backend
|
||||
io.encodings.binary io.files io.files.types io.pathnames
|
||||
kernel namespaces sequences system vocabs.loader fry ;
|
||||
IN: io.directories
|
||||
|
||||
: set-current-directory ( path -- )
|
||||
|
@ -41,12 +41,23 @@ HOOK: (directory-entries) os ( path -- seq )
|
|||
: directory-files ( path -- seq )
|
||||
directory-entries [ name>> ] map ;
|
||||
|
||||
: directory-tree-files ( path -- seq )
|
||||
dup directory-entries
|
||||
[
|
||||
dup type>> +directory+ =
|
||||
[ name>> [ append-path directory-tree-files ] [ [ prepend-path ] curry map ] bi ]
|
||||
[ nip name>> 1array ] if
|
||||
] with map concat ;
|
||||
|
||||
: with-directory-entries ( path quot -- )
|
||||
'[ "" directory-entries @ ] with-directory ; inline
|
||||
|
||||
: with-directory-files ( path quot -- )
|
||||
'[ "" directory-files @ ] with-directory ; inline
|
||||
|
||||
: with-directory-tree-files ( path quot -- )
|
||||
'[ "" directory-tree-files @ ] with-directory ; inline
|
||||
|
||||
! Touching files
|
||||
HOOK: touch-file io-backend ( path -- )
|
||||
|
||||
|
|
Loading…
Reference in New Issue