X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocument-backend.scm;h=02a09736b0927715bde6dfe74458599d14d300e8;hb=1ce5e85efda360c05b7db51cb1772fccce4e582c;hp=8a828b4a8cd44d78e4cb52474e15d8191cebc053;hpb=3b2376c6828136cdbc078015c0b9bee26bffb448;p=lilypond.git diff --git a/scm/document-backend.scm b/scm/document-backend.scm index 8a828b4a8c..02a09736b0 100644 --- a/scm/document-backend.scm +++ b/scm/document-backend.scm @@ -1,8 +1,8 @@ ;;;; backend-documentation-lib.scm -- Functions for backend documentation ;;;; ;;;; source file of the GNU LilyPond music typesetter -;;;; -;;;; (c) 2000--2004 Han-Wen Nienhuys +;;;; +;;;; (c) 2000--2007 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen (define (interface-doc-string interface grob-description) @@ -12,8 +12,11 @@ (docfunc (lambda (pr) (property->texi 'backend pr grob-description))) - (iprops (filter (lambda (x) (object-property x 'backend-internal) ) props)) - (uprops (filter (lambda (x) (not (object-property x 'backend-internal)) ) props)) + (iprops (filter (lambda (x) (object-property x 'backend-internal)) + props)) + (uprops (filter + (lambda (x) (not (object-property x 'backend-internal))) + props)) (user-propdocs (map docfunc uprops)) (internal-propdocs (map docfunc iprops))) @@ -23,13 +26,13 @@ (if (pair? uprops) (string-append "\n\n@unnumberedsubsubsec User settable properties:\n" - (description-list->texi user-propdocs)) + (description-list->texi user-propdocs #t)) "") (if (pair? iprops) (string-append - "\n\n@unnumberedsubsubsec Internal properties: \n" - (description-list->texi internal-propdocs)) + "\n\n@unnumberedsubsubsec Internal properties:\n" + (description-list->texi internal-propdocs #t)) "")))) (define iface->grob-table (make-vector 61 '())) @@ -50,20 +53,27 @@ ;; 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 + (sort + (map symbol->string + (hashq-ref iface->grob-table + (car interface) + '())) + string #: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))) @@ -71,7 +81,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 @@ -85,29 +96,40 @@ node." (ifacedoc (map (lambda (iface) (if (pair? iface) (ref-ify (symbol->string (car iface))) - (error (format "Error making doc of ~s" name)))) + (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))) + 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 #:name "All layout objects" - #:desc "Description and defaults for all Grobs" + #:desc "Description and defaults for all graphical objects (grobs)." #:children (map (lambda (x) (grob-doc (cdr x))) all-grob-descriptions))) @@ -121,28 +143,30 @@ node." ;;;;;;;;;; check for dangling backend properties. (define (mark-interface-properties entry) - (map (lambda (x) (set-object-property! x 'iface-marked #t)) (caddr (cdr entry)))) + (map (lambda (x) (set-object-property! x 'iface-marked #t)) + (caddr (cdr entry)))) (map mark-interface-properties interface-description-alist) (define (check-dangling-properties prop) (if (not (object-property prop 'iface-marked)) - (error "\ndefine-grob-properties.scm: Can't find interface for property:" prop))) + (ly:error (string-append "define-grob-properties.scm: " + (_ "cannot find interface for property: ~S")) prop))) (map check-dangling-properties all-backend-properties) ;;;;;;;;;;;;;;;; (define (lookup-interface name) - (let* ((entry (hashq-ref (ly:all-grob-interfaces) name '() ))) - (if (equal? entry #f) - (error "Unknown interface" name)) - entry)) + (let* ((entry (hashq-ref (ly:all-grob-interfaces) name #f))) + (if entry + entry + (ly:error (_ "unknown Grob interface: ~S") name)))) (define (all-interfaces-doc) (make #:name "Graphical Object Interfaces" - #:desc "Building blocks of graphical objects" + #:desc "Building blocks of graphical objects." #:children (map interface-doc interface-description-alist))) @@ -150,23 +174,23 @@ node." (let* ((ps (sort (map symbol->string lst) stringtexi '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 ) (define (backend-doc-node) (make #:name "Backend" - #:desc "Reference for the layout engine" + #:desc "Reference for the layout engine." #:children (list (all-grobs-doc) (all-interfaces-doc) (make #:name "User backend properties" - #:desc "All tunable properties in a big list" + #:desc "All tunable properties in a big list." #:text (backend-properties-doc-string all-user-grob-properties)) (make #:name "Internal backend properties" - #:desc "All internal layout properties in a big list" + #:desc "All internal layout properties in a big list." #:text (backend-properties-doc-string all-internal-grob-properties)))))