hyper-literate/scribble-lib/scribble/private/manual-utils.rkt
2015-02-10 12:21:27 -07:00

37 lines
1.2 KiB
Racket

#lang scheme/base
(require "../struct.rkt"
"../base.rkt"
(only-in "../core.rkt"
content?
style?)
racket/contract/base
scheme/list)
(provide doc-prefix)
(provide/contract
[spacer element?]
[to-flow (content? . -> . flow?)]
[flow-spacer flow?]
[flow-spacer/n (-> exact-nonnegative-integer? flow?)]
[flow-empty-line flow?]
[make-table-if-necessary ((or/c style? string?) list? . -> . (list/c (or/c omitable-paragraph? table?)))]
[current-display-width (parameter/c exact-nonnegative-integer?)])
(define spacer (hspace 1))
(define (to-flow e)
(make-flow (list (make-omitable-paragraph (list e)))))
(define flow-spacer (to-flow spacer))
(define (flow-spacer/n n) (to-flow (hspace n)))
(define flow-empty-line (to-flow (tt 'nbsp)))
(define (make-table-if-necessary style content)
(if (= 1 (length content))
(let ([paras (append-map flow-paragraphs (car content))])
(if (andmap paragraph? paras)
(list (make-omitable-paragraph (append-map paragraph-content paras)))
(list (make-table style content))))
(list (make-table style content))))
(define current-display-width (make-parameter 65))