[cl-who-devel] Runtime HTML generation

J. K. Cunningham J.k.cunningham at comcast.net
Sat Jan 23 20:56:42 UTC 2010


On Sat, 2010-01-23 at 12:20 -0800, Ron Garret wrote:
> No, that won't work.  with-html-output-to-string is a macro, not a function.  It does its work at macroexpansion time, not run-time.  (You might want to re-read my original message.)
> 

This works - I just put an example up on a website to try it - code is
there:

http://jandmworks.com/test.html

(defun make-table (l)
   (with-html-output (*standard-output*)
     (:table :border 1 (mapcar (lambda (row) (htm
                 (:tr (mapcar (lambda (cell)
                            (htm (:td (str cell)))) row)))) l))))

The list I'm passing it could have come from anywhere - a file, a posted response, etc. 

Jeff



> rg
> 
> On Jan 23, 2010, at 11:45 AM, Joubert Nel wrote:
> 
> > Hi Ron,
> > 
> > You can use the with-html-output-to-string function to generate HTML at run-time. 
> > Using it in a macro, you can then do data-driven HTML construction using mapcar, loop, etc.
> > 
> > Joubert
> > 
> > 
> > On Jan 23, 2010, at 12:51 PM, Ron Garret wrote:
> > 
> >> Is there a Right Way to use CL-WHO to generate HTML at run time?  For example, suppose I want to do something like this:
> >> 
> >> (defun make-table (l)
> >> `(:table ,@(mapcar (lambda (row) `(:tr ,@(mapcar (lambda (cell) `(:td (str ,cell)))
> >>                                                  row)))
> >>                    l)))
> >> 
> >> (cl-who:with-html-output-to-string (*standard-output* nil :prologue t)
> >> ... (make-table l) ...)
> >> 
> >> This doesn't work because CL-WHO normally does all its work at compile time, but L is not known until run time.  I can hack this using a macro that calls EVAL, or by hacking the CL-WHO code to add another specially handled symbol, but before diving into that rabbit hole I thought I'd ask if there was already a way of doing this that I've overlooked.
> >> 
> >> Thanks,
> >> rg
> >> 
> >> 
> >> _______________________________________________
> >> cl-who-devel site list
> >> cl-who-devel at common-lisp.net
> >> http://common-lisp.net/mailman/listinfo/cl-who-devel
> > 
> > 
> > 
> > 
> > _______________________________________________
> > cl-who-devel site list
> > cl-who-devel at common-lisp.net
> > http://common-lisp.net/mailman/listinfo/cl-who-devel
> 
> 
> _______________________________________________
> cl-who-devel site list
> cl-who-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/cl-who-devel





More information about the Cl-who-devel mailing list