2009/2/26 Reinhold Kainhofer <[email protected]>
>
> On Donnerstag, 26. Februar 2009 22:38:53 Marek Klein wrote:
> > (output-count (assoc-ref counter-alist 'output-suffix))
> > (base (ly:parser-output-name parser))
> > (output-suffix (ly:parser-lookup parser 'output-suffix)) )
>
> You need to reverse this! The key for the assoc-ref lookup should NOT be
> the
> 'output-suffix symbol (note the '), but rather the value output-suffix,
> which
> you look up only later. So, simply move the definition of output-count
> after
> the output-suffix and use output-suffix instead of 'output-suffix.
>
> Later on, you use output-suffix in assoc-set!, so you need to use the same
> value in the assoc-ref, too.
>
> Cheers,
> Reinhold
>
Thank you,
now it works as expected:
(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-suffix (ly:parser-lookup parser 'output-suffix))
(output-count (assoc-ref counter-alist output-suffix))
(base (ly:parser-output-name parser)) )
(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)))
What about set! versus ly:parser-define! ?
--
Marek Klein
http://gregoriana.sk
_______________________________________________
lilypond-user mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-user