Am 13.05.2007 um 03:51 schrieb Ken Tilton:
The first problem was writing the html to standard output instead of a string, the second problem is that cl-who does not quite work the way you think. What I did was replace as-html with the appropriate with-html-output form and then macroexpand.
Hm - ok - now that you say it ... Obviously the right thing to do. I was looking for Cells misuse anywhere - wrong. It was the CL-WHO side which I did not get right. Oh well....
Give it a try. Meanwhile, this works:
(defpackage #:whofix
(:use #:common-lisp #:cells #:cl-who))
(in-package :whofix)
(defmacro as-html (var &body body)
`(with-output-to-string (,var)
(with-html-output (,var)
,@body)
))
As this is working as-html has to be changed because in CL-WHO there's
(defmacro with-html-output-to-string ((var &optional string-form
&key (element-type ''character)
prologue
indent)
&body body)
"Transform the enclosed BODY consisting of HTML as s-expressions
into Lisp code which creates the corresponding HTML as a string."
`(with-output-to-string (,var ,string-form
#-(or :ecl :cmu :sbcl) :element-type
#-(or :ecl :cmu :sbcl) ,element-type)
(with-html-output (,var nil :prologue ,prologue :indent ,indent)
,@body)))
So, we can write:
(defmacro as-html (&body body)
`(with-html-output-to-string (*standard-output* nil :prologue nil)
,@body))