From 1632fa64482c09be434bd1d086782b8e7d4f7a02 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sat, 13 Feb 2010 13:57:58 -0800 Subject: [PATCH] io.directories: directory-tree-files should include the directories too, not just their contents --- basis/io/directories/directories-docs.factor | 2 +- basis/io/directories/directories-tests.factor | 6 ++++++ basis/io/directories/directories.factor | 7 +++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/basis/io/directories/directories-docs.factor b/basis/io/directories/directories-docs.factor index a9dcea8a8f..804a2f4a8d 100644 --- a/basis/io/directories/directories-docs.factor +++ b/basis/io/directories/directories-docs.factor @@ -48,7 +48,7 @@ HELP: directory-files 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." } ; +{ $description "Outputs a sequence of all files and subdirectories inside the directory named by " { $snippet "path" } " or recursively inside its subdirectories." } ; HELP: with-directory-files { $values { "path" "a pathname string" } { "quot" quotation } } diff --git a/basis/io/directories/directories-tests.factor b/basis/io/directories/directories-tests.factor index 92e35557e2..742a927b4b 100644 --- a/basis/io/directories/directories-tests.factor +++ b/basis/io/directories/directories-tests.factor @@ -28,6 +28,12 @@ IN: io.directories.tests ] with-directory ] unit-test +[ { "classes/tuple" } ] [ + "resource:core" [ + "." directory-tree-files [ "classes/tuple" = ] filter + ] with-directory +] unit-test + [ { "classes/tuple/tuple.factor" } ] [ "resource:core" [ [ "classes/tuple/tuple.factor" = ] filter diff --git a/basis/io/directories/directories.factor b/basis/io/directories/directories.factor index 3158f6ca41..d12adc5f41 100644 --- a/basis/io/directories/directories.factor +++ b/basis/io/directories/directories.factor @@ -45,8 +45,11 @@ HOOK: (directory-entries) os ( path -- seq ) dup directory-entries [ dup type>> +directory+ = - [ name>> [ append-path directory-tree-files ] [ [ prepend-path ] curry map ] bi ] - [ nip name>> 1array ] if + [ name>> + [ append-path directory-tree-files ] + [ [ prepend-path ] curry map ] + [ prefix ] tri + ] [ nip name>> 1array ] if ] with map concat ; : with-directory-entries ( path quot -- )