detect-preserve-syntax, file->preserves
This commit is contained in:
parent
163e338ce5
commit
5c644624c4
|
@ -11,7 +11,12 @@
|
|||
(all-from-out "write-binary.rkt")
|
||||
(all-from-out "write-text.rkt")
|
||||
|
||||
read-preserve)
|
||||
detect-preserve-syntax
|
||||
read-preserve
|
||||
file->preserves)
|
||||
|
||||
(require racket/match)
|
||||
(require (only-in racket/file file->list))
|
||||
|
||||
(require "record.rkt")
|
||||
(require "float.rkt")
|
||||
|
@ -23,16 +28,31 @@
|
|||
(require "write-binary.rkt")
|
||||
(require "write-text.rkt")
|
||||
|
||||
(define (detect-preserve-syntax [in-port (current-input-port)])
|
||||
(define b (peek-byte in-port))
|
||||
(cond [(eof-object? b) b]
|
||||
[(<= #x80 b #xBF) 'binary]
|
||||
[else 'text]))
|
||||
|
||||
(define (read-preserve [in-port (current-input-port)]
|
||||
#:read-syntax? [read-syntax? #f]
|
||||
#:decode-embedded [decode-embedded #f]
|
||||
#:source [source (object-name in-port)])
|
||||
(define b (peek-byte in-port))
|
||||
(cond [(eof-object? b) b]
|
||||
[(<= #x80 b #xBF) (read-preserve/binary in-port
|
||||
#:read-syntax? read-syntax?
|
||||
#:decode-embedded decode-embedded)]
|
||||
[else (read-preserve/text in-port
|
||||
#:read-syntax? read-syntax?
|
||||
#:decode-embedded decode-embedded
|
||||
#:source source)]))
|
||||
(match (detect-preserve-syntax in-port)
|
||||
[(? eof-object? e) e]
|
||||
['binary (read-preserve/binary in-port
|
||||
#:read-syntax? read-syntax?
|
||||
#:decode-embedded decode-embedded)]
|
||||
['text (read-preserve/text in-port
|
||||
#:read-syntax? read-syntax?
|
||||
#:decode-embedded decode-embedded
|
||||
#:source source)]))
|
||||
|
||||
(define (file->preserves path
|
||||
#:read-syntax? [read-syntax? #f]
|
||||
#:decode-embedded [decode-embedded #f])
|
||||
(file->list path (lambda (in-port)
|
||||
(read-preserve in-port
|
||||
#:read-syntax? read-syntax?
|
||||
#:decode-embedded decode-embedded
|
||||
#:source path))))
|
||||
|
|
Loading…
Reference in New Issue