Shell-style programming in Kawa
Per Bothner
per@bothner.com
Wed Jan 29 08:18:00 GMT 2014
On 01/28/2014 01:12 PM, Jamison Hope wrote:
> Nice. If I'm following the trail correctly, that was changing a
> format directive from ~A to ~Q. Is this ~Q directive ever useful
> in user code? It isn't documented on the Format page of the
> website.
It would be useful for quoting of embedded expressions in DSLs.
For example:
&sql{select * from table where name = "&[name]"}
By using ~Q the "Kawa-SQL" class can add easily add the
appropriate escape characters.
I started a blog article on this, but you can see it's
not much: http://per.bothner.com/blog/2013/Kawa-smart-substitution/
> It looks like it acts as if the format specifier were
> "\xF202~A\xF203", where #\xf202 and #\xf203 are unassigned
> characters from one of the Unicode Private Use Areas. And then
> the consumer of the resultant string is responsible for recognizing
> these embedded unprintable marks and doing something useful (such
> as stripping out a trailing newline). Is that right?
Basically. When shell: is #t, then the handleMarks method may add
escape characters, so when the shell later does word-splitting it
does so more-or-less the same as when the tokenize method does if
for when shell: is false. (FWIW, the handleMarks and tojebize
methods should pobably be merged.)
Another complication is the the characters 0xf200 and 0xf201 are used to
mark sequences.
--
--Per Bothner
per@bothner.com http://per.bothner.com/
More information about the Kawa
mailing list