X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=views.lisp;h=7cf370db7415e68af6eea30c471d9c2d20187275;hb=b3374bfdd283f1ec52ebecb63f2f597a8b161cb3;hp=70819fd276faa89a894cb03156d4e386fd4db58a;hpb=0bb5498ce669d7f3c6d619bea10056b24db30b0a;p=hyperobject.git diff --git a/views.lisp b/views.lisp index 70819fd..7cf370d 100644 --- a/views.lisp +++ b/views.lisp @@ -7,15 +7,12 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: views.lisp,v 1.46 2003/05/22 20:40:03 kevin Exp $ +;;;; $Id: views.lisp,v 1.51 2003/06/12 11:10:38 kevin Exp $ ;;;; ;;;; This file is Copyright (c) 2000-2003 by Kevin M. Rosenberg ;;;; ************************************************************************* -(in-package :hyperobject) - -(eval-when (:compile-toplevel :execute) - (declaim (optimize (speed 2) (safety 2) (compilation-speed 0) (debug 2)))) +(in-package #:hyperobject) (defclass object-view () @@ -72,15 +69,16 @@ (link-slots :type list :initform nil :documentation "List of slot names that have hyperlinks" :accessor link-slots) - (link-page-name :type (or string null) :initform nil :initarg :link-page-name - :accessor link-page-name) + (link-page-printer :type (or string function symbol null) :initform nil + :initarg :link-page-printer + :accessor link-page-printer) (link-href-start :type (or string null) :initform nil :initarg :link-href-start :accessor link-href-start) (link-href-end :type (or string null) :initform nil :initarg :link-href-end :accessor link-href-end) (link-ampersand :type (or string null) :initform nil :initarg :link-ampersand :accessor link-ampersand)) - (:default-initargs :link-page-name "disp-func1") + (:default-initargs :link-page-printer "disp-func1") (:documentation "View class for a hyperobject")) @@ -134,7 +132,7 @@ :category :compact-text))) view)) ((consp view-def) - (eval `(make-instance ,view-def))) + (apply #'make-instance 'object-view view-def)) (t (error "Invalid parameter to make-object-view: ~S" view-def)))) @@ -177,12 +175,10 @@ (let* ((slot-data (slot-value obj name)) (fmt-data (if formatter (funcall formatter slot-data) - slot-data)) - (data (if cdata - (kmrcl:xml-cdata fmt-data) - fmt-data))) - (write-simple data strm))) - + slot-data))) + (if cdata + (write-xml-cdata fmt-data strm) + (write-simple fmt-data strm)))) (defun ppfc-html (title name type formatter cdata print-func) (vector-push-extend '(write-string "