Nah <sche...@runbox.com> writes:

> I have a project with 100+ scores, each in their own file. I tried to
> create a Scheme function to \include each of them. After searching the
> archive, I got the general idea of why my solution isn't
> working. However, I didn't find something like a snippet that I could
> coax into what I want. I have programming experience in C, Python,
> etc., but I'm still pretty clueless with Scheme.
>
> What I want is a function that does something like:
> foreach fname #{ \include #fname #}
>
> In Python, I would just read all the filenames in the directory, sort
> them, then run the foreach. Can I do something like that in Scheme?
> And how do I put the result in a form that will work with \include?

$(ly:parser-include-string
  (format #f "~{\\include \"/tmp/~a\"\n~}"
	  (let ((d (opendir "/tmp")))
	    (let loop ((f (readdir d)) (res '()))
	      (cond ((eof-object? f)
		     (closedir d)
		     (sort res string<?))
		    ((string-suffix? ".ly" f)
		     (loop (readdir d) (cons f res)))
		    (else
		     (loop (readdir d) res)))))))
Be aware that this is quite a bad idea if the file itself is in the
directory we are talking about here...

-- 
David Kastrup
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to