16 lines
496 B
Scheme
16 lines
496 B
Scheme
(define (rule text #!key (width 80) (style 'simple))
|
|
(define rule-len (- width (+ 2 (string-length (remove-markup text)))))
|
|
(define left-len (sub1 (quotient rule-len 2)))
|
|
(define right-len (sub1 (+ (remainder rule-len 2) (quotient rule-len 2))))
|
|
(define c (cond
|
|
((eq? style 'simple) #\━)
|
|
((eq? style 'double) #\═)
|
|
((eq? style 'dashed) #\╌)))
|
|
(string-join
|
|
(list (make-string left-len c)
|
|
" "
|
|
(parse-markup text)
|
|
" "
|
|
(make-string right-len c)
|
|
"\n")))
|
|
|