2009/2/26 Reinhold Kainhofer <reinh...@kainhofer.com> > > 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
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user