-
-;;; 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)
(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))
)
(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))
+ ) ) )