;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: views.lisp,v 1.3 2002/11/29 05:05:29 kevin Exp $
+;;;; $Id: views.lisp,v 1.6 2002/12/03 00:12:55 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
;;;;
(in-package :hyperobject)
(eval-when (:compile-toplevel :execute)
- (declaim (optimize (speed 3) (safety 1) (compilation-speed 0) (debug 3))))
+ (declaim (optimize (speed 2) (safety 2) (compilation-speed 0) (debug 2))))
;;;; *************************************************************************
;;;; Metaclass Intialization
;;;; *************************************************************************
-(defun process-views (cl)
+(defun finalize-hyperlinks (cl)
+ (let ((hyperlinks '()))
+ (dolist (esd (class-slots cl))
+ (awhen (slot-value esd 'hyperlink)
+ (push
+ (make-instance 'hyperlink
+ :name (slot-definition-name esd)
+ :lookup it
+ :link-parameters (slot-value esd 'hyperlink-parameters))
+ hyperlinks)))
+ (setf (slot-value cl 'hyperlinks) hyperlinks)))
+
+
+(defun finalize-views (cl)
"Calculate all view slots for a hyperobject class"
(let ((fmtstr-text "")
(fmtstr-html "")
(xmlvalue-func '())
(classname (class-name cl))
(package (symbol-package (class-name cl)))
- (references nil))
+ (hyperlinks nil))
(declare (ignore classname))
(check-type (slot-value cl 'print-slots) list)
(dolist (slot-name (slot-value cl 'print-slots))
(string-append fmtstr-html-labels html-label-str)
(string-append fmtstr-xml-labels xml-label-str)
- (if (slot-value slot 'reference)
+ (if (slot-value slot 'hyperlink)
(progn
(string-append fmtstr-html-ref "<~~a>" value-fmt "</~~a>")
(string-append fmtstr-xml-ref "<~~a>" value-fmt "</~~a>")
(string-append fmtstr-html-ref-labels "<span class=\"label\">" namestr-lower "</span> <~~a>" value-fmt "</~~a>")
(string-append fmtstr-xml-ref-labels "<label>" namestr-lower "</label> <~~a>" value-fmt "</~~a>")
- (push (make-instance 'reference :name name
- :lookup (slot-value slot 'reference))
- references))
+ (push (make-instance 'hyperlink :name name
+ :lookup (slot-value slot 'hyperlink))
+ hyperlinks))
(progn
(string-append fmtstr-html-ref html-str)
(string-append fmtstr-xml-ref xml-str)
(setq xmlvalue-func (append xmlvalue-func plain-value-func)))
)))
- (setf (slot-value cl 'references) references)
+ (setf (slot-value cl 'hyperlinks) hyperlinks)
(if value-func
(setq value-func `(lambda (x) (values ,@value-func)))
:fmtstr-labels nil
:page-name "disp-func1"
:href-head nil :href-end nil :ampersand nil)
- (:documentation "Formatting for a linked reference"))
+ (:documentation "Formatting for a linked hyperlink"))
(defclass html-link-ref (link-ref)
()
(multiple-value-list
(funcall (funcall (obj-data-value-func fmt) x) x))))
- ;; make list of reference link fields for printing to refstr template
- (dolist (ref (hyperobject-class-references x))
+ ;; 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)
(defgeneric make-ref-data-str (obj fmt &optional label))
(defmethod make-ref-data-str (x (fmt textformat) &optional (label nil))
- "Return fmt string for that contains ~a slots for reference link start and end"
+ "Return fmt string for that contains ~a slots for hyperlink link start and end"
(unless (link-ref fmt)
(error "fmt does not contain a link-ref"))
(let ((refstr
(fmt-file-end fmt os)))
objs)
+
+;;; Misc formatting
+
+(defun fmt-comma-integer (i)
+ (format nil "~:d" i))
+