reformat pretty.rkt a bit
#lang instead of module, spaces instead of tabs, other whitespace and indentation
This commit is contained in:
parent
1478f64c14
commit
1af7ec7088
|
@ -9,12 +9,12 @@
|
||||||
;; require this module and evaluate:
|
;; require this module and evaluate:
|
||||||
;; (current-print pretty-print-handler)
|
;; (current-print pretty-print-handler)
|
||||||
|
|
||||||
(module pretty racket/base
|
#lang racket/base
|
||||||
(require racket/private/port
|
(require racket/private/port
|
||||||
racket/flonum
|
racket/flonum
|
||||||
racket/fixnum)
|
racket/fixnum)
|
||||||
|
|
||||||
(provide pretty-print
|
(provide pretty-print
|
||||||
pretty-write
|
pretty-write
|
||||||
pretty-display
|
pretty-display
|
||||||
pretty-print-columns
|
pretty-print-columns
|
||||||
|
@ -42,9 +42,9 @@
|
||||||
tentative-pretty-print-port-transfer
|
tentative-pretty-print-port-transfer
|
||||||
tentative-pretty-print-port-cancel)
|
tentative-pretty-print-port-cancel)
|
||||||
|
|
||||||
(define-struct pretty-print-style-table (hash))
|
(define-struct pretty-print-style-table (hash))
|
||||||
|
|
||||||
(define pretty-print-extend-style-table
|
(define pretty-print-extend-style-table
|
||||||
(lambda (table symbols like-symbols)
|
(lambda (table symbols like-symbols)
|
||||||
(let ([terr (lambda (kind which)
|
(let ([terr (lambda (kind which)
|
||||||
(raise-argument-error
|
(raise-argument-error
|
||||||
|
@ -83,9 +83,9 @@
|
||||||
symbols like-symbols)
|
symbols like-symbols)
|
||||||
(make-pretty-print-style-table new-ht))))
|
(make-pretty-print-style-table new-ht))))
|
||||||
|
|
||||||
(define pretty-print-abbreviate-read-macros (make-parameter #t))
|
(define pretty-print-abbreviate-read-macros (make-parameter #t))
|
||||||
|
|
||||||
(define pretty-print-current-style-table
|
(define pretty-print-current-style-table
|
||||||
(make-parameter
|
(make-parameter
|
||||||
(pretty-print-extend-style-table #f null null)
|
(pretty-print-extend-style-table #f null null)
|
||||||
(lambda (s)
|
(lambda (s)
|
||||||
|
@ -96,18 +96,18 @@
|
||||||
s))
|
s))
|
||||||
s)))
|
s)))
|
||||||
|
|
||||||
(define pretty-print-.-symbol-without-bars
|
(define pretty-print-.-symbol-without-bars
|
||||||
(make-parameter #f (lambda (x) (and x #t))))
|
(make-parameter #f (lambda (x) (and x #t))))
|
||||||
|
|
||||||
(define pretty-print-show-inexactness
|
(define pretty-print-show-inexactness
|
||||||
(make-parameter #f
|
(make-parameter #f
|
||||||
(lambda (x) (and x #t))))
|
(lambda (x) (and x #t))))
|
||||||
|
|
||||||
(define pretty-print-exact-as-decimal
|
(define pretty-print-exact-as-decimal
|
||||||
(make-parameter #f
|
(make-parameter #f
|
||||||
(lambda (x) (and x #t))))
|
(lambda (x) (and x #t))))
|
||||||
|
|
||||||
(define pretty-print-columns
|
(define pretty-print-columns
|
||||||
(make-parameter 79
|
(make-parameter 79
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(unless (or (eq? x 'infinity)
|
(unless (or (eq? x 'infinity)
|
||||||
|
@ -118,7 +118,7 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define pretty-print-depth
|
(define pretty-print-depth
|
||||||
(make-parameter #f
|
(make-parameter #f
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(unless (or (not x) (number? x))
|
(unless (or (not x) (number? x))
|
||||||
|
@ -128,11 +128,11 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define can-accept-n?
|
(define can-accept-n?
|
||||||
(lambda (n x)
|
(lambda (n x)
|
||||||
(procedure-arity-includes? x n)))
|
(procedure-arity-includes? x n)))
|
||||||
|
|
||||||
(define pretty-print-size-hook
|
(define pretty-print-size-hook
|
||||||
(make-parameter (lambda (x display? port) #f)
|
(make-parameter (lambda (x display? port) #f)
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(unless (can-accept-n? 3 x)
|
(unless (can-accept-n? 3 x)
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define pretty-print-print-hook
|
(define pretty-print-print-hook
|
||||||
(make-parameter void
|
(make-parameter void
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(unless (can-accept-n? 3 x)
|
(unless (can-accept-n? 3 x)
|
||||||
|
@ -152,7 +152,7 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define pretty-print-print-line
|
(define pretty-print-print-line
|
||||||
(make-parameter (lambda (line port offset width)
|
(make-parameter (lambda (line port offset width)
|
||||||
(when (and (number? width)
|
(when (and (number? width)
|
||||||
(not (eq? 0 line)))
|
(not (eq? 0 line)))
|
||||||
|
@ -166,7 +166,7 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define pretty-print-pre-print-hook
|
(define pretty-print-pre-print-hook
|
||||||
(make-parameter void
|
(make-parameter void
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(unless (can-accept-n? 2 x)
|
(unless (can-accept-n? 2 x)
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define pretty-print-post-print-hook
|
(define pretty-print-post-print-hook
|
||||||
(make-parameter void
|
(make-parameter void
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(unless (can-accept-n? 2 x)
|
(unless (can-accept-n? 2 x)
|
||||||
|
@ -186,10 +186,10 @@
|
||||||
x))
|
x))
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
(define pretty-printing
|
(define pretty-printing
|
||||||
(make-parameter #f (lambda (x) (and x #t))))
|
(make-parameter #f (lambda (x) (and x #t))))
|
||||||
|
|
||||||
(define pretty-print-remap-stylable
|
(define pretty-print-remap-stylable
|
||||||
(make-parameter (λ (x) #f)
|
(make-parameter (λ (x) #f)
|
||||||
(λ (f)
|
(λ (f)
|
||||||
(unless (can-accept-n? 1 f)
|
(unless (can-accept-n? 1 f)
|
||||||
|
@ -206,7 +206,7 @@
|
||||||
res))
|
res))
|
||||||
res)))))
|
res)))))
|
||||||
|
|
||||||
(define make-pretty-print
|
(define make-pretty-print
|
||||||
(lambda (name display? as-qq?)
|
(lambda (name display? as-qq?)
|
||||||
(letrec ([pretty-print
|
(letrec ([pretty-print
|
||||||
(case-lambda
|
(case-lambda
|
||||||
|
@ -239,20 +239,20 @@
|
||||||
[(obj) (pretty-print obj (current-output-port))])])
|
[(obj) (pretty-print obj (current-output-port))])])
|
||||||
pretty-print)))
|
pretty-print)))
|
||||||
|
|
||||||
(define pretty-print (make-pretty-print 'pretty-print #f #t))
|
(define pretty-print (make-pretty-print 'pretty-print #f #t))
|
||||||
(define pretty-display (let ([pp (make-pretty-print 'pretty-display #t #f)])
|
(define pretty-display (let ([pp (make-pretty-print 'pretty-display #t #f)])
|
||||||
(case-lambda
|
(case-lambda
|
||||||
[(v) (pp v)]
|
[(v) (pp v)]
|
||||||
[(v o) (pp v o)])))
|
[(v o) (pp v o)])))
|
||||||
(define pretty-write (let ([pp (make-pretty-print 'pretty-write #f #f)])
|
(define pretty-write (let ([pp (make-pretty-print 'pretty-write #f #f)])
|
||||||
(case-lambda
|
(case-lambda
|
||||||
[(v) (pp v)]
|
[(v) (pp v)]
|
||||||
[(v o) (pp v o)])))
|
[(v o) (pp v o)])))
|
||||||
|
|
||||||
(define-struct mark (str def) #:mutable)
|
(define-struct mark (str def) #:mutable)
|
||||||
(define-struct hide (val))
|
(define-struct hide (val))
|
||||||
|
|
||||||
(define (make-tentative-output-port pport width esc)
|
(define (make-tentative-output-port pport width esc)
|
||||||
(let* ([content null]
|
(let* ([content null]
|
||||||
[special-ok? (port-writes-special? pport)]
|
[special-ok? (port-writes-special? pport)]
|
||||||
;; The null device counts for us:
|
;; The null device counts for us:
|
||||||
|
@ -309,14 +309,14 @@
|
||||||
0)
|
0)
|
||||||
esc))))
|
esc))))
|
||||||
|
|
||||||
(define (make-tentative-pretty-print-output-port pport width esc)
|
(define (make-tentative-pretty-print-output-port pport width esc)
|
||||||
(let ([p (make-tentative-output-port pport width esc)])
|
(let ([p (make-tentative-output-port pport width esc)])
|
||||||
(port-write-handler p (port-write-handler pport))
|
(port-write-handler p (port-write-handler pport))
|
||||||
(port-display-handler p (port-display-handler pport))
|
(port-display-handler p (port-display-handler pport))
|
||||||
(port-print-handler p (port-print-handler pport))
|
(port-print-handler p (port-print-handler pport))
|
||||||
p))
|
p))
|
||||||
|
|
||||||
(define (make-printing-port port pre-print post-print output-hooked print-line)
|
(define (make-printing-port port pre-print post-print output-hooked print-line)
|
||||||
(let-values ([(line col pos) (port-next-location port)])
|
(let-values ([(line col pos) (port-next-location port)])
|
||||||
(let* ([orig-counts? (and line col pos)]
|
(let* ([orig-counts? (and line col pos)]
|
||||||
[p (if orig-counts?
|
[p (if orig-counts?
|
||||||
|
@ -339,10 +339,10 @@
|
||||||
(print-line (and use-line? line) p offset width))
|
(print-line (and use-line? line) p offset width))
|
||||||
void)))))
|
void)))))
|
||||||
|
|
||||||
(struct printing-port (port info)
|
(struct printing-port (port info)
|
||||||
#:property prop:output-port 0)
|
#:property prop:output-port 0)
|
||||||
|
|
||||||
(define-struct print-port-info (get-content
|
(define-struct print-port-info (get-content
|
||||||
def-box
|
def-box
|
||||||
pre-print
|
pre-print
|
||||||
post-print
|
post-print
|
||||||
|
@ -350,36 +350,36 @@
|
||||||
print-line
|
print-line
|
||||||
esc))
|
esc))
|
||||||
|
|
||||||
(define (register-printing-port p info)
|
(define (register-printing-port p info)
|
||||||
(printing-port p info))
|
(printing-port p info))
|
||||||
|
|
||||||
(define (register-printing-port-like p pport)
|
(define (register-printing-port-like p pport)
|
||||||
(printing-port p (printing-port-info pport)))
|
(printing-port p (printing-port-info pport)))
|
||||||
|
|
||||||
(define (get pport selector)
|
(define (get pport selector)
|
||||||
(selector (printing-port-info pport)))
|
(selector (printing-port-info pport)))
|
||||||
|
|
||||||
(define (printing-port-pre-print pport)
|
(define (printing-port-pre-print pport)
|
||||||
(get pport print-port-info-pre-print))
|
(get pport print-port-info-pre-print))
|
||||||
(define (printing-port-post-print pport)
|
(define (printing-port-post-print pport)
|
||||||
(get pport print-port-info-post-print))
|
(get pport print-port-info-post-print))
|
||||||
(define (printing-port-def-box pport)
|
(define (printing-port-def-box pport)
|
||||||
(get pport print-port-info-def-box))
|
(get pport print-port-info-def-box))
|
||||||
(define (printing-port-output-hooked pport)
|
(define (printing-port-output-hooked pport)
|
||||||
(get pport print-port-info-output-hooked))
|
(get pport print-port-info-output-hooked))
|
||||||
(define (printing-port-print-line pport)
|
(define (printing-port-print-line pport)
|
||||||
(get pport print-port-info-print-line))
|
(get pport print-port-info-print-line))
|
||||||
(define (printing-port-esc pport)
|
(define (printing-port-esc pport)
|
||||||
(get pport print-port-info-esc))
|
(get pport print-port-info-esc))
|
||||||
|
|
||||||
(define orig-display (port-display-handler (open-output-string)))
|
(define orig-display (port-display-handler (open-output-string)))
|
||||||
(define orig-write (port-write-handler (open-output-string)))
|
(define orig-write (port-write-handler (open-output-string)))
|
||||||
|
|
||||||
(define (pretty-print-newline pport width)
|
(define (pretty-print-newline pport width)
|
||||||
(let-values ([(l col p) (port-next-location pport)])
|
(let-values ([(l col p) (port-next-location pport)])
|
||||||
((printing-port-print-line pport) #t (or col 0) width)))
|
((printing-port-print-line pport) #t (or col 0) width)))
|
||||||
|
|
||||||
(define (tentative-pretty-print-port-transfer a-pport pport)
|
(define (tentative-pretty-print-port-transfer a-pport pport)
|
||||||
(let ([content ((get a-pport print-port-info-get-content))])
|
(let ([content ((get a-pport print-port-info-get-content))])
|
||||||
(for-each (lambda (elem)
|
(for-each (lambda (elem)
|
||||||
(if (bytes? elem)
|
(if (bytes? elem)
|
||||||
|
@ -392,10 +392,10 @@
|
||||||
(cadr elem) (caddr elem) (cdddr elem))])))
|
(cadr elem) (caddr elem) (cdddr elem))])))
|
||||||
content)))
|
content)))
|
||||||
|
|
||||||
(define (tentative-pretty-print-port-cancel pport)
|
(define (tentative-pretty-print-port-cancel pport)
|
||||||
(set-box! (get pport print-port-info-def-box) #f))
|
(set-box! (get pport print-port-info-def-box) #f))
|
||||||
|
|
||||||
(define (add-spaces n port)
|
(define (add-spaces n port)
|
||||||
(if (> n 0)
|
(if (> n 0)
|
||||||
(if (> n 7)
|
(if (> n 7)
|
||||||
(begin
|
(begin
|
||||||
|
@ -404,17 +404,17 @@
|
||||||
(write-string " " port 0 n))
|
(write-string " " port 0 n))
|
||||||
(void)))
|
(void)))
|
||||||
|
|
||||||
(define (prefab?! obj v)
|
(define (prefab?! obj v)
|
||||||
(let ([d (prefab-struct-key obj)])
|
(let ([d (prefab-struct-key obj)])
|
||||||
(and d
|
(and d
|
||||||
(begin
|
(begin
|
||||||
(vector-set! v 0 d)
|
(vector-set! v 0 d)
|
||||||
#t))))
|
#t))))
|
||||||
|
|
||||||
(define-struct unquoted (val))
|
(define-struct unquoted (val))
|
||||||
(define struct-ellipses (string->uninterned-symbol "..."))
|
(define struct-ellipses (string->uninterned-symbol "..."))
|
||||||
|
|
||||||
(define (generic-write obj display? width pport
|
(define (generic-write obj display? width pport
|
||||||
print-graph? print-struct? print-hash-table? print-vec-length?
|
print-graph? print-struct? print-hash-table? print-vec-length?
|
||||||
print-box? print-as-qq? qq-depth
|
print-box? print-as-qq? qq-depth
|
||||||
depth size-hook)
|
depth size-hook)
|
||||||
|
@ -1527,7 +1527,7 @@
|
||||||
(let-values ([(l col p) (port-next-location pport)])
|
(let-values ([(l col p) (port-next-location pport)])
|
||||||
((printing-port-print-line pport) #f col width)))
|
((printing-port-print-line pport) #f col width)))
|
||||||
|
|
||||||
(define (look-in-style-table raw-head)
|
(define (look-in-style-table raw-head)
|
||||||
(let ([head (do-remap raw-head)])
|
(let ([head (do-remap raw-head)])
|
||||||
(or (hash-ref (pretty-print-style-table-hash
|
(or (hash-ref (pretty-print-style-table-hash
|
||||||
(pretty-print-current-style-table))
|
(pretty-print-current-style-table))
|
||||||
|
@ -1535,14 +1535,14 @@
|
||||||
#f)
|
#f)
|
||||||
head)))
|
head)))
|
||||||
|
|
||||||
(define (do-remap raw-head)
|
(define (do-remap raw-head)
|
||||||
(cond
|
(cond
|
||||||
[((pretty-print-remap-stylable) raw-head)
|
[((pretty-print-remap-stylable) raw-head)
|
||||||
=>
|
=>
|
||||||
values]
|
values]
|
||||||
[else raw-head]))
|
[else raw-head]))
|
||||||
|
|
||||||
(define (read-macro? l pair? car cdr qd)
|
(define (read-macro? l pair? car cdr qd)
|
||||||
(define (length1? l) (and (pair? l) (null? (cdr l))))
|
(define (length1? l) (and (pair? l) (null? (cdr l))))
|
||||||
(and (pretty-print-abbreviate-read-macros)
|
(and (pretty-print-abbreviate-read-macros)
|
||||||
(let ((head (do-remap (car l))) (tail (cdr l)))
|
(let ((head (do-remap (car l))) (tail (cdr l)))
|
||||||
|
@ -1553,10 +1553,10 @@
|
||||||
(length1? tail))
|
(length1? tail))
|
||||||
(else #f)))))
|
(else #f)))))
|
||||||
|
|
||||||
(define (read-macro-body l car cdr)
|
(define (read-macro-body l car cdr)
|
||||||
(car (cdr l)))
|
(car (cdr l)))
|
||||||
|
|
||||||
(define (read-macro-prefix l car)
|
(define (read-macro-prefix l car)
|
||||||
(let ((head (do-remap (car l))))
|
(let ((head (do-remap (car l))))
|
||||||
(case head
|
(case head
|
||||||
((quote) "'")
|
((quote) "'")
|
||||||
|
@ -1568,12 +1568,12 @@
|
||||||
((unsyntax) "#,")
|
((unsyntax) "#,")
|
||||||
((unsyntax-splicing) "#,@"))))
|
((unsyntax-splicing) "#,@"))))
|
||||||
|
|
||||||
(define pretty-print-handler
|
(define pretty-print-handler
|
||||||
(lambda (v)
|
(lambda (v)
|
||||||
(unless (void? v)
|
(unless (void? v)
|
||||||
(pretty-print v))))
|
(pretty-print v))))
|
||||||
|
|
||||||
(define (number->decimal-string x)
|
(define (number->decimal-string x)
|
||||||
(cond
|
(cond
|
||||||
[(or (inexact? x)
|
[(or (inexact? x)
|
||||||
(integer? x))
|
(integer? x))
|
||||||
|
@ -1622,7 +1622,7 @@
|
||||||
;; Print as a fraction.
|
;; Print as a fraction.
|
||||||
(number->string x)))))))]))
|
(number->string x)))))))]))
|
||||||
|
|
||||||
(define (pretty-format t [w (pretty-print-columns)] #:mode [mode 'print])
|
(define (pretty-format t [w (pretty-print-columns)] #:mode [mode 'print])
|
||||||
(parameterize ([pretty-print-columns w])
|
(parameterize ([pretty-print-columns w])
|
||||||
(let ([op (open-output-string)])
|
(let ([op (open-output-string)])
|
||||||
((case mode
|
((case mode
|
||||||
|
@ -1637,5 +1637,5 @@
|
||||||
(substring s 0 (- (string-length s) 1)))))))
|
(substring s 0 (- (string-length s) 1)))))))
|
||||||
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user