(thin-kern . 3.0)
(hair-thickness . 1.6)
(thick-thickness . 6.0)
- (meta . ,(element-description "BarLine" bar-line-interface general-element-interface))
+ (meta . ,(element-description "BarLine" bar-line-interface ))
))
(BarNumber . (
(markup-to-properties . ,markup-to-properties)
(font-family . "roman")
(meta . ,(element-description "BarNumber"
- text-interface general-element-interface break-aligned-interface))
+ text-interface break-aligned-interface))
))
(Beam . ,basic-beam-properties)
(molecule-callback . ,Breathing_sign::brew_molecule)
(Y-offset-callbacks . (,Breathing_sign::offset_callback))
(visibility-lambda . ,begin-of-line-invisible)
- (meta . ,(element-description "BreathingSign" general-element-interface break-aligned-interface))
+ (meta . ,(element-description "BreathingSign" break-aligned-interface))
))
(Clef . (
(break-align-symbol . Clef_item)
(visibility-lambda . ,begin-of-line-visible)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
- (meta . ,(element-description "Clef" clef-interface break-aligned-interface general-element-interface))
+ (meta . ,(element-description "Clef" clef-interface break-aligned-interface ))
))
(ChordNames . (
(axes 0 1)
(note-width . 1.65)
(meta . ,(element-description "NoteCollision"
- general-element-interface note-collision-interface axis-group-interface
+ note-collision-interface axis-group-interface
))
))
(DotColumn . (
(axes 0 )
- (meta . ,(element-description "DotColumn" dot-column-interface general-element-interface axis-group-interface))
+ (meta . ,(element-description "DotColumn" dot-column-interface axis-group-interface))
))
(Dots . (
(dot-count . 1)
(staff-position . 0.0)
(Y-offset-callbacks . (,Dots::quantised_position_callback ,Staff_symbol_referencer::callback))
- (meta . ,(element-description "Dots" dot-interface general-element-interface))
+ (meta . ,(element-description "Dots" dot-interface ))
))
(DynamicText . (
(markup-to-properties . ,markup-to-properties)
(self-alignment-Y . 0)
- (meta . ,(element-description "DynamicText" text-interface general-element-interface))
+ (meta . ,(element-description "DynamicText" text-interface ))
))
(DynamicLineSpanner . (
(minimum-length . 0.5)
(molecule-callback . ,Hyphen_spanner::brew_molecule)
(Y-extent-callback . ,Score_element::point_dimension_callback)
- (meta . ,(element-description "LyricHyphen" lyric-hyphen-interface general-element-interface))
+ (meta . ,(element-description "LyricHyphen" lyric-hyphen-interface ))
))
(InstrumentName . (
(style-to-font-name . ,style-to-font-name)
(markup-to-properties . ,markup-to-properties)
(font-family . "roman")
- (meta . ,(element-description "InstrumentName" general-element-interface text-interface break-aligned-interface))
+ (meta . ,(element-description "InstrumentName" text-interface break-aligned-interface))
))
(KeySignature . (
(break-align-symbol . Key_item)
(visibility-lambda . ,begin-of-line-visible)
(breakable . #t)
- (meta . ,(element-description "KeySignature" key-signature-interface general-element-interface break-aligned-interface))
+ (meta . ,(element-description "KeySignature" key-signature-interface break-aligned-interface))
))
(Accidentals . (
(direction . -1)
(left-padding . 0.2)
(right-padding . 0.4)
- (meta . ,(element-description "Accidentals" general-element-interface accidentals-interface))
+ (meta . ,(element-description "Accidentals" accidentals-interface))
))
(LineOfScore . (
(axes . (0 1))
- (meta . ,(element-description "LineOfScore" general-element-interface axis-group-interface))
+ (meta . ,(element-description "LineOfScore" axis-group-interface))
))
(LyricExtender . (
(height . 0.8) ; stafflinethickness;
(right-trim-amount . 0.5)
(Y-extent-callback . ,Score_element::point_dimension_callback)
- (meta . ,(element-description "LyricExtender" general-element-interface lyric-extender-interface))
+ (meta . ,(element-description "LyricExtender" lyric-extender-interface))
))
(LyricText . (
(font-style . mark)
(visibility-lambda . ,end-of-line-invisible)
(padding . 4.0)
- (meta . ,(element-description "RehearsalMark" general-element-interface mark-interface side-position-interface))
+ (meta . ,(element-description "RehearsalMark" mark-interface side-position-interface))
))
(MultiMeasureRest . (
(expand-limit . 10)
(padding . 2.0) ; staffspace
(minimum-width . 12.5) ; staffspace
- (properties-to-font-name . ,properties-to-font-name)
- (style-to-font-name . ,style-to-font-name)
- (markup-to-properties . ,markup-to-properties)
- (font-family . "number")
- (meta . ,(element-description "MultiMeasureRest" multi-measure-rest-interface general-element-interface))
+ (properties-to-font-name . ,properties-to-font-name)
+ (style-to-font-name . ,style-to-font-name)
+ (markup-to-properties . ,markup-to-properties)
+ (font-family . "number")
+ (meta . ,(element-description "MultiMeasureRest" multi-measure-rest-interface ))
))
(NoteColumn . (
(axes . (0 1))
- (meta . ,(element-description "NoteColumn" general-element-interface axis-group-interface note-column-interface))
+ (meta . ,(element-description "NoteColumn" axis-group-interface note-column-interface))
))
(NoteHead . (
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(meta . ,(element-description "NoteHead"
rhythmic-head-interface
- note-head-interface general-element-interface))
+ note-head-interface ))
))
(NoteName . (
(style-to-font-name . ,style-to-font-name)
(markup-to-properties . ,markup-to-properties)
- (meta . ,(element-description "OctavateEight" text-interface general-element-interface))
+ (meta . ,(element-description "OctavateEight" text-interface ))
))
(PaperColumn . (
(minimum-beam-collision-distance . 1.5)
(meta . ,(element-description "Rest"
rhythmic-head-interface
- rest-interface general-element-interface))
+ rest-interface ))
))
(RestCollision . (
(minimum-distance . 0.75)
- (meta . ,(element-description "RestCollision" rest-collision-interface general-element-interface))
+ (meta . ,(element-description "RestCollision" rest-collision-interface ))
))
(Script . (
;; assume that notes at least this long are present.
(maximum-duration-for-spacing . ,(make-moment 1 8))
- (meta . ,(element-description "SpacingSpanner" general-element-interface spacing-spanner-interface))
+ (meta . ,(element-description "SpacingSpanner" spacing-spanner-interface))
))
(SpanBar . (
(thin-kern . 3.0)
(hair-thickness . 1.6)
(thick-thickness . 6.0)
- (meta . ,(element-description "SpanBar" span-bar-interface bar-line-interface general-element-interface))
+ (meta . ,(element-description "SpanBar" span-bar-interface bar-line-interface ))
))
(StanzaNumber . (
(molecule-callback . ,Staff_symbol::brew_molecule)
(staff-space . 1.0)
(line-count . 5 )
- (meta . ,(element-description "StaffSymbol" staff-symbol-interface general-element-interface))
+ (meta . ,(element-description "StaffSymbol" staff-symbol-interface ))
))
(SostenutoPedal . (
(molecule-callback . ,Text_item::brew_molecule)
(markup-to-properties . ,markup-to-properties)
(self-alignment-X . 0)
- (meta . ,(element-description "SostenutoPedal" text-interface general-element-interface))
+ (meta . ,(element-description "SostenutoPedal" text-interface ))
))
(Stem . (
; if stem is on middle line, choose this direction.
(default-neutral-direction . 1)
(X-offset-callbacks . (,Stem::off_callback))
- (meta . ,(element-description "Stem" stem-interface general-element-interface))
+ (meta . ,(element-description "Stem" stem-interface ))
))
(StemTremolo . (
(beam-width . 2.0) ; staff-space
(beam-thickness . 0.42) ; staff-space
(beam-space-function . ,default-beam-space-function)
- (meta . ,(element-description "StemTremolo" stem-tremolo-interface general-element-interface))
+ (meta . ,(element-description "StemTremolo" stem-tremolo-interface ))
))
(SeparationItem . (
- (meta . ,(element-description "SeparationItem" separation-item-interface general-element-interface))
+ (meta . ,(element-description "SeparationItem" separation-item-interface ))
))
(SeparatingGroupSpanner . (
(spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
(arch-width . 1.5)
(bracket-thick . 0.25)
(bracket-width . 2.0)
- (meta . ,(element-description "SystemStartDelimiter" system-start-delimiter general-element-interface))
+ (meta . ,(element-description "SystemStartDelimiter" system-start-delimiter ))
))
(TextScript . (
(molecule-callback . ,Text_item::brew_molecule)
(no-spacing-rods . #t)
(padding . 0.5)
- (properties-to-font-name . ,properties-to-font-name)
- (style-to-font-name . ,style-to-font-name)
- (markup-to-properties . ,markup-to-properties)
- (font-family . "roman")
- (meta . ,(element-description "TextScript" text-script-interface text-interface side-position-interface general-element-interface))
+ (properties-to-font-name . ,properties-to-font-name)
+ (style-to-font-name . ,style-to-font-name)
+ (markup-to-properties . ,markup-to-properties)
+ (font-family . "roman")
+ (meta . ,(element-description "TextScript" text-script-interface text-interface side-position-interface ))
))
(TextSpanner . (
(molecule-callback . ,Text_spanner::brew_molecule)
(markup-to-properties . ,markup-to-properties)
(type . "line")
(direction . 1)
- (meta . ,(element-description "TextSpanner" text-spanner-interface general-element-interface))
+ (meta . ,(element-description "TextSpanner" text-spanner-interface ))
))
(Tie . (
(molecule-callback . ,Tie::brew_molecule)
(thickness . 1.2)
(x-gap . 0.2)
(minimum-length . 2.5)
- (meta . ,(element-description "Tie" tie-interface general-element-interface))
+ (meta . ,(element-description "Tie" tie-interface ))
))
(TieColumn . (
(after-line-breaking-callback . ,Tie_column::after_line_breaking)
- (meta . ,(element-description "TieColumn" tie-column-interface general-element-interface))
+ (meta . ,(element-description "TieColumn" tie-column-interface ))
))
(TimeSignature . (
(markup-to-properties . ,markup-to-properties)
(font-style . timesig)
- (meta . ,(element-description "TimeSignature" time-signature-interface general-element-interface))
+ (meta . ,(element-description "TimeSignature" time-signature-interface ))
))
(TupletBracket . (
(markup-to-properties . ,markup-to-properties)
(font-shape . "italic")
(meta . ,(element-description "TupletBracket"
- general-element-interface tuplet-bracket-interface))
+ tuplet-bracket-interface))
))
(UnaChordaPdeal . (
(Y-offset-callbacks .
(,Side_position::aligned_side
,Side_position::centered_on_parent))
- (meta . ,(element-description "UnaChordaPedal" text-interface general-element-interface))
+ (meta . ,(element-description "UnaChordaPedal" text-interface ))
))
(VoltaBracket . (
+;;;;
+;
+; This file generates documentation for the backend of lilypond.
+;
+;;;;
+
(define (uniqued-alist alist acc)
(if (null? alist) acc
(uniqued-alist (cdr alist) (cons (car alist) acc)
))))
-
;;; TODO
(define (wordwrap string)
""
)
-
(define (self-evaluating? x)
- (or (number? x) (string? x))
+ (or (number? x) (string? x) (procedure? x))
)
-
+
(define (type-name predicate)
(cond
((eq? predicate dir?) "direction")
((eq? predicate list?) "list")
((eq? predicate symbol?) "symbol")
((eq? predicate string?) "string")
- ((eq? predicate boolean?) "string")
+ ((eq? predicate boolean?) "string")
((eq? predicate number?) "number")
+ ((eq? predicate char?) "char")
+ ((eq? predicate input-port?) "input port")
+ ((eq? predicate output-port?) "output port")
+ ((eq? predicate vector?) "vector")
((eq? predicate procedure?) "procedure")
(else "(unknown)")
))
+(define (htmlfy x)
+ (let*
+ ((x1 (regexp-substitute/global #f ">" x 'pre ">" 'post))
+ (x2 (regexp-substitute/global #f "<" x1 'pre "<" 'post))
+ )
+ x2))
+
(define (scm->string val)
(string-append
(if (self-evaluating? val) "" "'")
- (call-with-output-string (lambda (port) (display val port)))
+ (htmlfy
+ (call-with-output-string (lambda (port) (display val port))))
))
(define (document-property prop desc)
(let ((handle (assoc (car prop) desc)))
(string-append
- "\n" (symbol->string (car prop)) " (" (type-name (cadr prop)) ") -- "
+ "\n<li><code>" (symbol->string (car prop)) "</code> (" (type-name (cadr prop)) ") -- "
(caddr prop)
- "\ndefault value: "
+ "<br>default value: <code>"
(if (pair? handle)
(scm->string (cdr handle))
"not set"
)
- "\n"
+ "</code>\n"
)
))
-;;
-;; todo: setup ifaces differently.
-;;
+(define (document-interface interface elt-description)
+ (let* ((name (car interface))
+ (desc (cadr interface))
+ (props (caddr interface))
+ (docs (map (lambda (x) (document-property x elt-description))
+ props))
+ )
+
+ (string-append
+ "<hr>"
+ "<h2>Interface: " (symbol->string name) "</h2>\n"
+ desc
+ "<hr>\n<ul>"
+ (apply string-append docs)
+ "</ul>"
+ )
+ ))
+
+;
+; generate HTML, return filename.
+;
(define (document-element description)
(let* ((metah (assoc 'meta description))
(meta (if (pair? metah)
))
(name (cdr (assoc 'name meta)))
-; (iface-descs (cdr (assoc 'interface-descriptions meta)))
- (propdesc (cdr (assoc 'properties meta)))
- (docs (map (lambda (x) (document-property x description))
- (uniqued-alist propdesc '())))
+ (ifaces (cdr (assoc 'interface-descriptions meta)))
+ (ifacedoc (map (lambda (x) (document-interface x description))
+ ifaces))
+ (outname (string-append name ".html"))
+ (out (open-output-file outname))
)
-
- (string-append
- "\n-------------------------\n"
- name "\n"
- "-------------------------\n"
- "INTERFACES\n"
- "(todo)\n"
- ; (apply string-append iface-descs)
- "-------------------------\n"
- "PROPERTIES:\n"
- (apply string-append docs)
+ (display (string-append "Writing " outname " ... \n") (current-error-port))
+ (display
+ (string-append "<title>LilyPond Element " name " </title>"
+ "<h1>" name "</h1>"
+ (apply string-append ifacedoc))
+ out)
+ outname
)
- ))
-
+ )
(define (document-elements elts)
- (string-append
- (map (lambda (x) (display (car x)) (document-element (cdr x)))
- elts
+ (let* ((files (map (lambda (x) (document-element (cdr x)))
+ elts))
+ (outname (string-append "backend.html"))
+ (out (open-output-file outname))
+ (l (map (lambda (x) (string-append
+ "<li><a href=" x ">" x "</a>\n"))
+ files))
)
- ))
-
-(define (test-module )
- (display
- (list
- (scm->string '(1 2 abc))
- (scm->string +)
- (type-name number?)
- (uniqued-alist '((a . 1 ) (a . 1)) '() )
- )))
+ (display
+ (string-append
+ "<title>LilyPond backend documentation</title>"
+ "<h1>LilyPond backend documentation</h1>"
+ "<ul>"
+ (apply string-append l)
+ "</ul>"
+ )
+ out
+ )
+ ))
+; (display (document-interface stem-interface '()))
; (define b (cdr (assoc 'Beam all-element-descriptions)))
;(display b)
-; (display (document-element b))
+;(document-element b)
-(display (document-elements all-element-descriptions))
+(document-elements all-element-descriptions)