/trivial-escapes

C-style escape directives for Common Lisp.

Primary LanguageCommon LispOtherNOASSERTION

TRIVIAL-ESCAPES Quicklisp License Build Status Coverage Status

Copyright (c) 2017 William Yao

Description and usage

Ever been annoyed by the fact that Common Lisp doesn't interpret escape characters the same way that literally every other programming language does? Hey, me too!

So I wrote this library.

It provides a readtable (four, actually) that lets you write strings like this:

CL-USER> #"This string has\na newline in it!"
"This string has
a newline in it!"

CL-USER> #"\x4E00\x751F\x61F8\x547D"
"一生懸命"

Fun! To use it, use one of the exported readtables. In most cases, TRIVIAL-ESCAPES:READTABLE is probably the one you want, containing the standard readtable, with a dispatch function for #\# #\" added in.

(named-readtables:in-readtable trivesc:readtable)

However, if you need them, there are three other provided readtables as well. TRIVIAL-ESCAPES:READTABLE-MIXIN contains just the dispatch function for #\# #\" (this means that it doesn't contain any other reader macros! as in, #\( will no longer start s-expressions, for example.), and similarly, TRIVIAL-ESCAPES:DQ-READTABLE-MIXIN contains just a reader macro for #\", replacing the normal string reading.

TRIVIAL-ESCAPES:READTABLE and TRIVIAL-ESCAPES:DQ-READTABLE simple fuse the standard readtable with their respective mixins, creating actually usable readtables. In most cases, one of these two is what you want.

TRIVIAL-ESCAPES contains all the standard C escapes sequences, shown here.

Note that as a technicality, the characters you end up with will depend upon whatever character encoding your Lisp environment uses. But since everyone seems to be standardizing on Unicode, this probably won't be a problem.