;;;; in Text, HTML, and XML formats. This includes hyperlinking
;;;; capability and sub-objects.
;;;;
-;;;; $Id: mop.lisp,v 1.5 2002/12/02 15:57:17 kevin Exp $
+;;;; $Id: mop.lisp,v 1.6 2002/12/05 19:15:02 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
;;;;
(defun finalize-documentation (cl)
"Calculate class documentation slot"
(awhen (slot-value cl 'title)
- (setf (slot-value cl 'title) (car it)))
+ (setf (slot-value cl 'title)
+ (etypecase (slot-value cl 'title)
+ (cons (car it))
+ ((or string symbol) it))))
(awhen (slot-value cl 'description)
- (setf (slot-value cl 'description) (car it)))
-
+ (setf (slot-value cl 'description)
+ (etypecase (slot-value cl 'description)
+ (cons (car it))
+ ((or string symbol) it))))
+
(let ((*print-circle* nil))
(setf (documentation (class-name cl) 'class)
(format nil "Hyperobject~A~A~A~A"
(defun hyperobject-class-fields (obj)
(class-slots (class-of obj)))
+(defun hyperobject-class-print-slots (obj)
+ (slot-value (class-of obj) 'print-slots))
+
(defun hyperobject-class-fmtstr-html-ref (obj)
(slot-value (class-of obj) 'fmtstr-html-ref))
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: views.lisp,v 1.7 2002/12/05 18:31:36 kevin Exp $
+;;;; $Id: views.lisp,v 1.8 2002/12/05 19:15:02 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
;;;;
;; 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)
- (slot-value x 'print-slots))
- 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)))
+ (let ((print-pos (position (name ref) (hyperobject-class-print-slots x))))
+ (when print-pos
+ (let ((link-start (make-link-start x (link-ref fmt) (name ref) (lookup ref)
+ (nth print-pos 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)))))
(setq refvalues (nreverse refvalues))
-
(apply #'format s refstr refvalues)))
(defgeneric obj-data (obj))