bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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))