]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/document-markup.scm
Doc-es: various updates.
[lilypond.git] / scm / document-markup.scm
index 19462e4424fbef2a72fb22ff298a2b43dce291f4..35347ae15083c0fac3c47c416c05857f88d4b37b 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
     prop-strings))
 
 (define (doc-markup-function func)
-  (let* ((doc-str  (procedure-documentation func))
+  (let* ((full-doc (procedure-documentation func))
+         (match-args (and full-doc (string-match "^\\([^)]*\\)\n" full-doc)))
+         (arg-names (if match-args
+                        (with-input-from-string (match:string match-args) read)
+                        (circular-list "arg")))
+         (doc-str (if match-args (match:suffix match-args) full-doc))
          (f-name (symbol->string (procedure-name  func)))
          (c-name (regexp-substitute/global #f "-markup(-list)?$" f-name  'pre "" 'post))
          (sig (object-property func 'markup-signature))
-         (arg-names (let ((arg-list (cadr (procedure-source func))))
-                      (if (list? arg-list)
-                          (map symbol->string (cddr arg-list))
-                          (make-list (length sig) "arg"))))
          (sig-type-names (map type-name sig))
          (signature-str
           (string-join
-           (map (lambda (x) (string-append
-                             "@var{" (car x) "} ("  (cadr x) ")" ))
-                (zip arg-names  sig-type-names))
+           (map (lambda (x y)
+                  (format #f "@var{~a} (~a)" x y))
+                arg-names  sig-type-names)
            " " )))
-    
+
     (string-append
      "\n\n@item @code{\\" c-name "} " signature-str
      "\n@funindex \\" c-name "\n"
-     "\n@cindex \\" c-name "\n"    
+     "\n@cindex \\" c-name "\n"
      (if (string? doc-str)
          doc-str
          "")
        (if (null? prop-strings)
            "\n"
            (string-append "\n\n\nUsed properties:\n@itemize\n"
-                          (apply string-append prop-strings)
+                          (string-concatenate prop-strings)
                           "@end itemize\n"))))))
 
 (define (markup-function<? a b)
   (ly:string-ci<? (symbol->string (procedure-name a)) (symbol->string (procedure-name b))))
+
 (define (markup-category-doc-node category)
   (let* ((category-string (symbol->string category))
-         (category-name (string-capitalize (regexp-substitute/global #f
-                                        "-" category-string 'pre " " 'post)))
-        (markup-functions (hash-fold (lambda (markup-function dummy functions)
-                                      (cons markup-function functions))
-                                    '()
-                                    (hashq-ref markup-functions-by-category
-                                               category))))
+         (category-name (string-capitalize
+                         (regexp-substitute/global
+                          #f "-" category-string 'pre " " 'post)))
+         (markup-functions (hash-fold (lambda (markup-function dummy functions)
+                                        (cons markup-function functions))
+                                      '()
+                                      (hashq-ref markup-functions-by-category
+                                                 category))))
     (make <texi-node>
       #:appendix #t
       #:name category-name
       #:desc ""
       #:text (string-append
               "@table @asis"
-              (apply string-append
-                     (map doc-markup-function
-                          (sort markup-functions markup-function<?)))
+              (string-concatenate
+               (map doc-markup-function
+                    (sort markup-functions markup-function<?)))
               "\n@end table"))))
 
-(define (markup-list-doc-string)
-  (string-append
-   "@table @asis"
-   (apply string-append
-          (map doc-markup-function
-               (sort (hash-fold (lambda (markup-list-function dummy functions)
-                                 (cons markup-list-function functions))
-                               '()
-                               markup-list-functions)
-                    markup-function<?)))
-   "\n@end table"))
-
 (define (markup-doc-node)
   (make <texi-node>
     #:appendix #t
     #:desc ""
     #:text "The following commands can all be used inside @code{\\markup @{ @}}."
     #:children (let* (;; when a new category is defined, update `ordered-categories'
-                      (ordered-categories '(font align graphic music instrument-specific-markup other))
+                      (ordered-categories '(font align graphic music instrument-specific-markup accordion-registers other))
                       (raw-categories (hash-fold (lambda (category functions categories)
                                                    (cons category categories))
                                                  (list)
                                                   raw-categories))))
                  (map markup-category-doc-node categories))))
 
-(define (markup-list-doc-node)
-  (make <texi-node>
-    #:appendix #t
-    #:name "Text markup list commands"
-    #:desc ""
-    #:text (string-append
-            "The following commands can all be used with @code{\\markuplines}.\n"
-            (markup-list-doc-string))))
+(define (markup-list-doc-string)
+  (string-append
+   "@table @asis"
+   (string-concatenate
+    (map doc-markup-function
+         (sort (hash-fold (lambda (markup-list-function dummy functions)
+                            (cons markup-list-function functions))
+                          '()
+                          markup-list-functions)
+               markup-function<?)))
+   "\n@end table"))