skribilo-mdoc

Unnamed repository; edit this file 'description' to name the repository.

git clone https://git.8pit.net/skribilo-mdoc.git

 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)
 6
 7  #:use-module (mdoc utils output)
 8
 9  #:export (make-block
10            make-listing
11            make-ornament
12            make-macro
13            make-parsed-macro))
14
15(skribilo-module-syntax)
16
17(define* (make-block markup start end #:optional opts)
18  (markup-writer markup
19    :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))))
24
25(define (make-listing markup . list-opts)
26  (make-block markup
27              (cons* 'Bl list-opts)
28              '(El)
29              '(:symbol)))
30
31(define (make-ornament markup macro)
32  (markup-writer markup
33    :before (string-append "\n." (symbol->string macro) " ")
34    :after  "\n"))
35
36(define* (make-macro markup macro #:optional opts)
37  (markup-writer markup
38    :options (or opts '())
39    :action (lambda (n e)
40              (output-macro e macro (markup-body n)))))
41
42(define* (make-parsed-macro markup macro #:optional opts)
43  (markup-writer markup
44    :options (or opts '())
45    :action (lambda (n e)
46              (with-parsed-macro (e macro)
47                (evaluate-document (markup-body n) e)))))