cl-heredoc primarily exports a single function, READ-HEREDOC, that is meant to be used with the CL reader by attaching it to a dispatch character, e.g.
CL-USER> (set-dispatch-macro-character #\# #\> #'cl-heredoc:read-heredoc) CL-USER> #>eof>Write whatever (you) "want", no matter how many lines or what characters until the magic end sequence has been reached!eof
Will read everything starting after "#>eof>" until the given sequence, here "eof", is found and return the result as a string. The enclosed text is not subject to any kind of evaluation and needs no quoting. If used in a non-interactive fashion, i.e. outside the REPL, an error will be signaled if EOF is reached.
The underlying implementation uses ring buffers as described by Paul Graham in "ANSI Common Lisp" so partial end sequence matches will not prevent an immediately following real match that re-uses part of the discarded one.
Categories: development, text
The link to the git repository is available from Github.