]> git.donarmstrong.com Git - lilypond.git/blob - scm/document-markup.scm
* scm/define-markup-commands.scm (smallcaps): New markup command.
[lilypond.git] / scm / document-markup.scm
1 ;;;; document-markup.scm -- part of generated backend documentation
2 ;;;;
3 ;;;;  source file of the GNU LilyPond music typesetter
4 ;;;; 
5 ;;;; (c)  1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
7
8 (define (doc-markup-function func)
9   (let*
10       (
11        (doc-str  (procedure-documentation func) )
12        (f-name (symbol->string (procedure-name  func)))
13        (c-name (regexp-substitute/global #f "-markup$" f-name  'pre "" 'post))
14        (sig (object-property func 'markup-signature))
15        (arg-names
16         (map symbol->string 
17              (cddr (cadr (procedure-source func)))))
18        
19        (sig-type-names (map type-name sig))
20        (signature (zip arg-names  sig-type-names))
21        (signature-str
22         (string-join
23          (map (lambda (x) (string-append
24                            "@var{" (car x) "} ("  (cadr x) ")" ))
25               (zip arg-names  sig-type-names))
26          " " )))
27     
28     
29        
30   (string-append
31    "\n\n@item @code{\\" c-name "} " signature-str
32    
33    "\n@findex " f-name "\n"
34    "\n@cindex " c-name "\n"
35    
36    (if (string? doc-str)
37        doc-str
38        "")
39   )))
40
41 (define (markup-function<? a b)
42   (string<? (symbol->string (procedure-name a)) (symbol->string (procedure-name b))))
43
44 (define (markup-doc-string)
45   (string-append
46          
47          "@table @asis"
48          (apply string-append
49          
50                 (map doc-markup-function
51                      (sort markup-function-list markup-function<?) ) )
52          "\n@end table"
53
54          ))
55
56 (define (markup-doc-node)
57   (make <texi-node>
58     #:name "Markup functions"
59     #:desc "Definitions of the markup functions."
60     #:text (markup-doc-string)))