]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/backend-documentation-lib.scm
release: 1.5.47
[lilypond.git] / scm / backend-documentation-lib.scm
index 87b7e079dea96cd2c10341f5bc08323d4b865212..ac7ea8f94ae326b9e115a11b148806b6d20e9a53 100644 (file)
        (typename (type-name type))
        (desc (object-property sym 'backend-doc)))
 
-    (cons (string-append "@code{" name "} "
+
+    (if (equal? desc #f)
+       (error "Unknown property " sym)
+       
+       (cons (string-append "@code{" name "} "
                       "(" typename ")"
                       ": "
 
 ; index gets too messy
 ;                     "@vindex " name "\n"
-
-
                       )
-         desc)))
+         desc))))
 
 (define (document-grob-property sym grob-description )
+  "Document SYM, filling in default values."
   (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))))
+                                          defval)))
+  )
 
 (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)
+        (docfunc (lambda (pr)
                    (document-grob-property
-                    x grob-description )))
+                    pr grob-description )))
         (docs (map docfunc props)))
 
     (string-append
      (node (interface-name name))
      (document-interface 'self interface '()))))
 
+
 ;; First level grob description
 (define (document-grob iname description)
   (processing iname)
   (let* ((metah (assoc 'meta description))
         
-        (meta (if (pair? metah)
-                  (cdr metah)
-                  '((properties . ()) (name . "huh?"))
-                  ))
-        
+        (meta (cdr metah))
         (name (cdr (assoc 'name meta)))
-        (ifaces (cdr (assoc 'interface-descriptions meta)))
-        (ifacedoc (map (lambda (x)
-                         (document-interface 'grob x description))
-                       (reverse ifaces))))
+        (ifaces (map lookup-interface (cdr (assoc 'interfaces meta))))
+        (ifacedoc (map (lambda (iface)
+                         (document-interface 'grob iface description))
+                       (reverse ifaces)))
+        )
 
+    
     (string-append
      (node (grob-name name))
      (texi-section 2 (grob-name name) #f)
                            (map engraver-name engraver-names)))))
 
            (apply string-append ifacedoc))))
-     
+
+
+
 (define (engraver-makes-grob? name-symbol grav)
   (memq name-symbol (assoc 'grobs-created (Translator::description grav)))
   )
 
 
 (define interface-description-alist
-  (map (lambda (x) (cons (string->symbol x) (eval-string x)))
-            (interface-names)))
+  (hash-fold
+   (lambda (key val prior)
+     (cons (cons key val)  prior)
+     )
+   '() (ly-all-grob-interfaces)))
 
 (set! interface-description-alist (sort interface-description-alist alist<?))
 
+
+;;;;;;;;;; check for dangling backend properties.
+(define (mark-interface-properties entry)
+  (map (lambda (x) (set-object-property! x  'iface-marked #t)) (caddr (cdr entry)))
+  )
+
+(map mark-interface-properties interface-description-alist)
+
+(define (check-dangling-properties prop)
+  (if (not (object-property prop 'iface-marked))
+      (error  "\nDangling property: "  prop))
+  )
+
+(map check-dangling-properties all-backend-properties)
+
+;;;;;;;;;;;;;;;;
+
+(define (lookup-interface name)
+  (let*  (
+         (entry  (hashq-ref (ly-all-grob-interfaces) name #f))
+         )
+
+    (if (equal? entry #f)
+       (error "Unknown interface" name))
+    
+    entry
+))
+
+;(write  (map car  interface-description-alist) (current-error-port))
+;(display  (lookup-interface 'volta-bracket-interface))
+
 (define (document-all-interfaces name)
   (string-append
    (texi-node-menu name (map (lambda (x)
      texi)
   )
   )
-  
+
+;;;;;;;;;;;;;;;;
+