:serial t))
:serial t
- :depends-on (:contextl :arnesi :alexandria :parse-number
+ :depends-on (:contextl :arnesi :alexandria :parse-number :yaclml :trivial-garbage
))
(defmacro with-attributes (names description &body body)
`(let ,(loop for name in names collect
(list name `(find-attribute ,description ',name)))
- ,@body))q
+ ,@body))
;; Descriptions
- #:find-description
+ #:*description*
+ #:find-description
#:description-of
#:define-description
#:described-object
+ #:with-described-object
#:described-class
#:described-standard-class
#:with-active-descriptions
#:define-display
#:display
#:display-using-description
+ #:display-attribute-label
#:*display*
#:*object*
#:attributes
#:attribute-object
#:attribute-label
+ #:attribute-delimiter
+ #:attribute-slot-name
#:label
#:attribute-function
#:attribute-value
(or class (when
(and type (symbolp type))
(let ((name (format nil "~A-~A" type 'attribute-editor)))
- (or (find-class (intern name (symbol-package type)) nil)
+ (or (unless (eq (find-package :cl)
+ (symbol-package type))
+ (find-class (intern name (symbol-package type)) nil))
(find-class (intern name) nil)
+ (find-class (intern name :lol) nil)
'string-attribute-editor))))))
(defclass attribute-editor ()
:writer (make-attribute-value-writer attribute)))
+
+
(define-layered-method display-attribute-editor
:in-layer #.(defining-description 'html-description) (attribute)
(display-html-attribute-editor attribute (attribute-editor attribute)))
(define-layered-method display-html-attribute-value
(object (attribute list-attribute))
- (<:ul
- (arnesi:dolist* (item (attribute-value attribute))
- (<:li (apply #'display *display* item (slot-value attribute 'item-args))))))
-
-
-
-
-
-
-
-
-
+ (let ((val (attribute-value attribute)))
+ (when (listp val)
+ (<:ul
+ (arnesi:dolist* (item (attribute-value attribute))
+ (<:li (apply #'display *display* item (slot-value attribute 'item-args))))))))
\ No newline at end of file