branch: master
commit 16390ac2b8c0622ae94d6917f2df0ca90d61ec55
Author: Stephen Leake <[email protected]>
Commit: Stephen Leake <[email protected]>
In path-iterator, add new function and test
* packages/path-iterator/path-iterator-test.el (path-iter-all-files): New
test.
* packages/path-iterator/path-iterator.el (path-iter-all-files): New.
---
.../path-iterator-resources/alice-1/foo-file1.text | 1 +
.../bob-1/bob-2/foo-file2.text | 1 +
.../bob-1/bob-3/foo-file3.text | 1 +
packages/path-iterator/path-iterator-test.el | 19 ++++++++++++++++++-
packages/path-iterator/path-iterator.el | 17 +++++++++++++++++
5 files changed, 38 insertions(+), 1 deletion(-)
diff --git
a/packages/path-iterator/path-iterator-resources/alice-1/foo-file1.text
b/packages/path-iterator/path-iterator-resources/alice-1/foo-file1.text
new file mode 100644
index 0000000..d83a9f4
--- /dev/null
+++ b/packages/path-iterator/path-iterator-resources/alice-1/foo-file1.text
@@ -0,0 +1 @@
+alice-1/foo-file1.text
diff --git
a/packages/path-iterator/path-iterator-resources/bob-1/bob-2/foo-file2.text
b/packages/path-iterator/path-iterator-resources/bob-1/bob-2/foo-file2.text
new file mode 100644
index 0000000..6bd9bdb
--- /dev/null
+++ b/packages/path-iterator/path-iterator-resources/bob-1/bob-2/foo-file2.text
@@ -0,0 +1 @@
+bob-1/foo-file2.text
diff --git
a/packages/path-iterator/path-iterator-resources/bob-1/bob-3/foo-file3.text
b/packages/path-iterator/path-iterator-resources/bob-1/bob-3/foo-file3.text
new file mode 100644
index 0000000..2a3b1e9
--- /dev/null
+++ b/packages/path-iterator/path-iterator-resources/bob-1/bob-3/foo-file3.text
@@ -0,0 +1 @@
+bob-2/foo-file5.text
diff --git a/packages/path-iterator/path-iterator-test.el
b/packages/path-iterator/path-iterator-test.el
index 09c01da..780e744 100644
--- a/packages/path-iterator/path-iterator-test.el
+++ b/packages/path-iterator/path-iterator-test.el
@@ -158,7 +158,7 @@ iterator built from PATH-NON-RECURSIVE, PATH-RECURSIVE,
IGNORE-FUNCTION."
(let ((default-directory path-iter-root-dir))
(should
(equal
- (path-iter-to-truename
+ (path-iter--to-truename
(list
nil
(concat path-iter-root-dir "/alice-1")))
@@ -168,5 +168,22 @@ iterator built from PATH-NON-RECURSIVE, PATH-RECURSIVE,
IGNORE-FUNCTION."
)))
+(ert-deftest path-iter-all-files ()
+ (let ((iter
+ (make-path-iterator
+ :user-path-non-recursive nil
+ :user-path-recursive (list path-iter-root-dir))))
+
+ (should
+ (equal
+ (path-iter-all-files iter)
+ (list
+ (concat path-iter-root-dir "/bob-1/bob-3/foo-file3.text")
+ (concat path-iter-root-dir "/bob-1/bob-2/foo-file2.text")
+ (concat path-iter-root-dir "/alice-1/foo-file1.text")
+ (concat path-iter-root-dir "/file-0.text")
+ )))
+ ))
+
(provide 'path-iterator-test)
;;; path-iterator.el ends here
diff --git a/packages/path-iterator/path-iterator.el
b/packages/path-iterator/path-iterator.el
index ca208e4..1c57ce3 100644
--- a/packages/path-iterator/path-iterator.el
+++ b/packages/path-iterator/path-iterator.el
@@ -285,5 +285,22 @@ Return a list of absolute filenames or nil if none found."
(file-name-all-completions filename dir)))
result))
+(defun path-iter-all-files (iter)
+ "Return all filenames in ITER (a `path-iterator' object."
+ (let (result)
+ (path-iter-restart iter)
+
+ (while (not (path-iter-done iter))
+ (let ((dir (path-iter-next iter)))
+ (mapc
+ (lambda (absfile)
+ (when (and (not (string-equal "." (substring absfile -1)))
+ (not (string-equal ".." (substring absfile -2)))
+ (not (file-directory-p absfile)))
+ (push absfile result)))
+ (directory-files dir t))
+ ))
+ result))
+
(provide 'path-iterator)
;;; path-iterator.el ends here.