X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=views.lisp;h=ad1874d58bf0222045b56550facccb95c107bae0;hb=4141766275df3f64c3147ee45d160b47178d44f1;hp=f4f075742d6156bb55f0af351f9cd5bd636b65e2;hpb=47a7911aaa793adcce5add7bc912ded4bff18d99;p=hyperobject.git diff --git a/views.lisp b/views.lisp index f4f0757..ad1874d 100644 --- a/views.lisp +++ b/views.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: views.lisp,v 1.18 2002/12/26 11:57:15 kevin Exp $ +;;;; $Id: views.lisp,v 1.29 2003/05/06 22:13:38 kevin Exp $ ;;;; ;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg ;;;; @@ -20,8 +20,12 @@ (defclass object-view () - ((object-class :initform nil :initarg :object-class :accessor object-class - :documentation "Name of class for object to be viewed.") + ((object-class-name :initform nil :initarg :object-class-name + :accessor object-class-name + :documentation "Name of class of object to be viewed.") + (object-class :initform nil :initarg :object-class + :accessor object-class + :documentation "Class of object to be viewed.") (slots :initform nil :initarg :slots :accessor slots :documentation "List of effective slots for object to be viewed.") (name :initform nil :initarg :name :accessor name @@ -33,57 +37,57 @@ (country-language :initform :en :initarg :country-language :documentation "Country's Language for this view.") ;; - (file-start-str :type string :initform nil :initarg :file-start-str + (file-start-str :type (or string null) :initform nil :initarg :file-start-str :accessor file-start-str) - (file-end-str :type string :initform nil :initarg :file-end-str + (file-end-str :type (or string null) :initform nil :initarg :file-end-str :accessor file-end-str) - (list-start-fmtstr :type string :initform nil :initarg :list-start-fmtstr + (list-start-fmtstr :type (or string null) :initform nil :initarg :list-start-fmtstr :accessor list-start-fmtstr) - (list-start-value-func :type function :initform nil + (list-start-value-func :type (or function symbol null) :initform nil :initarg :list-start-value-func :accessor list-start-value-func) (list-start-indent :initform nil :initarg :list-start-indent :accessor list-start-indent) - (list-end-fmtstr :type string :initform nil :initarg :list-end-fmtstr + (list-end-fmtstr :type (or string null) :initform nil :initarg :list-end-fmtstr :accessor list-end-fmtstr) - (list-end-value-func :type function :initform nil + (list-end-value-func :type (or function symbol null) :initform nil :initarg :list-end-value-func :accessor list-end-value-func) (list-end-indent :initform nil :initarg :list-end-indent :accessor list-end-indent) - (obj-start-fmtstr :type string :initform nil :initarg :obj-start-fmtstr + (obj-start-fmtstr :type (or string symbol null) :initform nil :initarg :obj-start-fmtstr :accessor obj-start-fmtstr) (obj-start-value-func :initform nil :initarg :obj-start-value-func :accessor obj-start-value-func) (obj-start-indent :initform nil :initarg :obj-start-indent :accessor obj-start-indent) - (obj-end-fmtstr :type string :initform nil :initarg :obj-end-fmtstr + (obj-end-fmtstr :type (or string null) :initform nil :initarg :obj-end-fmtstr :accessor obj-end-fmtstr) - (obj-end-value-func :type function :initform nil + (obj-end-value-func :type (or function symbol null) :initform nil :initarg :obj-end-value-func :accessor obj-end-value-func) (obj-end-indent :initform nil :initarg :obj-end-indent :accessor obj-end-indent) (obj-data-indent :initform nil :initarg :obj-data-indent :accessor obj-data-indent) - (obj-data-fmtstr :type string :initform nil :initarg :obj-data-fmtstr + (obj-data-fmtstr :type (or string null) :initform nil :initarg :obj-data-fmtstr :accessor obj-data-fmtstr) - (obj-data-end-fmtstr :type string :initform nil + (obj-data-end-fmtstr :type (or string null) :initform nil :initarg :obj-data-end-fmtstr :accessor obj-data-end-fmtstr) - (obj-data-value-func :type function :initform nil + (obj-data-value-func :type (or function symbol null) :initform nil :initarg :obj-data-value-func :accessor obj-data-value-func) (link-slots :type list :initform nil :documentation "List of slot names that have hyperlinks" :accessor link-slots) - (link-page-name :type string :initform nil :initarg :link-page-name + (link-page-name :type (or string null) :initform nil :initarg :link-page-name :accessor link-page-name) - (link-href-start :type string :initform nil :initarg :link-href-start + (link-href-start :type (or string null) :initform nil :initarg :link-href-start :accessor link-href-start) - (link-href-end :type string :initform nil :initarg :link-href-end + (link-href-end :type (or string null) :initform nil :initarg :link-href-end :accessor link-href-end) - (link-ampersand :type string :initform nil :initarg :link-ampersand + (link-ampersand :type (or string null) :initform nil :initarg :link-ampersand :accessor link-ampersand)) (:default-initargs :link-page-name "disp-func1") (:documentation "View class for a hyperobject")) @@ -97,7 +101,9 @@ (aif (find category (views obj-class) :key #'category) it (let ((view - (make-instance 'object-view :object-class (class-name obj-class) + (make-instance 'object-view + :object-class-name (class-name obj-class) + :object-class obj-class :category category :slots slots))) (push view (views obj-class)) @@ -132,7 +138,8 @@ ((eq view-def :default) (let* ((name (class-name cl)) (view (make-instance 'object-view :name "automatic" - :object-class name + :object-class-name name + :object-class cl :category :compact-text))) view)) ((consp view-def) @@ -142,7 +149,7 @@ (defmethod initialize-instance :after ((view object-view) &rest initargs &key &allow-other-keys) - (initialize-view (find-class (object-class view)) view)) + (initialize-view (object-class view) view)) (defun initialize-view (obj-cl view) "Calculate all view slots for a hyperobject class" @@ -186,7 +193,7 @@ (error "Slot ~A is not found in class ~S" slot-name obj-cl)) (let* ((name (slot-definition-name slot)) (namestr-lower (string-downcase (symbol-name name))) - (xml-namestring (escape-xml-string namestr-lower)) + (xml-namestr (escape-xml-string namestr-lower)) (xml-tag (escape-xml-string namestr-lower)) (type (slot-value slot 'type)) (print-formatter (esd-print-formatter slot))) @@ -244,7 +251,7 @@ ((or :xml-link-labels :ie-xml-link-labels) (push name links) (if (esd-hyperlink slot) - (string-append fmtstr " <~~a>" value-fmt "") + (string-append fmtstr " <~~a>" value-fmt "") (string-append fmtstr (concatenate 'string " <" xml-tag ">" value-fmt ""))))) ) ;; let value-fmt @@ -252,10 +259,11 @@ `(,print-formatter (slot-value x (quote ,name))) `(slot-value x (quote ,name))))) (when (and (in category :xml :xhtml :xml-link :xhtml-link + :xml-labels :ie-xml-labels :xhtml-link-labels :xml-link-labels :ie-xml-link :ie-xml-link-labels) (or print-formatter - (string-equal (write-to-string type) "string"))) + (lisp-type-is-a-string type)))) (setq func `(kmrcl:xml-cdata ,func))) (push func value-func)) ))) @@ -376,9 +384,9 @@ (setf (list-end-indent view) t) (setf (list-end-fmtstr view) "~%") (setf (list-end-value-func view) #'xmlformat-list-end-value-func) - (setf (obj-start-fmtstr view) (format nil "<~(~a~)>" (object-class view))) + (setf (obj-start-fmtstr view) (format nil "<~(~a~)>" (object-class-name view))) (setf (obj-start-indent view) t) - (setf (obj-end-fmtstr view) (format nil "~%" (object-class view))) + (setf (obj-end-fmtstr view) (format nil "~%" (object-class-name view))) (setf (obj-end-indent view) nil) (setf (obj-data-indent view) nil)) @@ -553,4 +561,3 @@ (defun fmt-comma-integer (i) (format nil "~:d" i)) -