X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocument-translation.scm;h=821eea401024a48282f162752df7f48861cb6021;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=de97c6377c9eeb1de8d707602354e8e4beb35e98;hpb=3ce32cf251bf7b05cc34363d797d3e1ad9ede48b;p=lilypond.git diff --git a/scm/document-translation.scm b/scm/document-translation.scm index de97c6377c..821eea4010 100644 --- a/scm/document-translation.scm +++ b/scm/document-translation.scm @@ -1,39 +1,31 @@ - -;;; engraver-doumentation-lib.scm -- Functions for engraver documentation -;;; -;;; source file of the GNU LilyPond music typesetter -;;; -;;; (c) 2000--2003 Han-Wen Nienhuys -;;; Jan Nieuwenhuizen - +;;;; document-translation.scm -- Functions for engraver documentation +;;;; +;;;; source file of the GNU LilyPond music typesetter +;;;; +;;;; (c) 2000--2008 Han-Wen Nienhuys +;;;; Jan Nieuwenhuizen (define (engraver-makes-grob? name-symbol grav) - (memq name-symbol (assoc 'grobs-created (ly:translator-description grav))) - ) + (memq name-symbol (assoc 'grobs-created (ly:translator-description grav)))) (define (engraver-accepts-music-type? name-symbol grav) - (memq name-symbol (assoc 'events-accepted (ly:translator-description grav))) - - ) + (memq name-symbol (assoc 'events-accepted (ly:translator-description grav)))) (define (engraver-accepts-music-types? types grav) (if (null? types) #f (or (engraver-accepts-music-type? (car types) grav) - (engraver-accepts-music-types? (cdr types) grav))) - ) + (engraver-accepts-music-types? (cdr types) grav)))) (define (engraver-doc-string engraver in-which-contexts) - (let* ( - (propsr (cdr (assoc 'properties-read (ly:translator-description engraver)))) + (let* ((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)) + (accepted (cdr (assoc 'events-accepted (ly:translator-description engraver)))) + (name-sym (ly:translator-name engraver)) + (name-str (symbol->string name-sym)) (desc (cdr (assoc 'description (ly:translator-description engraver)))) - (grobs (engraver-grobs engraver)) - ) + (grobs (engraver-grobs engraver))) (string-append desc @@ -45,68 +37,73 @@ (map (lambda (x) (string-append "@ref{" - (symbol->string x) - "}")) accepted) - )) - "") + (symbol->string x) + "}")) accepted))) + "") "\n\n" (if (pair? propsr) (string-append "Properties (read)" (description-list->texi - (map (lambda (x) (document-property x 'translation #f)) propsr))) + (map (lambda (x) (property->texi 'translation x '())) propsr) + #t)) "") - + (if (null? propsw) "" (string-append - "Properties (write)" + "Properties (write)" (description-list->texi - (map (lambda (x) (document-property x 'translation #f)) propsw)))) + (map (lambda (x) (property->texi 'translation x '())) propsw) + #t))) (if (null? grobs) "" (string-append - "This engraver creates the following grobs: \n " - (human-listify (map ref-ify (uniq-list (sort grobs stringstring contexts) + stringstring contexts))))) - "" - )))) - - - + "@code{" name-str "} " + (if (equal? context-list "none") + "is not part of any context" + (string-append + "is part of the following context(s): " + context-list)) + ".")) + "")))) ;; First level Engraver description (define (engraver-doc grav) (make - #:name (ly:translator-name grav) - #:text (engraver-doc-string grav #t) - )) + #:name (symbol->string (ly:translator-name grav)) + #:text (engraver-doc-string grav #t))) ;; Second level, part of Context description - (define name->engraver-table (make-vector 61 '())) (map (lambda (x) @@ -114,204 +111,175 @@ (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) - (let* - ( - (eg (find-engraver-by-name name )) - ) + "NAME is a symbol." - (cons name - (engraver-doc-string eg #f) - - ) - )) + (let* ((eg (find-engraver-by-name name))) + + (cons (string-append "@code{" (ref-ify (symbol->string name)) "}") + (engraver-doc-string eg #f)))) (define (document-property-operation op) - (let - ((tag (car op)) - (body (cdr op)) - (sym (cadr op)) - ) - - (cond - ((equal? tag 'push) - (string-append - "@item " - (if (null? (cddr body)) - "Revert " - "Set " - ) - "grob-property @code{" - (symbol->string (cadr body)) - "} in @ref{" (symbol->string sym) - "}" - (if (not (null? (cddr 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 @code{" - (symbol->string (car body)) - "} to @code{" - (scm->texi (cadr body)) - "}\n" - ) - ) - ) - )) + (let ((tag (car op)) + (context-sym (cadr op)) + (args (cddr op)) + ) + + (cond + ((equal? tag 'push) + (let* + ((value (car args)) + (path (cdr args))) + + (string-append + "@item Set " + (format "grob-property @code{~a} " + (string-join (map symbol->string path) " ")) + (format "in @ref{~a} to ~a." + context-sym (scm->texi value)) + "\n"))) + ((equal? (object-property context-sym 'is-grob?) #t) "") + ((equal? tag 'assign) + (format "@item Set translator property @code{~a} to ~a.\n" + context-sym + (scm->texi (car args)))) + ))) (define (context-doc context-desc) - (let* - ( - (name-sym (cdr (assoc 'type-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))) - (consists (append - (list (cdr (assoc 'group-type context-desc))) - (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)) ) + (let* ((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))) + (consists (cdr (assoc 'consists context-desc))) + (props (cdr (assoc 'property-ops context-desc))) + (grobs (context-grobs context-desc)) + (grob-refs (map (lambda (x) (ref-ify x)) grobs))) (make #:name name #:text - (string-append + (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 stringstring 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) - (find-engraver-by-name grav) - grav)) - - ) + name + " can contain\n" + (human-listify (map ref-ify (map symbol->string accepts))) + ".")) + + (if (null? consists) + "" + (string-append + "\n\nThis context is built from the following engraver(s):" + (description-list->texi + (map document-engraver-by-name consists) + #t))))))) +(define (engraver-grobs grav) + (let* ((eg (if (symbol? grav) + (find-engraver-by-name 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* ( + (let* ((group (assq-ref context-desc 'group-type)) (consists (append - (list (cdr (assoc 'group-type context-desc))) - (cdr (assoc 'consists context-desc)) - (cdr (assoc 'end-consists context-desc)) - )) + (if group + (list group) + '()) + (cdr (assoc 'consists context-desc)))) (grobs (apply append - (map engraver-grobs consists)) - ) - ) - grobs - )) - -(define (symbolstring l) (symbol->string r))) + (map engraver-grobs consists)))) + grobs)) (define (all-contexts-doc) - (let* ( - (paper-alist - (sort (My_lily_parser::paper_description) + (let* ((layout-alist + (sort (ly:output-description $defaultlayout) (lambda (x y) (symbolstring (map car paper-alist)) stringstring (map car layout-alist)) string #:name "Contexts" - #:desc "Complete descriptions of all contexts" + #:desc "Complete descriptions of all contexts." #:children - (map context-doc contexts) - ) - )) - + (map context-doc contexts)))) (define all-engravers-list (ly:get-all-translators)) (set! all-engravers-list (sort all-engravers-list - (lambda (a b) (stringstring (ly:translator-name a)) + (symbol->string (ly:translator-name b)))))) (define (all-engravers-doc) (make - #:name "Engravers" - #:desc "All separate engravers" + #:name "Engravers and Performers" + #:desc "All separate engravers and performers." + #:text "See @ruser{Modifying context plug-ins}." #:children (map engraver-doc all-engravers-list))) -(define (all-translation-properties-doc) - - (let* - ( - (ps (sort (map symbol->string all-translation-properties) stringsymbol ps)) - (propdescs - (map - (lambda (x) (document-property x 'translation #f)) - sortedsyms)) - (texi (description-list->texi propdescs)) - ) - - (make - #:name "Translation properties" - #:desc "All translation properties" - #:text texi) - )) - - -;(dump-node (all-contexts-doc) (current-output-port) 0 ) +(define (translation-properties-doc-string lst) + (let* ((ps (sort (map symbol->string lst) stringsymbol ps)) + (propdescs + (map + (lambda (x) (property->texi 'translation x '())) + sortedsyms)) + (texi (description-list->texi propdescs #f))) + texi)) (define (translation-doc-node) (make #:name "Translation" - #:desc "From music to layout" + #:desc "From music to layout." #:children (list (all-contexts-doc) (all-engravers-doc) - (all-translation-properties-doc) - ) - )) + (make + #:name "Tunable context properties" + #:desc "All tunable context properties." + #:text (translation-properties-doc-string + all-user-translation-properties)) + + (make + #:name "Internal context properties" + #:desc "All internal context properties." + #:text (translation-properties-doc-string + all-internal-translation-properties)))))