Or see the list of project sponsors.
This is a "trivial" library by @HexstreamSoft. It simplifies the writing of the functions which would like to accept a stream argument as
format function does.
format function accepts as the first parameter a
t or a stream object. In first case it returns a string and in second - outputs to
When you are writing a custom function with similar semantics, you have to handle all these cases by hand. Here is where
with-output-to-stream helps you:
POFTHEDAY> (defun log-info (obj &key (stream t)) (with-output-to-stream:with-output-to-stream (s stream) (write-string "INFO " s) (write obj :stream s) (terpri s))) ;; Here is we return result as a string: POFTHEDAY> (log-info 100500 :stream nil) "INFO 100500 " ;; This will output to *standard-output*: POFTHEDAY> (log-info 100500 :stream t) INFO 100500 NIL ;; But you can pass any stream as the argument: POFTHEDAY> (log-info 100500 :stream *error-output*) INFO 100500 NIL POFTHEDAY> (with-output-to-string (s) (log-info 100500 :stream s) (log-info 42 :stream s)) "INFO 100500 INFO 42 "
That is it for today.