manual-utils.rkt (1202B)
1 #lang scheme/base 2 (require "../struct.rkt" 3 "../base.rkt" 4 (only-in "../core.rkt" 5 content? 6 style?) 7 racket/contract/base 8 scheme/list) 9 10 (provide doc-prefix) 11 (provide/contract 12 [spacer element?] 13 [to-flow (content? . -> . flow?)] 14 [flow-spacer flow?] 15 [flow-spacer/n (-> exact-nonnegative-integer? flow?)] 16 [flow-empty-line flow?] 17 [make-table-if-necessary ((or/c style? string?) list? . -> . (list/c (or/c omitable-paragraph? table?)))] 18 [current-display-width (parameter/c exact-nonnegative-integer?)]) 19 20 (define spacer (hspace 1)) 21 22 (define (to-flow e) 23 (make-flow (list (make-omitable-paragraph (list e))))) 24 (define flow-spacer (to-flow spacer)) 25 (define (flow-spacer/n n) (to-flow (hspace n))) 26 (define flow-empty-line (to-flow (tt 'nbsp))) 27 28 (define (make-table-if-necessary style content) 29 (if (= 1 (length content)) 30 (let ([paras (append-map flow-paragraphs (car content))]) 31 (if (andmap paragraph? paras) 32 (list (make-omitable-paragraph (append-map paragraph-content paras))) 33 (list (make-table style content)))) 34 (list (make-table style content)))) 35 36 (define current-display-width (make-parameter 65))