X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocument-backend.scm;h=a4233e3f69cbe7e724543c4e8d7197976476277a;hb=3d8089a42af6304edb8dad56220e845c84832bb2;hp=7e8e2f186ec9609d7b0db72432febd1fb91dc6ea;hpb=157d98c1870868bf59c1691577444e3c3d533bc4;p=lilypond.git diff --git a/scm/document-backend.scm b/scm/document-backend.scm index 7e8e2f186e..a4233e3f69 100644 --- a/scm/document-backend.scm +++ b/scm/document-backend.scm @@ -1,14 +1,36 @@ -;;;; backend-documentation-lib.scm -- Functions for backend documentation +;;;; document-backend.scm -- Functions for backend documentation ;;;; ;;;; source file of the GNU LilyPond music typesetter -;;;; -;;;; (c) 2000--2007 Han-Wen Nienhuys +;;;; +;;;; (c) 2000--2009 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen +(define (sort-grob-properties x) + ;; force 'meta to the end of each prop-list + (let ((meta (assoc 'meta x))) + (append (sort (assoc-remove! x 'meta) ly:alist-citexi 'backend pr grob-description))) @@ -25,14 +47,14 @@ (if (pair? uprops) (string-append - "\n\n@unnumberedsubsubsec User settable properties:\n" - (description-list->texi user-propdocs)) + "\n\n@subsubheading User settable properties:\n" + (description-list->texi user-propdocs #t)) "") (if (pair? iprops) (string-append - "\n\n@unnumberedsubsubsec Internal properties:\n" - (description-list->texi internal-propdocs)) + "\n\n@subsubheading Internal properties:\n" + (description-list->texi internal-propdocs #t)) "")))) (define iface->grob-table (make-vector 61 '())) @@ -53,20 +75,25 @@ ;; First level Interface description (define (interface-doc interface) - (let ((name (symbol->string (car interface)))) + (let* ((name (symbol->string (car interface))) + (interface-list (human-listify + (map ref-ify + (map symbol->string + (hashq-ref iface->grob-table + (car interface) + '())))))) (make #:name name #:text (string-append (interface-doc-string (cdr interface) '()) "\n\n" - "This grob interface is used in the following graphical objects: " - - (human-listify - (map ref-ify - (sort - (map symbol->string - (hashq-ref iface->grob-table (car interface) '())) - stringtexi alist) (let* ((uprops (filter (lambda (x) (not (object-property x 'backend-internal))) @@ -74,7 +101,8 @@ (description-list->texi (map (lambda (y) (property->texi 'backend y alist)) - uprops)))) + uprops) + #t))) (define (grob-doc description) "Given a property alist DESCRIPTION, make a documentation @@ -91,21 +119,32 @@ node." (ly:error (_ "pair expected in doc ~s") name))) (reverse ifaces))) (engravers (filter - (lambda (x) (engraver-makes-grob? name x)) all-engravers-list)) + (lambda (x) (engraver-makes-grob? name x)) + all-engravers-list)) (namestr (symbol->string name)) - (engraver-names (map symbol->string (map ly:translator-name engravers)))) + (engraver-names (map symbol->string + (map ly:translator-name engravers))) + (engraver-list (human-listify + (map ref-ify + (map engraver-name engraver-names))))) (make #:name namestr #:text (string-append - namestr " objects are created by: " - (human-listify (map ref-ify - (map engraver-name engraver-names))) - "\n\nStandard settings: \n\n" + namestr " objects " + (if (equal? engraver-list "none") + "are not created by any engraver" + (string-append + "are created by: " + engraver-list)) + "." + + "\n\nStandard settings:\n\n" (grob-alist->texi description) - "\n\nThis object supports the following interfaces: \n" - (human-listify ifacedoc))))) + "\n\nThis object supports the following interface(s):\n" + (human-listify ifacedoc) + ".")))) (define (all-grobs-doc) (make @@ -120,7 +159,8 @@ node." (cons (cons key val) prior)) '() (ly:all-grob-interfaces))) -(set! interface-description-alist (sort interface-description-alist aliststring lst) stringstring lst) ly:string-citexi 'backend (string->symbol prop) '())) ps)) - (texi (description-list->texi descs))) + (texi (description-list->texi descs #f))) texi)) ;;(dump-node (grob-doc (cdadr all-grob-descriptions)) (current-output-port) 0 )