(in-package :lisp-on-lines) (export '(html-description) (find-package :lisp-on-lines)) (define-description html-description () ()) (define-description t () ((css-class :value "lol-description" :activep nil) (dom-id :function (lambda (x) (declare (ignore x)) (symbol-name (gensym "DOM-ID-"))) :activep nil)) (:in-description html-description)) (define-layered-class html-attribute () ((css-class :accessor attribute-css-class :initform "lol-attribute") (dom-id :accessor attribute-dom-id :initform nil))) (define-layered-class standard-attribute :in-layer #.(defining-description 'html-description) (html-attribute) ()) (define-layered-function display-html-attribute-label (object attribute) (:method (object attribute) (let ((label (attribute-label attribute))) (<:label :class "lol-attribute-label" (when label (<:as-html (with-output-to-string (*display*) (display-attribute-label object attribute)))))))) (define-layered-function display-html-attribute-value (object attribute) (:method (object attribute) (<:span :class "lol-attribute-value" (<:as-html (with-output-to-string (*display*) (display-attribute-value object attribute)))) )) (define-layered-function display-html-attribute (object attribute) (:method (object attribute) (<:div :class (attribute-css-class attribute) (when (attribute-dom-id attribute) :id (attribute-dom-id attribute)) (display-html-attribute-label object attribute) (display-html-attribute-value object attribute) (<:br))) (:method :in-layer #.(defining-description 'inline) (object attribute) (<:span :class (attribute-css-class attribute) (when (attribute-dom-id attribute) :id (attribute-dom-id attribute)) (display-html-attribute-label object attribute) (<:as-html " ") (display-html-attribute-value object attribute) (<:as-html " ")))) (define-layered-method display-html-attribute-value :in-layer #.(defining-description 'editable) (object attribute) (<:span :class "lol-attribute-value" (if (attribute-editp object attribute) (