(rontolisp) docs
← IO

with-out-str

(with-out-str body...)

Runs the body with *standard-output* bound to a fresh string stream and answers what it printed. Never a literal with-output-to-string (which would flip a WASM module into EH mode): the stream is built and read back directly, like str. *out* is *standard-output*, so (. *out* write ...) lands in the same capture, and (prn *out*) inside prints the capture's stream, #object[java.io.StringWriter ""]. A zero-argument (new java.io.StringWriter) is the same string stream on every backend (WASM included), so the oracle's own with-out-str macro -- rebinding *out* around the body and reading the writer back with str -- runs as written; str/.toString answer the text so far without clearing it.