]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/engraver-documentation-lib.scm
patch::: 1.3.136.jcn3
[lilypond.git] / scm / engraver-documentation-lib.scm
index e886d6fb648ed22f7f4b9f5dea2a696d1fba3be4..b21356f96e6084c2250f61d0ff3869d6ff239377 100644 (file)
@@ -3,7 +3,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>
 
 
 ;; First level Engraver description and
 ;; second level Context description
 (define (document-engraver where engraver-descr)
   (let* (
         (level (if (eq? where 'context) 3 2))
         (props (car (cdddr engraver-descr)))
         (name (car engraver-descr))
+        (name-sym (string->symbol name))
         (desc (cadr engraver-descr))
-        (objs (caddr engraver-descr))
+        (objs (map symbol->string (caddr engraver-descr)))
         )
 
     (string-append
@@ -42,9 +42,9 @@
      (if  (null? objs)
          ""
          (string-append
-          "This engraver creates \n "
-          (human-listify (map reffy (map grob-name objs)))
-          " grobs.")
+          "This engraver creates the following grobs: \n "
+          (human-listify (map ref-ify (uniq-list (sort  objs string<? ))))
+          ".")
          )
 
      "\n\n"
                                            (cdr (assoc 'consists x))
                                            (cdr (assoc 'end-consists x)))))
 
-                            (if (member name consists)
+                            (if (member name-sym consists)
                                 (list context)
                                 '())))
                         context-description-alist))))
        (string-append
        name " is part of contexts: "
-       (human-listify (map reffy (map context-name contexts))))))))
+       (human-listify (map ref-ify (map context-name contexts))))))))
 
 
 ;; First level Engraver description
                  (cdr (assoc 'consists context-desc))
                  (cdr (assoc 'end-consists  context-desc))
                  ))
+       (grobs  (context-grobs context-desc))
+       (grob-refs (map (lambda (x) (ref-ify x)) grobs))
        )
     
     (string-append 
      desc
+     "\n\nThis context creates the following grobs: \n\n"
+     (human-listify (uniq-list (sort grob-refs string<? )))
+     "."
      
      (if (null? accepts)
         "This context is a `bottom' context; it can not contain other contexts."
         (string-append
+         "\n\nContext "
          name " can contain \n"
-         (human-listify (map reffy (map context-name accepts)))))
+         (human-listify (map ref-ify (map context-name accepts)))))
      
      "\n\nThis context is built from the following engravers: "
      (if no-copies
-        (human-listify (map reffy (map engraver-name consists)))
+        (human-listify (map ref-ify (map engraver-name consists)))
         (apply string-append 
                (map document-engraver-by-name consists))))))
 
+(define (engraver-grobs  name)
+  (let* (
+        (eg (assoc (string->symbol name) engraver-description-alist))
+      )
+
+    (if (eq? eg #f)
+       '()
+       (map symbol->string (caddr (cdr eg)))
+       )
+  ))
+
+(define (context-grobs context-desc)
+  (let* (
+        (consists (append
+                   (list (cdr (assoc 'group-type context-desc)))
+                   (cdr (assoc 'consists context-desc))
+                   (cdr (assoc 'end-consists  context-desc))
+                   ))
+        (grobs  (apply append
+                 (map engraver-grobs consists))
+        )
+        )
+    grobs
+    ))
+
 
 ;; First level Context description
 (define (document-context top context-desc)
      (texi-section 2 (context-name name) #f)
       doc)))
 
+(define (symbol<? l r)
+  (string<? (symbol->string l) (symbol->string r)))
 
 (define (document-paper name)
   (let* ((paper-alist
          (sort (My_lily_parser::paper_description)
-               (lambda (x y) (string<? (car x) (car y)))))
-        (names (sort (map car paper-alist) string<?))
+               (lambda (x y) (symbol<? (car x) (car y)))))
+        (names (sort (map symbol->string (map car paper-alist)) string<?))
         (contexts (map cdr paper-alist))
         (doc (apply string-append
                     (map (lambda (x) (document-context name x)) contexts))))
 
 (define (document-all-engravers name)
   (let* ((descs (map cdr engraver-description-alist))
-        (names (map car engraver-description-alist))
+        (names (map symbol->string (map car engraver-description-alist)))
         (doc (apply string-append
                     (map (lambda (x) (document-separate-engraver name x))
                          descs))))
-    
     (string-append
      (texi-node-menu name (map (lambda (x) (cons (engraver-name x) ""))
                               names))
      doc)))
 
 (define (document-all-engraver-properties name)
-  (let*
-    (
-     (ps (sort (map symbol->string all-translation-properties) string<?))
-     (sortedsyms (map string->symbol ps))
-     (propdescs (map document-translator-property sortedsyms))
-     (texi (description-list->texi propdescs))
-     )
+  (let* ((ps (sort (map symbol->string all-translation-properties) string<?))
+        (sortedsyms (map string->symbol ps))
+        (propdescs (map document-translator-property sortedsyms))
+        (texi (description-list->texi propdescs)))
      
   (string-append
          (node name)
          (texi-section 1 name #f)
-         texi
-   )))
+         texi)))