aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-09-07 15:33:33 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-09-07 15:33:33 +0200
commita78c2b81e9f652811149e5edb4d35d09b644b7cb (patch)
treeb0493c1421a2ffeb3d4f16e61f440e266ae5161d
parentUpdate package-lock.json (diff)
downloadcalp-a78c2b81e9f652811149e5edb4d35d09b644b7cb.tar.gz
calp-a78c2b81e9f652811149e5edb4d35d09b644b7cb.tar.xz
Create a true all-files-under-directory procedure.
-rw-r--r--module/hnh/module-introspection/all-modules.scm23
1 files changed, 13 insertions, 10 deletions
diff --git a/module/hnh/module-introspection/all-modules.scm b/module/hnh/module-introspection/all-modules.scm
index 1bf39e1e..89ba5dcc 100644
--- a/module/hnh/module-introspection/all-modules.scm
+++ b/module/hnh/module-introspection/all-modules.scm
@@ -7,6 +7,7 @@
:use-module (hnh module-introspection)
:use-module ((hnh module-introspection static-util) :select (get-forms))
:export (all-files-and-modules-under-directory
+ all-files-under-directory
all-modules-under-directory
fs-find-base fs-find
module-file-mapping
@@ -20,22 +21,24 @@
;; (define (fs-find proc dir)
;; (filter proc (fs-find-base dir)))
-(define (all-files-and-modules-under-directory dir)
- (define re (make-regexp "\\.scm$"))
+(define* (all-files-under-directory dir extension)
+ (define extension-rx ((@ (texinfo string-utils) escape-special-chars)
+ extension "[](){}+*?.^$" #\\))
+ (define re (make-regexp (string-append extension-rx "$")))
- (define files
- (map car
- (filter (match-lambda ((filename _ 'regular)
- (and (regexp-exec re filename)
- (not (file-hidden? filename))))
- (_ #f))
- (fs-find dir))))
+ (map car
+ (filter (match-lambda ((filename _ 'regular)
+ (and (regexp-exec re filename)
+ (not (file-hidden? filename))))
+ (_ #f))
+ (fs-find dir))))
+(define (all-files-and-modules-under-directory dir)
(map (lambda (file)
(list file
(call-with-input-file file
(compose find-module-declaration get-forms))))
- files))
+ (all-files-under-directory dir ".scm")))
(define (all-modules-under-directory dir)
"Returns two values, all scm files in dir, and all top