[prev in list] [next in list] [prev in thread] [next in thread]
List: lilypond-user
Subject: Re: [frogs] Re: Naming output files
From: Marek Klein <marek () gregoriana ! sk>
Date: 2009-02-26 22:18:48
Message-ID: 52e73a2f0902261418i25f75620m226a64b4aee3af08 () mail ! gmail ! com
[Download RAW message or body]
2009/2/26 Reinhold Kainhofer <reinhold@kainhofer.com>
>
> 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
[Attachment #3 (text/html)]
<br><div class="gmail_quote">2009/2/26 Reinhold Kainhofer <span dir="ltr"><<a \
href="mailto:reinhold@kainhofer.com">reinhold@kainhofer.com</a>></span><br><blockquote \
class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt \
0pt 0.8ex; padding-left: 1ex;"> <div class="Ih2E3d"><br>
</div><div class="Ih2E3d">On Donnerstag, 26. Februar 2009 22:38:53 Marek Klein \
wrote:<br> > (output-count (assoc-ref counter-alist \
'output-suffix))<br> > (base (ly:parser-output-name parser))<br>
> (output-suffix (ly:parser-lookup parser 'output-suffix)) )<br>
<br>
</div>You need to reverse this! The key for the assoc-ref lookup should NOT be \
the<br> 'output-suffix symbol (note the '), but rather the value \
output-suffix, which<br> you look up only later. So, simply move the definition of \
output-count after<br> the output-suffix and use output-suffix instead of \
'output-suffix.<br> <br>
Later on, you use output-suffix in assoc-set!, so you need to use the same<br>
value in the assoc-ref, too.<br>
<div class="Ih2E3d"><br>
Cheers,<br>
Reinhold<br>
</div></blockquote></div><br>Thank you, <br>now it works as expected:<br><br>(define \
counter-alist '())<br><br>(define (print-book-with parser book \
process-procedure)<br> (let*<br> ((paper (ly:parser-lookup parser \
'$defaultpaper))<br> (layout (ly:parser-lookup parser '$defaultlayout))<br> \
(output-suffix (ly:parser-lookup parser 'output-suffix)) <br> (output-count \
(assoc-ref counter-alist output-suffix))<br> (base (ly:parser-output-name \
parser)) )<br> <br> (if (string? output-suffix)<br> (set! base (format \
"~a-~a" base (string-regexp-substitute<br> \
"[^a-zA-Z0-9-]" "_" output-suffix))))<br><br> ;; must be \
careful: output-count is under user control.<br> (if (not (integer? \
output-count))<br> (set! output-count 0))<br><br> (if (> output-count 0)<br> \
(set! base (format #f "~a-~a" base output-count)))<br> (set! \
counter-alist (assoc-set! counter-alist output-suffix (1+ output-count)))<br> <br \
clear="all">What about set! versus ly:parser-define! ?<br><br>-- <br>Marek \
Klein<br><a href="http://gregoriana.sk">http://gregoriana.sk</a><br>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic