- (music-expression? obj)
- (format #f "(make-music '~a~{~a~})"
- (ly:music-property obj 'name)
- (map (lambda (prop)
- (format #f "~%~v_'~a ~a"
- (+ 2 (* 13 depth))
- (car prop)
- (cond (;; property is a markup expression
- (markup? (cdr prop))
- (music-pretty-string (cdr prop) (1+ depth)))
- (;; property is a non-empty list
- (and (list? (cdr prop))
- (pair? (cdr prop)))
- (format #f "(list ~{~a~})"
- (map (lambda (mus)
- (format #f "~%~v_~a"
- (* 13 (1+ depth))
- (music-pretty-string mus (1+ depth))))
- (cdr prop))))
- (;; property is a string
- (string? (cdr prop))
- (string-append "\"" (cdr prop) "\""))
- (else ;; property is something else
- (music-pretty-string (cdr prop) (1+ depth))))))
- (remove (lambda (prop)
- (eqv? (car prop) 'origin))
- (ly:music-mutable-properties obj)))))
- (;; symbol
- (symbol? obj) (format #f "'~a" obj))
+ (ly:music? obj)
+ `(make-music
+ ',(ly:music-property obj 'name)
+ ,@(append (map (lambda (prop)
+ (list
+ (car prop)
+ (if (and (not (markup? (cdr prop)))
+ (list? (cdr prop))
+ (pair? (cdr prop))) ;; property is a non-empty list
+ `(list ,@(map music->make-music (cdr prop)))
+ (music->make-music (cdr prop)))))
+ (remove (lambda (prop)
+ (eqv? (car prop) 'origin))
+ (ly:music-mutable-properties obj))))))