Skip to content

Instantly share code, notes, and snippets.

@turbolent
Created June 24, 2009 18:20
Show Gist options
  • Save turbolent/135438 to your computer and use it in GitHub Desktop.
Save turbolent/135438 to your computer and use it in GitHub Desktop.
(defmodel other ()
((content :accessor content
:initarg :content
:initform (c-in "Test"))))
(defmodel node ()
((elements :accessor node-elements
:initarg :elements
:initform '())
(first-element :reader first-element
:initform (c? (first (^node-elements))))
(first-content-reversed :reader first-content-reversed
:initform (c? (reverse (content (^first-element)))))))
(defobserver first-content-reversed ((self node))
(format t "reversed content changed: ~A~%" new-value))
(defun test-node ()
(let* ((other (make-instance 'other))
(node (make-instance 'node :elements (list other))))
(assert (string= "tseT" (first-content-reversed node)))
(setf (content other) "Foobar")
(assert (string= "rabooF" (first-content-reversed node)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment