;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
-;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+;;;; Copyright (C) 2006--2015 Han-Wen Nienhuys <hanwen@lilypond.org>
;;;;
;;;; LilyPond is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
((name-sym (car music-func-pair))
(music-func (cdr music-func-pair))
(func (ly:music-function-extract music-func))
- (arg-names
- (map symbol->string
- (cddr (cadr (procedure-source func)))))
- (doc (procedure-documentation func))
+ (full-doc (procedure-documentation func))
+ (match-args (and full-doc (string-match "^\\([^)]*\\)\n" full-doc)))
+ (arg-names (if match-args
+ (with-input-from-string (match:string match-args) read)
+ (circular-list "arg")))
+ (doc (if match-args (match:suffix match-args) full-doc))
(sign (ly:music-function-signature music-func))
(type-names (map (lambda (pred)
(if (pair? pred)
~a
"
name-sym (car type-names)
- (if (equal? "" signature-str) "" " - ") signature-str
+ (if (string-null? signature-str) "" " - ") signature-str
name-sym
- (if doc
+ (if (and doc (not (string-null? doc)))
doc
(begin
(ly:warning "music function `~a' not documented." name-sym)
(define (document-object obj-pair)
- (cond
- ((ly:music-function? (cdr obj-pair))
- (document-music-function obj-pair))
- (else
- #f)))
+ (and (ly:music-function? (cdr obj-pair))
+ (document-music-function obj-pair)))
(define-public (identifiers-doc-string)
(format #f
@end table
"
(string-join
- (filter
- identity
- (map
- document-object
- (sort
- (ly:module->alist (current-module))
- identifier<?)))
- "")))
+ (filter-map
+ document-object
+ (sort
+ (ly:module->alist (current-module))
+ identifier<?)))
+ ""))