3
3
;;;; source file of the GNU LilyPond music typesetter
5
;;;; (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5
;;;; (c) 2000--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6
6
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
9
8
(define (engraver-makes-grob? name-symbol grav)
10
(memq name-symbol (assoc 'grobs-created (ly:translator-description grav)))
9
(memq name-symbol (assoc 'grobs-created (ly:translator-description grav))))
13
11
(define (engraver-accepts-music-type? name-symbol grav)
14
(memq name-symbol (assoc 'events-accepted (ly:translator-description grav)))
12
(memq name-symbol (assoc 'events-accepted (ly:translator-description grav))))
18
14
(define (engraver-accepts-music-types? types grav)
22
18
(engraver-accepts-music-type? (car types) grav)
23
(engraver-accepts-music-types? (cdr types) grav)))
19
(engraver-accepts-music-types? (cdr types) grav))))
26
21
(define (engraver-doc-string engraver in-which-contexts)
28
(propsr (cdr (assoc 'properties-read (ly:translator-description engraver))))
22
(let* ((propsr (cdr (assoc 'properties-read (ly:translator-description engraver))))
29
23
(propsw (cdr (assoc 'properties-written (ly:translator-description engraver))))
30
24
(accepted (cdr (assoc 'events-accepted (ly:translator-description engraver))))
31
25
(name-sym (ly:translator-name engraver))
32
26
(name-str (symbol->string name-sym))
33
27
(desc (cdr (assoc 'description (ly:translator-description engraver))))
34
(grobs (engraver-grobs engraver))
28
(grobs (engraver-grobs engraver)))
68
60
"This engraver creates the following layout objects: \n "
69
61
(human-listify (map ref-ify (uniq-list (sort grobs string<? ))))
75
66
(if in-which-contexts
77
((paper-alist (My_lily_parser::paper_description))
78
(context-description-alist (map cdr paper-alist))
84
((context (cdr (assoc 'context-name x)))
85
(group (assq-ref x 'group-type))
90
(cdr (assoc 'consists x))
95
(if (member name-sym consists)
98
context-description-alist))))
67
(let* ((layout-alist (ly:output-description $defaultlayout))
68
(context-description-alist (map cdr layout-alist))
73
(let* ((context (cdr (assoc 'context-name x)))
74
(group (assq-ref x 'group-type))
79
(cdr (assoc 'consists x)))))
80
(if (member name-sym consists)
83
context-description-alist))))
100
85
"@code{" name-str "} is part of contexts: "
101
86
(human-listify (map ref-ify
103
(map symbol->string contexts) string<?)))))
88
(map symbol->string contexts) string<?)))))
110
91
;; First level Engraver description
111
92
(define (engraver-doc grav)
113
94
#:name (symbol->string (ly:translator-name grav))
114
#:text (engraver-doc-string grav #t)
95
#:text (engraver-doc-string grav #t)))
117
97
;; Second level, part of Context description
119
98
(define name->engraver-table (make-vector 61 '()))
129
108
(define (document-engraver-by-name name)
130
109
"NAME is a symbol."
133
(eg (find-engraver-by-name name ))
111
(let* ((eg (find-engraver-by-name name)))
136
113
(cons (string-append "@code{" (ref-ify (symbol->string name)) "}")
137
(engraver-doc-string eg #f)
114
(engraver-doc-string eg #f))))
141
116
(define (document-property-operation op)
152
(if (null? (cddr body))
156
"grob-property @code{"
157
(symbol->string (cadr body))
158
"} in @ref{" (symbol->string sym)
160
(if (not (null? (cddr body)))
161
(string-append " to @code{" (scm->texi (cadr (cdr body))) "}" )
167
((equal? (object-property sym 'is-grob?) #t) "")
168
((equal? (car op) 'assign)
170
"@item Set translator property @code{"
171
(symbol->string (car body))
173
(scm->texi (cadr body))
118
(context-sym (cadr op))
130
(format "grob-property @code{~a} " (string-join (map symbol->string path) " "))
131
(format " in @ref{~a} to @code{~a}. " context-sym (scm->texi value))
133
((equal? (object-property context-sym 'is-grob?) #t) "")
134
((equal? tag 'assign)
135
(format "@item Set translator property @code{~a} to @code{~a}"
137
(scm->texi (car args))))
181
141
(define (context-doc context-desc)
184
(name-sym (cdr (assoc 'context-name context-desc)))
185
(name (symbol->string name-sym))
186
(aliases (map symbol->string (cdr (assoc 'aliases context-desc))))
187
(desc-handle (assoc 'description context-desc))
188
(desc (if (and (pair? desc-handle) (string? (cdr desc-handle)))
189
(cdr desc-handle) "(not documented)"))
191
(accepts (cdr (assoc 'accepts context-desc)))
192
(group (assq-ref context-desc 'group-type))
195
(if group (list group)
197
(cdr (assoc 'consists context-desc))
199
(props (cdr (assoc 'property-ops context-desc)))
200
(grobs (context-grobs context-desc))
201
(grob-refs (map (lambda (x) (ref-ify x)) grobs)) )
142
(let* ((name-sym (cdr (assoc 'context-name context-desc)))
143
(name (symbol->string name-sym))
144
(aliases (map symbol->string (cdr (assoc 'aliases context-desc))))
145
(desc-handle (assoc 'description context-desc))
146
(desc (if (and (pair? desc-handle) (string? (cdr desc-handle)))
147
(cdr desc-handle) "(not documented)"))
149
(accepts (cdr (assoc 'accepts context-desc)))
150
(consists (cdr (assoc 'consists context-desc)))
151
(props (cdr (assoc 'property-ops context-desc)))
152
(grobs (context-grobs context-desc))
153
(grob-refs (map (lambda (x) (ref-ify x)) grobs)))
203
155
(make <texi-node>
243
(map symbol->string (cdr (assoc 'grobs-created (ly:translator-description eg)))))
192
(map symbol->string (cdr (assoc 'grobs-created (ly:translator-description eg)))))))
246
194
(define (context-grobs context-desc)
248
(group (assq-ref context-desc 'group-type))
195
(let* ((group (assq-ref context-desc 'group-type))
249
196
(consists (append
253
(cdr (assoc 'consists context-desc))
200
(cdr (assoc 'consists context-desc))))
255
201
(grobs (apply append
256
(map engraver-grobs consists))
202
(map engraver-grobs consists))))
263
205
(define (all-contexts-doc)
266
(sort (My_lily_parser::paper_description)
207
(sort (ly:output-description $defaultlayout)
267
208
(lambda (x y) (symbol<? (car x) (car y)))))
268
(names (sort (map symbol->string (map car paper-alist)) string<?))
269
(contexts (map cdr paper-alist))
209
(names (sort (map symbol->string (map car layout-alist)) string<?))
210
(contexts (map cdr layout-alist)))
272
212
(make <texi-node>
273
213
#:name "Contexts"
274
214
#:desc "Complete descriptions of all contexts"
276
(map context-doc contexts)
216
(map context-doc contexts))))
281
218
(define all-engravers-list (ly:get-all-translators))
282
219
(set! all-engravers-list
288
225
(make <texi-node>
289
226
#:name "Engravers"
290
227
#:desc "All separate engravers"
228
#:text "See @usermanref{Modifying context plug-ins}."
292
230
(map engraver-doc all-engravers-list)))
294
232
(define (translation-properties-doc-string lst)
296
((ps (sort (map symbol->string lst) string<?))
297
(sortedsyms (map string->symbol ps))
300
(lambda (x) (property->texi 'translation x '()))
302
(texi (description-list->texi propdescs)))
233
(let* ((ps (sort (map symbol->string lst) string<?))
234
(sortedsyms (map string->symbol ps))
237
(lambda (x) (property->texi 'translation x '()))
239
(texi (description-list->texi propdescs)))
307
242
(define (translation-doc-node)
308
243
(make <texi-node>