From 1a5f41fd712384b409c760d15961af7b83e000ff Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 14 Feb 2011 07:12:14 -0700 Subject: [PATCH] Scribble: fix multi-line print output Closes PR 11735 --- collects/scribble/eval.rkt | 2 +- collects/tests/scribble/docs.rkt | 35 +++++++++++++++++++ .../tests/scribble/docs/print-lines.scrbl | 21 +++++++++++ collects/tests/scribble/docs/print-lines.txt | 18 ++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 collects/tests/scribble/docs.rkt create mode 100644 collects/tests/scribble/docs/print-lines.scrbl create mode 100644 collects/tests/scribble/docs/print-lines.txt diff --git a/collects/scribble/eval.rkt b/collects/scribble/eval.rkt index 4d6da7a29d..de9e834db3 100644 --- a/collects/scribble/eval.rkt +++ b/collects/scribble/eval.rkt @@ -113,7 +113,7 @@ #f (map (lambda (l) (list (make-flow (list l)))) - flow-accum))))))))] + (reverse flow-accum)))))))))] [(equal? #\newline v) (loop #f #f (add-line (add-string string-accum line-accum) flow-accum))] diff --git a/collects/tests/scribble/docs.rkt b/collects/tests/scribble/docs.rkt new file mode 100644 index 0000000000..86ca59b5ba --- /dev/null +++ b/collects/tests/scribble/docs.rkt @@ -0,0 +1,35 @@ +#lang racket/base + +;; Use text renderer to check some Scribble functionality + +;; ---------------------------------------- + +(require scribble/base-render + racket/file + racket/class + (prefix-in text: scribble/text-render)) + +(define (build-text-doc src-file dest-file) + (define dir (find-system-path 'temp-dir)) + (let ([renderer (new (text:render-mixin render%) + [dest-dir dir])]) + (let* ([docs (list (dynamic-require `(file ,src-file) 'doc))] + [fns (list (build-path dir dest-file))] + [fp (send renderer traverse docs fns)] + [info (send renderer collect docs fns fp)]) + (let ([r-info (send renderer resolve docs fns info)]) + (send renderer render docs fns r-info))))) + +(define (check-text-build name) + (define src-file (string-append "docs/" name ".scrbl")) + (define expect-file (string-append "docs/" name ".txt")) + (build-text-doc src-file "gen.txt") + (unless (string=? (file->string expect-file) + (file->string (build-path (find-system-path 'temp-dir) + "gen.txt"))) + (error 'check-text-build "mismatch from: ~e expected: ~e" + src-file expect-file))) + +;; ---------------------------------------- + +(check-text-build "print-lines") diff --git a/collects/tests/scribble/docs/print-lines.scrbl b/collects/tests/scribble/docs/print-lines.scrbl new file mode 100644 index 0000000000..20f4fc997d --- /dev/null +++ b/collects/tests/scribble/docs/print-lines.scrbl @@ -0,0 +1,21 @@ +#lang scribble/manual + +@(require scribble/eval) + +@title{Pretty-Print-Handler Bug Example} + +@(define the-eval (make-base-eval)) +@(interaction-eval + #:eval the-eval + (begin + (require racket/pretty) + (current-print pretty-print-handler))) + +@examples[#:eval the-eval +'((x "positional 1") + (rest ("positional 2" "positional 3")) + (a ()) + (b ("b-arg")) + (c (("first c1" "second c1") ("first c2" "second c2"))) + (d #f) + (e ()))] diff --git a/collects/tests/scribble/docs/print-lines.txt b/collects/tests/scribble/docs/print-lines.txt new file mode 100644 index 0000000000..707a419e8d --- /dev/null +++ b/collects/tests/scribble/docs/print-lines.txt @@ -0,0 +1,18 @@ + +Pretty-Print-Handler Bug Example + +Example: + > '((x "positional 1") + (rest ("positional 2" "positional 3")) + (a ()) + (b ("b-arg")) + (c (("first c1" "second c1") ("first c2" "second c2"))) + (d #f) + (e ())) + '((x "positional 1") + (rest ("positional 2" "positional 3")) + (a ()) + (b ("b-arg")) + (c (("first c1" "second c1") ("first c2" "second c2"))) + (d #f) + (e ())) \ No newline at end of file