4195bb24fceb23c75aa789a842617cac12fc40cb
1 (in-package :lisp-on-lines
)
3 (define-description description
())
5 (defun find-description (name)
6 (slot-value (find-description-class name
) 'instance
))
8 (defun description-attributes (description)
9 (closer-mop:class-slots
(find-description-class description
)))
11 (define-layered-function attributes
(description))
13 (define-layered-method attributes
(description)
14 (description-attributes description
))
16 ;;;!-- TODO: This is a prime candidate for optimization
17 (defun find-attribute (description attribute-name
)
18 (find attribute-name
(description-attributes description
) :key
#'attribute-name
))
20 (define-display ((description description
))
21 (format *display
* "~{~A~%~}"
24 (with-output-to-string (*display
*)
25 (display-attribute attribute
)))
26 (attributes description
))))
29 (define-layered-method description-of
(object)
30 (find-description 't
))
32 (define-layered-method description-of
((symbol symbol
))
33 (find-description 'symbol
))
35 (define-description symbol
()
36 ((identity :label
"Symbol:")
38 :function
#'symbol-name
47 (package :function
#'symbol-package
49 (function :label
"Function:"
53 (symbol-function symbol
)