1(define-module (mdoc utils markup)2 #:use-module (skribilo ast)3 #:use-module (skribilo writer)4 #:use-module (skribilo utils syntax)5 #:use-module (skribilo evaluator)67 #:use-module (mdoc utils output)89 #:export (make-block10 make-listing11 make-ornament12 make-macro13 make-parsed-macro))1415(skribilo-module-syntax)1617(define* (make-block markup start end #:optional opts)18 (markup-writer markup19 :options (or opts '())20 :before (lambda (n e)21 (apply output-macro e start))22 :after (lambda (n e)23 (apply output-macro e end))))2425(define (make-listing markup . list-opts)26 (make-block markup27 (cons* 'Bl list-opts)28 '(El)29 '(:symbol)))3031(define (make-ornament markup macro)32 (markup-writer markup33 :before (string-append "\n." (symbol->string macro) " ")34 :after "\n"))3536(define* (make-macro markup macro #:optional opts)37 (markup-writer markup38 :options (or opts '())39 :action (lambda (n e)40 (output-macro e macro (markup-body n)))))4142(define* (make-parsed-macro markup macro #:optional opts)43 (markup-writer markup44 :options (or opts '())45 :action (lambda (n e)46 (with-parsed-macro (e macro)47 (evaluate-document (markup-body n) e)))))