[ << Aggiornare i file con convert-ly ] | [Top][Contents][Index] | [ Eseguire lilypond-book >> ] |
[ < Conversioni manuali ] | [ Up : Aggiornare i file con convert-ly ] | [ Eseguire lilypond-book > ] |
2.6 Scrivere codice che funzioni su molteplici versioni
In alcuni casi, in particolare quando si scrive codice destinato a funzionare
come libreria, è opportuno far sì che supporti molteplici versioni di
LilyPond nonostante le modifiche della sintassi. Per farlo si possono
avvolgere porzioni alternative di codice in espressioni condizionali che
dipendono dalla versione di LilyPond attualmente eseguita. La funzione
Scheme ly:version?
prevede un operatore di confronto op
e una versione di riferimento ver passata come elenco di interi di
massimo tre elementi. Gli elementi mancanti vengono ignorati, quindi
'(2 20)
equivale a qualsiasi versione della serie di versioni
2.20. Sono possibili costrutti come il seguente:
#(cond ((ly:version? > '(2 20)) (ly:message "Questo è il codice da eseguire per LilyPond 2.20 o successivi")) ((ly:version? = '(2 19 57)) (ly:message "Questo verrà eseguito soltanto con LilyPond 2.19.57")) (else (ly:message "Questo verrà eseguito con qualsiasi altra versione")))
Solitamente questa funzione viene integrata nelle funzioni di una libreria, per consentire l’uso di sintassi alternativa, ma è anche possibile usare il confronto direttamente nell’input musicale, come nell’esempio seguente:
{ c' d' e' f' #(if (ly:version? = '(2 21)) #{ \override NoteHead.color = #red #} #{ \override NoteHead.color = #blue #}) g' a' b' c'' }
Nota: Questa funzione è stata introdotta in LilyPond 2.21.80, dunque non è possibile fare confronti usando versioni precedenti.
[ << Aggiornare i file con convert-ly ] | [Top][Contents][Index] | [ Eseguire lilypond-book >> ] |
[ < Conversioni manuali ] | [ Up : Aggiornare i file con convert-ly ] | [ Eseguire lilypond-book > ] |