Thanks for the tip, Valentin, great to know about this.

On Sat, May 4, 2024 at 3:22 AM Valentin Petzel <valen...@petzel.at> wrote:

> Hello Alec,
>
> note that since 2.24 we have a neat markup function
> \with-string-transformer,
> which is called whenever a string is found, and does a lot of the logic
> for
> you (such as making sure this is called upon a string, not a complex
> markup:
>
> \markup
>   \with-string-transformer
>   #(lambda (layout props str)
>      (if (> (string-length str) 0)
>          (let ((last-char (string-ref str (1- (string-length str))))
>                (prefix (substring str 0 (1- (string-length str)))))
>            (cond
>             ((char=? last-char #\#)
>              (markup
>               #:concat (prefix #:hspace 0.2 #:fontsize -2.5 #:raise 0.6
> #:sharp)))
>             ((char=? last-char #\b)
>              (markup
>               #:concat (prefix #:hspace 0.2 #:fontsize -2.5 #:raise 0.6
> #:flat)))
>             (else str)))
>          str))
>   { "A#" "Bb" }
>
> But then I’d think maybe here it would be useful to have an option for
> regex
> matching in \replace ...
>
> Cheers,
> Valentin

Reply via email to