Hi,
Closure CVS now depends on CXML's rune implementation and XML parser.
I had postponed this commit for a long time, because the most
interesting feature to me is the "character rune" implementation in
CXML. However, there are many places in Closure were the rune
abstraction was not being used entirely correctly, leaving Closure
broken with character runes. After an evening of hacking, Closure can
now render its homepage using character runes. Encouraged by that
success, I decided to finally commit the patch.
Note that my changes will most likely have left many of these little
bugs in place. If you get any errors about characters not being
integers, you can try one of two solutions:
a) Switch to integer runes using
(pushnew :rune-is-integer *features*)
before loading anything.
Make sure to recompile both CXML and Closure after changing this
setting.
b) Fix the code to correctly use runes.
That's mostly trivial. Just write #/U+0020 instead of 32; write
#"foo" instead of #.(map 'vector #'char-code "foo"); use rune-code
instead of identity when codes are really needed even on
unicode-aware lisps; similarly rune-char when characters are needed
even on non-unicode lisps. Etc.
Note that the CSS parser is a special case, it uses integers larger
than 2^16 in places and can't be switches to characters easily.
d.