r3579: *** empty log message ***
[hyperobject.git] / views.lisp
index 8b72193f66308b7d28102b4a2a20d31cb748487d..f1016a14599de1f25f6d43dc62d4d98293e1854e 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: views.lisp,v 1.5 2002/12/02 15:57:17 kevin Exp $
+;;;; $Id: views.lisp,v 1.10 2002/12/06 20:46:51 kevin Exp $
 ;;;;
 ;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
 ;;;;
@@ -31,7 +31,7 @@
         (make-instance 'hyperlink
                        :name (slot-definition-name esd)
                        :lookup it
-                       :link-parameters (slot-value esd 'link-parameters))
+                       :link-parameters (slot-value esd 'hyperlink-parameters))
         hyperlinks)))
     (setf (slot-value cl 'hyperlinks) hyperlinks)))
 
 
 (defgeneric fmt-obj-data-with-ref (obj fmt s label refvars))
 (defmethod fmt-obj-data-with-ref (x (fmt textformat) s label refvars)
-  (let ((refstr (make-ref-data-str x fmt label))
-       (refvalues nil)
-       (field-values 
-        (multiple-value-list
-         (funcall (funcall (obj-data-value-func fmt) x) x))))
-    
+  (let ((refvalues '()))
     ;; make list of hyperlink link fields for printing to refstr template
-    (dolist (ref (hyperobject-class-hyperlinks x))
-      (let ((link-start 
-            (make-link-start x (link-ref fmt) (name ref) (lookup ref)
-                             (nth (position (name ref)
-                                            (hyperobject-class-fields x)
-                                            :key #'(lambda (x)
-                                                     (slot-definition-name x)))
-                                  field-values)  
-                             (append (link-parameters ref) refvars)))
-           (link-end (make-link-end x (link-ref fmt) (name ref))))
-       (push link-start refvalues)
-       (push link-end refvalues)))
+    (dolist (name (hyperobject-class-print-slots x))
+      (let-when (hyperlink (find name (hyperobject-class-hyperlinks x) :key #'name))
+       (push  (make-link-start x (link-ref fmt) name (lookup hyperlink)
+                               (slot-value x name)
+                               (append (link-parameters hyperlink) refvars))
+              refvalues)
+       (push (make-link-end x (link-ref fmt) name) refvalues)))
     (setq refvalues (nreverse refvalues))
-    
-    (apply #'format s refstr refvalues)))
+    (apply #'format s (make-ref-data-str x fmt label) refvalues)))
 
 (defgeneric obj-data (obj))
 (defmethod obj-data (x)
        (fmt-file-end fmt os)))
   objs)
 
+
+;;; Misc formatting
+
+(defun fmt-comma-integer (i)
+  (format nil "~:d" i))
+