]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/document-translation.scm
* scm/define-markup-commands.scm (smallcaps): New markup command.
[lilypond.git] / scm / document-translation.scm
index 95e3cb02f033e148712c12f9b0c39ede53ff73f8..ac3843c6567bba09e108153921ad6c2652483cd1 100644 (file)
@@ -1,10 +1,9 @@
-
-;;; engraver-doumentation-lib.scm -- Functions for engraver documentation
-;;;
-;;; source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; document-translation.scm -- Functions for engraver documentation
+;;;;
+;;;; source file of the GNU LilyPond music typesetter
+;;;; 
+;;;; (c)  2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 (define (engraver-makes-grob? name-symbol grav)
@@ -29,8 +28,8 @@
         (propsr (cdr (assoc 'properties-read (ly:translator-description engraver))))
         (propsw (cdr (assoc 'properties-written (ly:translator-description engraver))))
         (accepted  (cdr (assoc 'events-accepted (ly:translator-description engraver)))) 
-        (name (ly:translator-name engraver))
-        (name-sym (string->symbol name))
+        (name-sym  (ly:translator-name engraver))
+        (name-str (symbol->string name-sym))
         (desc (cdr (assoc 'description (ly:translator-description engraver))))
         (grobs (engraver-grobs engraver))
         )
@@ -54,7 +53,7 @@
         (string-append
          "Properties (read)"
          (description-list->texi
-          (map (lambda (x) (document-property x 'translation #f)) propsr)))
+          (map (lambda (x) (property->texi 'translation  x '())) propsr)))
         "")
      
      (if (null? propsw)
         (string-append
         "Properties (write)" 
          (description-list->texi
-          (map (lambda (x) (document-property x 'translation #f)) propsw))))
+          (map (lambda (x) (property->texi 'translation  x '())) propsw))))
      (if  (null? grobs)
          ""
          (string-append
           "This engraver creates the following grobs: \n "
-          (human-listify (map ref-ify (uniq-list (sort  grobs string<? ))))
+          (human-listify (map ref-ify (uniq-list (sort grobs string<? ))))
           ".")
          )
 
      "\n\n"
 
      (if in-which-contexts
-        (let* ((paper-alist (My_lily_parser::paper_description))
-               (context-description-alist (map cdr paper-alist))
-               (contexts
-                (apply append
-                       (map (lambda (x)
-                              (let ((context (cdr (assoc 'type-name x)))
-                                    (consists (append
-                                               (list (cdr (assoc 'group-type x)))
-                                               (cdr (assoc 'consists x))
-                                               (cdr (assoc 'end-consists x)))))
-
-                                (if (member name consists)
-                                    (list context)
-                                    '())))
-                            context-description-alist))))
+        (let*
+            ((paper-alist (My_lily_parser::paper_description))
+             (context-description-alist (map cdr paper-alist))
+             (contexts
+              (apply append
+                     (map
+                      (lambda (x)
+                        (let*
+                            ((context (cdr (assoc 'context-name x)))
+                             (group (assq-ref x 'group-type))
+                             (consists (append
+                                        (if group
+                                            (list group)
+                                            '())
+                                        (cdr (assoc 'consists x))
+                                        ))
+
+
+                             )
+                          (if (member name-sym consists)
+                              (list context)
+                              '())))
+                      context-description-alist))))
           (string-append
-           name " is part of contexts: "
-           (human-listify (map ref-ify (map context-name contexts)))))
+           name-str " is part of contexts: "
+           (human-listify (map ref-ify (map symbol->string contexts)))))
         ""
         ))))
 
 ;; First level Engraver description
 (define (engraver-doc grav)
   (make <texi-node>
-    #:name (ly:translator-name grav)
+    #:name (symbol->string (ly:translator-name grav))
     #:text (engraver-doc-string grav #t)
     ))
 
  (ly:get-all-translators))
 
 (define (find-engraver-by-name name)
+  "NAME is a symbol." 
   (hash-ref name->engraver-table name #f))
 
 (define (document-engraver-by-name name)
+  "NAME is a symbol."
   (let*
       (
        (eg (find-engraver-by-name name ))
        )
 
-    (cons name 
+    (cons (symbol->string name )
          (engraver-doc-string eg #f)
-       
      )
     ))
 
         "Revert "
         "Set "
         )
-     "grob-property "
+     "grob-property @code{"
      (symbol->string (cadr body))
-     " in " (symbol->string sym)
+     "} in @ref{" (symbol->string sym)
+     "}"
      (if (not (null? (cddr body)))
-        (string-append " to " (scm->texi (cadr (cdr body))))
+        (string-append " to @code{" (scm->texi (cadr (cdr body))) "}" )
         )
     "\n"
      )
    ((equal? (object-property sym 'is-grob?) #t) "")
    ((equal? (car op) 'assign)
     (string-append
-     "@item Set translator property "
+     "@item Set translator property @code{"
      (symbol->string (car body))
-     " to "
+     "} to @code{"
      (scm->texi (cadr body))
-     "\n"
+     "}\n"
      )
      )
    )
 (define (context-doc context-desc)
   (let*
       (
-       (name (cdr (assoc 'type-name context-desc)))
-       (desc-handle (assoc (string->symbol name) context-description-alist))
-       (desc (if (pair? desc-handle)  (cdr desc-handle) ""))
+       (name-sym (cdr (assoc 'context-name context-desc)))
+       (name (symbol->string name-sym))
+       (aliases (map symbol->string (cdr (assoc 'aliases context-desc))))
+       (desc-handle (assoc 'description context-desc))
+       (desc (if (and  (pair? desc-handle) (string? (cdr desc-handle)))
+                (cdr desc-handle) "(not documented)"))
        
        (accepts (cdr (assoc 'accepts context-desc)))
+       (group (assq-ref context-desc 'group-type))
+
        (consists (append
-                 (list (cdr (assoc 'group-type context-desc)))
+                 (if group (list group)
+                     '())
                  (cdr (assoc 'consists context-desc))
-                 (cdr (assoc 'end-consists  context-desc))
                  ))
        (props (cdr (assoc 'property-ops context-desc)))
        (grobs  (context-grobs context-desc))
-       (grob-refs (map (lambda (x) (ref-ify x)) grobs))
-       )
+       (grob-refs (map (lambda (x) (ref-ify x)) grobs)) )
+
     (make <texi-node>
       #:name name
       #:text
       (string-append 
        desc
+       "\n\n This context is also known as: \n\n"
+       (human-listify aliases)
        "\n\nThis context creates the following grobs: \n\n"
        (human-listify (uniq-list (sort grob-refs string<? )))
        "."
           (string-append
            "\n\nContext "
            name " can contain \n"
-           (human-listify (map ref-ify (map context-name accepts)))))
+           (human-listify (map ref-ify (map symbol->string accepts)))))
        
        "\n\nThis context is built from the following engravers: "
        (description-list->texi
              (map document-engraver-by-name consists))
        ))))
 
-(define (engraver-grobs  grav)
-  (let* (
-        (eg (if (string? grav)
+(define (engraver-grobs grav)
+  (let* ((eg (if (symbol? grav)
                 (find-engraver-by-name grav)
-                grav))
-            
-            )
-
+                grav)))
     (if (eq? eg #f)
        '()
-       (map symbol->string (cdr (assoc 'grobs-created (ly:translator-description eg))))
-       )
+       (map symbol->string (cdr (assoc 'grobs-created (ly:translator-description eg)))))
   ))
 
 (define (context-grobs context-desc)
   (let* (
+        (group (assq-ref context-desc 'group-type))
         (consists (append
-                   (list (cdr (assoc 'group-type context-desc)))
+                   (if group
+                       (list group)
+                       '())
                    (cdr (assoc 'consists context-desc))
-                   (cdr (assoc 'end-consists  context-desc))
                    ))
         (grobs  (apply append
                  (map engraver-grobs consists))
-        )
-        )
+        ))
     grobs
     ))
 
-(define (symbol<? l r)
-  (string<? (symbol->string l) (symbol->string r)))
+
 
 (define (all-contexts-doc)
   (let* (
 (define all-engravers-list  (ly:get-all-translators))
 (set! all-engravers-list
       (sort all-engravers-list
-           (lambda (a b) (string<? (ly:translator-name a)
-                                   (ly:translator-name b)))))
+           (lambda (a b) (string<? (symbol->string (ly:translator-name a))
+                                   (symbol->string (ly:translator-name b))))))
 
 (define (all-engravers-doc)
   (make <texi-node>
     #:children
     (map engraver-doc all-engravers-list)))
 
-(define (all-translation-properties-doc)
-  
+(define (translation-properties-doc-string lst)
   (let*
-      (
-       (ps (sort (map symbol->string all-translation-properties) string<?))
+      ((ps (sort (map symbol->string lst) string<?))
        (sortedsyms (map string->symbol ps))
        (propdescs
        (map
-        (lambda (x) (document-property x 'translation #f))
+        (lambda (x) (property->texi 'translation  x '()))
         sortedsyms))
-       (texi (description-list->texi propdescs))
-       )
-
-    (make <texi-node>
-      #:name "Translation properties"
-      #:desc "All translation properties"
-      #:text texi)
+       (texi (description-list->texi propdescs)))
+    texi
     ))
 
 
-;(dump-node (all-contexts-doc) (current-output-port) 0 )
-
 (define (translation-doc-node)
   (make <texi-node>
     #:name "Translation"
     (list
      (all-contexts-doc)
      (all-engravers-doc)
-     (all-translation-properties-doc)
-     )
-  ))
+     (make <texi-node>
+       #:name "Tunable context properties"
+       #:desc "All tunable context properties"
+       #:text (translation-properties-doc-string
+              all-user-translation-properties))
+
+     (make <texi-node>
+       #:name "Internal context properties"
+       #:desc "All internal context properties"
+       #:text (translation-properties-doc-string
+              all-internal-translation-properties))
+     ) ) )