X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocumentation-lib.scm;h=685dc500d32354a34db708a03761af48b8c022b8;hb=HEAD;hp=013cc2a4377bc0b373db7364221feedc96fe6d95;hpb=9b279fe458c4dd2ed9550670ea521e29bad57cd0;p=lilypond.git diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm index 013cc2a437..685dc500d3 100644 --- a/scm/documentation-lib.scm +++ b/scm/documentation-lib.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2000--2011 Han-Wen Nienhuys +;;;; Copyright (C) 2000--2015 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -17,8 +17,11 @@ ;;;; along with LilyPond. If not, see . (use-modules (oop goops) - (srfi srfi-13) - (srfi srfi-1)) + (srfi srfi-13) + (srfi srfi-1)) + +(if (guile-v2) + (use-modules (ice-9 curried-definitions))) (define-class () (appendix #:init-value #f #:accessor appendix? #:init-keyword #:appendix) @@ -47,51 +50,49 @@ (node-text node) "\n\n" (if (pair? (node-children node)) - (texi-menu - (map (lambda (x) (menu-entry x)) - (node-children node))) - "")) + (texi-menu + (map menu-entry (node-children node))) + "")) port) - (map (lambda (x) (dump-node x port (+ 1 level))) - (node-children node))) + (for-each (lambda (x) (dump-node x port (+ 1 level))) + (node-children node))) (define (processing name) - (ly:message (_ "Processing ~S...") name)) - -(define (self-evaluating? x) - (or (number? x) (string? x) (procedure? x) (boolean? x))) - -(define (texify x) - x) - -(define (scm->texi x) - (string-append "@code{" (texify (scm->string x)) "}")) - - + (ly:basic-progress (_ "Processing ~S...") name)) + +(define (scm->texi val) + (let* (; always start on a new line + (open-texi (if (pretty-printable? val) + "\n@verbatim\n" + "\n@code{")) + (close-texi (if (pretty-printable? val) + "@end verbatim" + "}"))) + (string-append open-texi (scm->string val) close-texi))) (define (texi-section-command level) (assoc-get level '( - ;; Hmm, texinfo doesn't have ``part'' - (0 . "@top") - (1 . "@chapter") - (2 . "@section") - (3 . "@subsection") - (4 . "@unnumberedsubsubsec") - (5 . "@unnumberedsubsubsec")))) + ;; Hmm, texinfo doesn't have ``part'' + (0 . "@top") + (1 . "@chapter") + (2 . "@section") + (3 . "@subsection") + (4 . "@unnumberedsubsubsec") + (5 . "@unnumberedsubsubsec")))) (define (texi-appendix-section-command level) (assoc-get level '((0 . "@top") - (1 . "@appendix") - (2 . "@appendixsec") - (3 . "@appendixsubsec") - (4 . "@appendixsubsubsec") - (5 . "@appendixsubsubsec")))) + (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." (if (eq? (car label-desc-pair) "") "" - (string-append "\n@item " (car label-desc-pair) "\n" (cdr label-desc-pair)))) + (string-append "\n\n@item " (car label-desc-pair) "\n" (cdr label-desc-pair)))) (define (description-list->texi items-alist quote?) @@ -100,34 +101,34 @@ string-to-use). If QUOTE? is #t, embed table in a @quotation environment." (string-append "\n" (if quote? "@quotation\n" "") - "@table @asis\n" - (apply string-append (map one-item->texi items-alist)) - "\n" + "@table @asis" + (string-concatenate (map one-item->texi items-alist)) + "\n\n" "@end table\n" (if quote? "@end quotation\n" ""))) (define (texi-menu items-alist) "Generate what is between @menu and @end menu." (let ((maxwid - (apply max (map (lambda (x) (string-length (car x))) items-alist)))) + (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-append "\n* " (car x) ":: ") - (+ maxwid 8)) - (cdr x))) - items-alist)) + (string-concatenate + (map (lambda (x) + (string-append + (string-pad-right + (string-append "\n* " (car x) ":: ") + (+ maxwid 8)) + (cdr x))) + items-alist)) "\n@end menu\n" ;; Menus don't appear in html, so we make a list ourselves "\n@ignore\n" "\n@ifhtml\n" (description-list->texi (map (lambda (x) (cons (ref-ify (car x)) (cdr x))) - items-alist) - #t) + items-alist) + #t) "\n@end ifhtml\n" "\n@end ignore\n"))) @@ -142,7 +143,7 @@ string-to-use). If QUOTE? is #t, embed table in a @quotation environment." "\n* GNU " name ": (" file-name "). " name "." "\n@end direntry\n" "@documentlanguage en\n" - "@documentencoding utf-8\n")) + "@documentencoding UTF-8\n")) (define (context-name name) name) @@ -195,27 +196,22 @@ string-to-use). If QUOTE? is #t, embed table in a @quotation environment." with init values from ALIST (1st optional argument) " (let* ((name (symbol->string sym)) - (alist (if (pair? rest) (car rest) '())) - (type?-name (string->symbol - (string-append (symbol->string where) "-type?"))) - (doc-name (string->symbol - (string-append (symbol->string where) "-doc"))) - (type (object-property sym type?-name)) - (typename (verify-type-name where sym type)) - (desc (object-property sym doc-name)) - (init-value (assoc-get sym alist))) + (alist (if (pair? rest) (car rest) '())) + (type?-name (string->symbol + (string-append (symbol->string where) "-type?"))) + (doc-name (string->symbol + (string-append (symbol->string where) "-doc"))) + (type (object-property sym type?-name)) + (typename (verify-type-name where sym type)) + (desc (object-property sym doc-name)) + (init-value (assoc-get sym alist))) (if (eq? desc #f) - (ly:error (_ "cannot find description for property ~S (~S)") sym where)) + (ly:error (_ "cannot find description for property ~S (~S)") sym where)) (cons - (string-append "@code{" name "} " - "(" typename ")" - (if init-value - (string-append - ":\n\n" - (scm->texi init-value) - "\n\n") - "")) + (string-append "@code{" name "} (" typename ")" + (if init-value + (string-append ":" (scm->texi init-value) "\n") + "")) desc))) -