70 lines
2.8 KiB
Racket
70 lines
2.8 KiB
Racket
#lang scribble/doc
|
|
@(require "mz.ss")
|
|
|
|
@title[#:tag "stringport"]{String Ports}
|
|
|
|
String input and output ports do not need to be explicitly closed. The
|
|
@scheme[file-position] procedure works for string ports in
|
|
position-setting mode.
|
|
|
|
@defproc[(open-input-bytes [bstr bytes?][name any/c 'string]) input-port?]{
|
|
|
|
Creates an input port that reads characters from @scheme[bstr] (see
|
|
@secref["bytestrings"]). Modifying @scheme[bstr] afterward does not
|
|
affect the byte stream produced by the port. The optional
|
|
@scheme[name] argument is used as the name for the returned port.}
|
|
|
|
@defproc[(open-input-string [str string?][name any/c 'string]) input-port?]{
|
|
|
|
Creates an input port that reads bytes from the UTF-8 encoding (see
|
|
@secref["encodings"]) of @scheme[str]. The optional @scheme[name]
|
|
argument is used as the name for the returned port.}
|
|
|
|
@defproc[(open-output-bytes [name any/c 'string]) output-port?]{
|
|
|
|
Creates an output port that accumulates the output into a byte
|
|
string. The optional @scheme[name] argument is used as the name for
|
|
the returned port.}
|
|
|
|
@defproc[(open-output-string [name any/c 'string]) output-port?]{The
|
|
same as @scheme[open-output-bytes].}
|
|
|
|
@defproc[(get-output-bytes [out output-port?]
|
|
[reset? any/c #f]
|
|
[start-pos exact-nonnegative-integer? 0]
|
|
[end-pos exact-nonnegative-integer? #f])
|
|
bytes?]{
|
|
|
|
Returns the bytes accumulated in @scheme[out] so far in a
|
|
freshly-allocated byte string (including any bytes written after the
|
|
port's current position, if any). the @scheme[out] port must be a
|
|
string output port produced by @scheme[open-output-bytes] (or
|
|
@scheme[open-output-string]) or a structure whose
|
|
@scheme[prop:output-port] property refers to such an output port
|
|
(transitively).
|
|
|
|
If @scheme[reset?] is true, then all bytes are removed from the port,
|
|
and the port's position is reset to @scheme[0]; if @scheme[reset?] is
|
|
@scheme[#f], then all bytes remain in the port for further
|
|
accumulation (so they are returned for later calls to
|
|
@scheme[get-output-bytes] or @scheme[get-output-string]), and the
|
|
port's position is unchanged.
|
|
|
|
The @scheme[start-pos] and @scheme[end-pos] arguments specify the
|
|
range of bytes in the port to return; supplying @scheme[start-pos] and
|
|
@scheme[end-pos] is the same as using @scheme[subbytes] on the result
|
|
of @scheme[get-output-bytes], but supplying them to
|
|
@scheme[get-output-bytes] can avoid an allocation. The
|
|
@scheme[end-pos] argument can be @scheme[#f], which corresponds to not
|
|
passing a second argument to @scheme[subbytes].}
|
|
|
|
@defproc[(get-output-string [out output-port?]) string?]{
|
|
Returns @scheme[(bytes->string/utf-8 (get-output-bytes out) #\?)].}
|
|
|
|
@examples[
|
|
(define i (open-input-string "hello world"))
|
|
(define o (open-output-string))
|
|
(write (read i) o)
|
|
(get-output-string o)
|
|
]
|