[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Naming output files
From: |
Marek Klein |
Subject: |
Re: Naming output files |
Date: |
Thu, 26 Feb 2009 22:33:20 +0100 |
2009/2/26 Reinhold Kainhofer <address@hidden>
>
> It would actually be quite simple to implement: In scm/lily-library.scm in
> the
> print- book-with function, instead of storing the file count as a number in
> 'output-count, store it in an alist (which is set as the 'output-count
> parser
> variable), with the suffix as key. This way, the counting is per suffix and
> we'll automatically not append the number for the first file with a given
> suffix...
>
> I think this would be quite a nice task or a frog, so I'm not coding it
> myself, just giving a few pointers... The way to work with the alist
> (that's
> Scheme's idea of a Hash) can be seen e.g. in my counter snippet on LSR:
> http://lsr.dsi.unimi.it/LSR/Item?id=543
>
> All you need to do is to use assoc-ref instead of count and
> ly:parser-define!
> (instead of the set! in the counter example) with assoc-set! to set one
> entry
> of the hash / alist. The key for the alist would be the suffix. The rest of
> the function doesn't even need to be changed...
>
> Here is my solution:
(define counter-alist '())
(define (print-book-with parser book process-procedure)
(let*
((paper (ly:parser-lookup parser '$defaultpaper))
(layout (ly:parser-lookup parser '$defaultlayout))
(output-count (assoc-ref counter-alist 'output-suffix))
(base (ly:parser-output-name parser))
(output-suffix (ly:parser-lookup parser 'output-suffix)) )
(if (string? output-suffix)
(set! base (format "~a-~a" base (string-regexp-substitute
"[^a-zA-Z0-9-]" "_" output-suffix))))
;; must be careful: output-count is under user control.
(if (not (integer? output-count))
(set! output-count 0))
(if (> output-count 0)
(set! base (format #f "~a-~a" base output-count)))
(set! counter-alist (assoc-set! counter-alist output-suffix (1+
output-count)))
(process-procedure book paper layout base)
))
I didn't use ly:parser-define! instead of the set! (I couldn't make it to
work).
The output-count variable is no more under user control this way.
Please do comment.
--
Marek Klein
http://gregoriana.sk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Naming output files,
Marek Klein <=