X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocumentation-lib.scm;h=b71709def4f8c79fd9e41bde5257c01b1e632687;hb=refs%2Fheads%2Fdon%2Fdep5_copyright;hp=24d94215fa19c00ae70b3e5fa808f79aad2d9ed2;hpb=70c86a3442dc5d6a1158a3e5bdfc4e683c4be3bf;p=lilypond.git diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm index 24d94215fa..b71709def4 100644 --- a/scm/documentation-lib.scm +++ b/scm/documentation-lib.scm @@ -1,16 +1,27 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; documentation-lib.scm -- Assorted Functions for generated documentation -;;;; -;;;; source file of the GNU LilyPond music typesetter -;;;; -;;;; (c) 2000--2007 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen +;;;; +;;;; LilyPond is free software: you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; the Free Software Foundation, either version 3 of the License, or +;;;; (at your option) any later version. +;;;; +;;;; LilyPond is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;;; GNU General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU General Public License +;;;; along with LilyPond. If not, see . (use-modules (oop goops) (srfi srfi-13) (srfi srfi-1)) (define-class () + (appendix #:init-value #f #:accessor appendix? #:init-keyword #:appendix) (children #:init-value '() #:accessor node-children #:init-keyword #:children) (text #:init-value "" #:accessor node-text #:init-keyword #:text) (name #:init-value "" #:accessor node-name #:init-keyword #:name) @@ -21,13 +32,13 @@ (node-name x) (node-desc x))) -(define* (dump-node node port level #:optional (appendix #f)) +(define* (dump-node node port level) (display (string-append "\n@node " - (node-name node) - "\n\n" - (if appendix + (if (= level 0) "Top" (node-name node)) + "\n" + (if (appendix? node) (texi-appendix-section-command level) (texi-section-command level)) " " @@ -41,7 +52,7 @@ (node-children node))) "")) port) - (map (lambda (x) (dump-node x port (+ 1 level) appendix)) + (map (lambda (x) (dump-node x port (+ 1 level))) (node-children node))) (define (processing name) @@ -59,22 +70,22 @@ (define (texi-section-command level) - (cdr (assoc level '( - ;; Hmm, texinfo doesn't have ``part'' - (0 . "@top") - (1 . "@unnumbered") - (2 . "@unnumberedsec") - (3 . "@unnumberedsubsec") - (4 . "@unnumberedsubsubsec") - (5 . "@unnumberedsubsubsec"))))) + (assoc-get level '( + ;; Hmm, texinfo doesn't have ``part'' + (0 . "@top") + (1 . "@chapter") + (2 . "@section") + (3 . "@subsection") + (4 . "@unnumberedsubsubsec") + (5 . "@unnumberedsubsubsec")))) (define (texi-appendix-section-command level) - (cdr (assoc level '((0 . "@top") - (1 . "@appendix") - (2 . "@appendixsec") - (3 . "@appendixsubsec") - (4 . "@appendixsubsubsec") - (5 . "@appendixsubsubsec"))))) + (assoc-get level '((0 . "@top") + (1 . "@appendix") + (2 . "@appendixsec") + (3 . "@appendixsubsec") + (4 . "@appendixsubsubsec") + (5 . "@appendixsubsubsec")))) (define (one-item->texi label-desc-pair) "Document one (LABEL . DESC); return empty string if LABEL is empty string." @@ -99,13 +110,13 @@ string-to-use). If QUOTE? is #t, embed table in a @quotation environment." "Generate what is between @menu and @end menu." (let ((maxwid (apply max (map (lambda (x) (string-length (car x))) items-alist)))) - + (string-append "\n@menu" (apply string-append (map (lambda (x) (string-append - (string-pad-right + (string-pad-right (string-append "\n* " (car x) ":: ") (+ maxwid 8)) (cdr x))) @@ -148,12 +159,13 @@ string-to-use). If QUOTE? is #t, embed table in a @quotation environment." name) (define (ref-ify x) - "Add ref to X" + "Return @ref{X}. If mapping ref-ify to a list that needs to be sorted, + sort the list first." (string-append "@ref{" x "}")) (define (human-listify lst) "Produce a textual enumeration from LST, a list of strings" - + (cond ((null? lst) "none") ((null? (cdr lst)) (car lst)) @@ -175,23 +187,23 @@ with init values from ALIST (1st optional argument) (alist (if (pair? rest) (car rest) '())) (type?-name (string->symbol (string-append (symbol->string where) "-type?"))) - (doc-name (string->symbol + (doc-name (string->symbol (string-append (symbol->string where) "-doc"))) (type (object-property sym type?-name)) (typename (type-name type)) (desc (object-property sym doc-name)) - (handle (assoc sym alist))) + (init-value (assoc-get sym alist))) (if (eq? desc #f) (ly:error (_ "cannot find description for property ~S (~S)") sym where)) - + (cons (string-append "@code{" name "} " "(" typename ")" - (if handle + (if init-value (string-append ":\n\n" - (scm->texi (cdr handle)) + (scm->texi init-value) "\n\n") "")) desc)))