(in-package :lisp-on-lines)
(export '(html-description) (find-package :lisp-on-lines))
(defvar *escape-html* t)
(defmethod generic-format ((display lol-ucw:component) string &rest args)
(<:as-html (with-output-to-string (stream)
(apply #'call-next-method stream string args))))
(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 attribute)))))))
(:method
:in-layer #.(defining-description 'inline)
(object attribute)
(let ((label (attribute-label attribute)))
(when label
(<:as-html
(with-output-to-string (*display*)
(display-attribute-label attribute)))))))
(define-layered-function display-html-attribute-value (object attribute)
(:method (object attribute)
(<:span
:class "lol-attribute-value"
(<:as-html
(display-attribute-value attribute))))
(:method
:in-layer #.(defining-description 'inline) (object attribute)
(display-attribute-value 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)))
(: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)
(display-html-attribute-value object attribute))))
(define-layered-method display-using-description
:in-layer #.(defining-description 'html-description)
:around ((attribute standard-attribute) display object &rest args)
(declare (ignore args))
(display-html-attribute object attribute))
(define-layered-method display-html-attribute-value
:in-layer #.(defining-description 'editable) (object attribute)
(<:span
:class "lol-attribute-value"
(if (attribute-editp object attribute)
(