(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)
(