| 1 | (in-package :lisp-on-lines) |
| 2 | |
| 3 | (define-description inline ()) |
| 4 | |
| 5 | (define-description t () |
| 6 | ((identity :label nil) |
| 7 | (active-attributes :value '(identity)) |
| 8 | (attribute-delimiter :value ", ") |
| 9 | (label-formatter :value (curry #'format nil "~A: ")) |
| 10 | (value-formatter :value (curry #'format nil "~A"))) |
| 11 | (:in-description inline)) |
| 12 | |
| 13 | (define-layered-class standard-attribute |
| 14 | :in-layer #.(defining-description 'inline) |
| 15 | () |
| 16 | ()) |
| 17 | |
| 18 | (defun display-inline (object &rest args) |
| 19 | (with-active-descriptions (inline) |
| 20 | (apply #'display *display* object args))) |
| 21 | |
| 22 | (defun display-inline-attribute (attribute value) |
| 23 | (if (ignore-errors (lol::attribute-active-attributes attribute)) |
| 24 | (handler-case (display-inline value :attributes (lol::attribute-active-attributes attribute)) |
| 25 | (error () |
| 26 | (display-inline value))) |
| 27 | (display-inline value))) |
| 28 | |
| 29 | |
| 30 | |