hyper-literate/collects/scribblings/scribble/utils.ss
Matthew Flatt a2bc335965 repairs to doc build
svn: r6251

original commit: 040031fd66918018989dddc1aa220c0e43011a04
2007-05-24 02:44:01 +00:00

45 lines
1.4 KiB
Scheme

(module utils mzscheme
(require (lib "struct.ss" "scribble")
(lib "manual.ss" "scribble")
(prefix scheme: (lib "scheme.ss" "scribble"))
(prefix scribble: (lib "reader.ss" "scribble"))
(lib "string.ss"))
(provide at
litchar/lines
scribble-examples)
(define at "@")
(define (litchar/lines s)
(let ([strs (regexp-split #rx"\n" s)])
(if (= 1 (length strs))
(litchar s)
(make-table
#f
(map (lambda (s)
(list (make-flow (list (make-paragraph (list (litchar s)))))))
strs)))))
(define (as-flow e)
(make-flow (list (if (flow-element? e)
e
(make-paragraph (list e))))))
(define spacer (hspace 2))
(define (scribble-examples . lines)
(make-table
#f
(map (lambda (line)
(let ([line (if (string? line)
(list (litchar/lines line)
(scheme:to-element (scribble:read (open-input-string line))))
line)])
(list (as-flow spacer)
(as-flow (if line (car line) ""))
(as-flow (if line (make-paragraph (list spacer "reads as" spacer)) ""))
(as-flow (if line (cadr line) "")))))
lines))))