Frank Goenninger wrote:
Hi all:
I do have a strange behaviour of a small code snippet ...:
(the used macro with-html-output is from CL-WHO - see
http://www.weitz.de/cl-who - it generates HTML markup)
(defmacro as-html (&body body)
`(with-html-output (*standard-output*)
,@body))
(defmodel simple (family)
((slot-1 :accessor slot-1 :initform (c-in nil) :initarg :slot-1))
(:default-initargs
:value (c? (as-html
(:h1 (^slot-1))))))
Now when inspecting the result of
(make-instance 'simple :slot-1 "Hi")
I get no value back for slot-1 but simply see
<h1></h1>
... - what the f*ck am I doing wrong ???
Inspecting the instance reveals:
SIMPLE15 is a standard-object.
[type: SIMPLE]
--------------------
Class: #<STANDARD-CLASS SIMPLE>
.MD-STATE: :AWAKE
.AWAKEN-ON-INIT-P: NIL
.CELLS: ((.KIDS . =0/.KIDS/SIMPLE15]))
.CELLS-FLUSHED: ((.VALUE . <vld>=1/.VALUE/SIMPLE15]))
ADOPT-CT: 0
.MD-NAME: SIMPLE15
.FM-PARENT: NIL
.VALUE: "</h1>"
ZDBG: NIL
.KID-SLOTS: NIL
.KIDS: NIL
SLOT-1: "Hallo"
Hunh? Slot ".value" is "</h1>" ??
Any help really appreciated ...
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. 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)
))
(defmodel simple (family)
((slot-1 :accessor slot-1 :initform (c-in nil) :initarg :slot-1))
(:default-initargs
:value (c? (trc "enetering rule" (^slot-1))
(as-html xxx
(:h1 (write-string (^slot-1) xxx))))))
(describe (make-instance 'simple :slot-1 "booters"))
;;;0> 4331 enetering rule "booters"
;;;SIMPLE8054 is an instance of #<STANDARD-CLASS SIMPLE>:
;;; The following slots have :INSTANCE allocation:
;;; .MD-STATE :AWAKE
;;; .AWAKEN-ON-INIT-P NIL
;;; .CELLS ((.KIDS . =0/.KIDS/SIMPLE8054]))
;;; .CELLS-FLUSHED ((.VALUE . <vld>=10966/.VALUE/SIMPLE8054]))
;;; ADOPT-CT 0
;;; .MD-NAME SIMPLE8054
;;; .FM-PARENT NIL
;;; .VALUE "
;;;
;;;<h1>booters</h1>"
;;; ZDBG NIL
;;; .KID-SLOTS NIL
;;; .KIDS NIL
;;; SLOT-1 "booters"
_______________________________________________
cells-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-devel