]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/backend-documentation-lib.scm
patch::: 1.3.136.jcn3
[lilypond.git] / scm / backend-documentation-lib.scm
index 0667b1bc49abdb87fabb04c8aed4f39941aa8def..4c14181208f39484fb7e45d66e9317fd4aa04d53 100644 (file)
@@ -2,7 +2,7 @@
 ;;;
 ;;; source file of the GNU LilyPond music typesetter
 ;;; 
-;;; (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;; (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 ;;; Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
 
 (define (backend-property->texi sym)
-  (let* (
-       (name (symbol->string sym))
+  (let* ((name (symbol->string sym))
        (type (object-property sym 'backend-type?))
        (typename (type-name type))
-       (desc (object-property sym 'backend-doc))
-       )
+       (desc (object-property sym 'backend-doc)))
 
     (cons (string-append "@code{" name "} "
                       "(" typename ")"
-                      ":" )
-         desc)
-    ))
+                      ": "
 
-(define (document-element-property sym element-description only-doc-if-set)
-  (let*
-      (
-       (handle (assoc sym element-description))
-       (defval (if (eq? handle #f)
-                  ""
-                  (scm->texi (cdr handle))
-                  ))
-       (propdoc (backend-property->texi sym))
-       )
+; index gets too messy
+;                     "@vindex " name "\n"
 
-    (if (and only-doc-if-set  (eq? handle #f) )
-       '("" . "")
-       (cons (car propdoc) (string-append (cdr propdoc)
-                                          "\nDefault value: "
-                                          defval)))
-    ))
 
-(define (document-interface where interface element-description)
-  "
+                      )
+         desc)))
+
+(define (document-grob-property sym grob-description )
+  (let* ((handle (assoc sym grob-description))
+        (defval (if (eq? handle #f)
+                    "(unset)"
+                  (scm->texi (cdr handle))))
+        (propdoc (backend-property->texi sym)))
+    
+    (cons (car propdoc) (string-append (cdr propdoc)
+                                          "\nDefault value: "
+                                          defval))))
 
-"
-  (let* ((level (if (eq? where 'element) 3 2))
+(define (document-interface where interface grob-description)
+  (let* ((level (if (eq? where 'grob) 3 2))
         (name (car interface))
         (desc (cadr interface))
         (props (caddr interface))
-        (docfunc  (lambda (x)
-                   (document-element-property
-                    x element-description (eq? where 'element))))
-        (docs (map docfunc props))
-        )
+        (docfunc (lambda (x)
+                   (document-grob-property
+                    x grob-description )))
+        (docs (map docfunc props)))
 
     (string-append
-     (texi-section level (string-append (interface-name (symbol->string name))) (eq? where 'element)) ;gur.
+     (texi-section level
+                  (string-append (interface-name (symbol->string name)))
+                  (eq? where 'grob)) ;gur.
      desc
-     
-     (description-list->texi docs)
-     )))
+     (description-list->texi docs))))
 
 ;; First level Interface description
 (define (document-separate-interface interface)
-  (let ((name (car interface)))
+  (let ((name (symbol->string (car interface))))
     (processing name)
     (string-append
      (node (interface-name name))
      (document-interface 'self interface '()))))
 
-;; First level element description
-(define (document-element iname description)
+;; First level grob description
+(define (document-grob iname description)
   (processing iname)
   (let* ((metah (assoc 'meta description))
         
         
         (name (cdr (assoc 'name meta)))
         (ifaces (cdr (assoc 'interface-descriptions meta)))
-        (ifacedoc (map (lambda (x) (document-interface 'element x description))
+        (ifacedoc (map (lambda (x)
+                         (document-interface 'grob x description))
                        (reverse ifaces))))
-    
+
     (string-append
-     (node (element-name name))
-     (texi-section 2 (element-name name) #f)
+     (node (grob-name name))
+     (texi-section 2 (grob-name name) #f)
      "\n"
 
-     (let* ((element (string->symbol name))
+     (let* ((grob (string->symbol name))
            (engravers
             (apply append
                    (map (lambda (x)
                           (let ((engraver (car x))
                                 (objs (cadddr x)))
-                            (if (member element objs)
+                            (if (member grob objs)
                                 (list engraver)
                                 '())))
                         engraver-description-alist))))
        (string-append
-       name " elements are created by: "
-       (human-listify (map reffy (map engraver-name engravers)))))
+       name " grobs are created by: "
+       (human-listify (map ref-ify
+                           (map engraver-name
+                                (map symbol->string engravers))))))
 
      (apply string-append ifacedoc))))
      
 
-(define (document-all-elements name)
+(define (document-all-grobs name)
   (let* ((doc (apply string-append
-                    (map (lambda (x) (document-element (car x) (cdr x)))
-                         all-element-descriptions)))
-        (names (map car all-element-descriptions)))
+                    (map (lambda (x)
+                           (document-grob (symbol->string (car x)) (cdr x)))
+                         all-grob-descriptions)))
+        (names (map symbol->string (map car all-grob-descriptions))))
 
     (string-append
-     (texi-node-menu name (map (lambda (x) (cons (element-name x) ""))
+     (texi-node-menu name (map (lambda (x) (cons (grob-name x) ""))
                               names))
      doc)))
 
-;; testin.. -- how to do this
-(eval-string (ly-gulp-file "interface.scm"))
-(define xinterface-description-alist
-  `(
-    (general-element . ,general-element-interface)
-    (beam . ,beam-interface)
-    (clef . ,clef-interface)
-    (slur . ,slur-interface)
-    ))
-
-;; burp, need these for running outside of LilyPond
-(if #f
+;; ugh, this works standalone, but not anymore with lily
+(if (not (defined? 'standalone))
     (begin
 
       (debug-enable 'backtrace)
 
+      (load "standalone.scm")
+
       (define (number-pair?  x)
        (and (pair? x) (number? (car x)) (number? (cdr x))))
       
-      (define (ly-gulp-file x) "")
       (define (ly-grob? x) #f)
       (define (ly-input-location? x) #f)
       (define (dir? x) #f)
       (define (moment? x) #f)
-      (load "lily.scm")))
+      ))
 
 (use-modules (ice-9 string-fun))
 
-(define interface-file-str (string-append (ly-gulp-file "interface.scm") "\n(define "))
-
-(define (list-interface-names)
-  (let* ((text interface-file-str)
-        (r (make-regexp 
-            "\n[(](define *([a-z-]*-interface)*)*[^\n]*"))
-        (t (regexp-substitute/global #f r text 2 " " 'post))
-        (ugh (regexp-substitute/global #f "#f *" t 'pre 'post))
-        (l (separate-fields-discarding-char #\  ugh list)))
-    (reverse (cdr (reverse l)))))
-
-
-
+(if standalone
+  (begin
+    (display "(define (list-interface-names) '") 
+    (write (ugh-standalone-list-interface-names))
+    (display ")")
+    (exit 0)))
 
-(eval (ly-gulp-file "interface.scm"))
 
 (define interface-description-alist
   (map (lambda (x) (cons (string->symbol x) (eval-string x)))
-            (list-interface-names)))
+            (interface-names)))
 
 (set! interface-description-alist (sort interface-description-alist alist<?))
 
 (define (document-all-interfaces name)
   (string-append
-   (texi-node-menu name (map (lambda (x) (cons (interface-name x) ""))
+   (texi-node-menu name (map (lambda (x)
+                              (cons (interface-name (symbol->string x)) ""))
                             (map cadr interface-description-alist)))
    (apply string-append
          (map document-separate-interface