;;;;
;;;; source file of the GNU LilyPond music typesetter
;;;;
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
(define (music-props-doc)
(make <texi-node>
#:name "Music properties"
- #:desc "All music properties, including descriptions"
+ #:desc "All music properties, including descriptions."
#:text
(let* ((ps (sort (map symbol->string all-music-properties) string<?))
(descs (map (lambda (prop)
texi)))
(define music-types->names (make-vector 61 '()))
-(map (lambda (entry)
- (let* ((types (cdr (assoc 'types (cdr entry)))))
- (map (lambda (type)
- (hashq-set! music-types->names type
- (cons (car entry)
- (hashq-ref music-types->names type '()))))
- types)))
- music-descriptions)
+(filter-map (lambda (entry)
+ (let* ((class (ly:camel-case->lisp-identifier (car entry)))
+ (classes (ly:make-event-class class)))
+ (if classes
+ (map (lambda (cl)
+ (hashq-set! music-types->names cl
+ (cons (car entry)
+ (hashq-ref music-types->names cl '()))))
+ classes)
+ #f)))
+
+ music-descriptions)
(define (strip-description x)
(cons (symbol->string (car x))
(string-append
"\nMusic event type @code{"
(symbol->string (car entry))
- "} is in Music objects of type "
+ "} is in music objects of type "
(human-listify
(sort
(map (lambda (x) (ref-ify (symbol->string x)))
(cdr entry)) string<?))
+ "."
"\n\nAccepted by: "
(human-listify
(map ly:translator-name
(filter
(lambda (x) (engraver-accepts-music-type? (car entry) x)) all-engravers-list)))))
+ "."
"\n\n")))
(define (music-types-doc)
(define (music-doc-str obj)
(let* ((namesym (car obj))
(props (cdr obj))
- (types (cdr (assoc 'types props))))
-
+ (class (ly:camel-case->lisp-identifier namesym))
+ (classes (ly:make-event-class class))
+ (event-texi (if classes
+ (string-append
+ "\n\nEvent classes:\n"
+ (human-listify (map ref-ify (map symbol->string classes)))
+ "."
+
+ "\n\nAccepted by: "
+ (human-listify
+ (map ref-ify
+ (map symbol->string (map ly:translator-name
+ (filter
+ (lambda (x) (engraver-accepts-music-types? classes x)) all-engravers-list)))))
+ ".")
+ "")))
+
(string-append
(object-property namesym 'music-description)
- "\n\nMusic types:\n"
- (human-listify (map ref-ify (map symbol->string types)))
- "\n\n"
- "\n\nAccepted by: "
- (human-listify
- (map ref-ify
- (map symbol->string (map ly:translator-name
- (filter
- (lambda (x) (engraver-accepts-music-types? types x)) all-engravers-list)))))
- "\n\nProperties: \n"
+ event-texi
+ "\n\nProperties:\n"
(description-list->texi
(map
- (lambda (x) (property->texi 'music x props))
+ (lambda (x) (property->texi 'music x props))
(map car props))))))
(define (music-object-doc obj)
(define (music-doc-node)
(make <texi-node>
#:name "Music definitions"
- #:desc "Definition of the Input data structures"
+ #:desc "Definition of the input data structures."
#:children
(list
(music-expressions-doc)