diff options
Diffstat (limited to 'schmooz.scm')
-rw-r--r-- | schmooz.scm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/schmooz.scm b/schmooz.scm index f50a397..7bcab97 100644 --- a/schmooz.scm +++ b/schmooz.scm @@ -358,6 +358,39 @@ ((not (and (char? chr) (not (char-whitespace? chr)))) str) (read-char port))) +;;; Output files would be schmoozed +(define schmooz-which-files + (let* ((scheme-file? (filename:match-ci?? "*??scm")) + (txi-file? (filename:match-ci?? "*??txi")) + (texi-file? (let ((tex? (filename:match-ci?? "*??tex")) + (texi? (filename:match-ci?? "*??texi"))) + (lambda (filename) (or (txi-file? filename) + (tex? filename) + (texi? filename))))) + (txi->scm (filename:substitute?? "*txi" "*scm")) + (scm->txi (filename:substitute?? "*scm" "*txi"))) + (define (schmooz-texi-file file) + (call-with-input-file file + (lambda (port) + (do ((pos (find-string-from-port? "@include" port) + (find-string-from-port? "@include" port))) + ((not pos)) + (let ((fname #f)) + (cond ((not (eqv? 1 (fscanf port " %s" fname)))) + ((not (txi-file? fname))) + ((not (file-exists? (txi->scm fname)))) + (else (display (txi->scm fname)) (display " ")))))))) + (lambda files + (for-each (lambda (file) + (define sl (string-length file)) + (cond ((texi-file? file) (schmooz-texi-file file)) + ((scheme-file? file) + (schmooz-scm-file file (scm->txi file))) + (else (schmooz-scm-file + file (string-append file ".txi"))))) + files)))) + + ;;;@ SCHMOOZ files. (define schmooz (let* ((scheme-file? (filename:match-ci?? "*??scm")) |