;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
-;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
;;;;
;;;; LilyPond is free software: you can redistribute it and/or modify
prop-strings))
(define (doc-markup-function func)
- (let* ((doc-str (procedure-documentation func))
+ (let* ((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-str (if match-args (match:suffix match-args) full-doc))
(f-name (symbol->string (procedure-name func)))
(c-name (regexp-substitute/global #f "-markup(-list)?$" f-name 'pre "" 'post))
(sig (object-property func 'markup-signature))
- (arg-names (let ((arg-list (cadr (procedure-source func))))
- (if (list? arg-list)
- (map symbol->string (cddr arg-list))
- (make-list (length sig) "arg"))))
(sig-type-names (map type-name sig))
(signature-str
(string-join
- (map (lambda (x) (string-append
- "@var{" (car x) "} (" (cadr x) ")" ))
- (zip arg-names sig-type-names))
+ (map (lambda (x y)
+ (format #f "@var{~a} (~a)" x y))
+ arg-names sig-type-names)
" " )))
(string-append