Plaster
New
List
Login
common-lisp
default
anonymous
2022.06.06 14:10:23
(defgeneric export-as-html (obj style) (:documentation "Exports OBJ as HTML. Style is an object, if nil just uses the class 'css") (:method-combination progn :most-specific-first)) (defmethod export-as-html :around (obj style) (spinneret:with-html-string (:div (call-next-method) (generate-css obj style)))) (defun %ez-html-pair (key val) (spinneret:with-html (:p :class "slot" key (:span :class "value" val)))) (defmethod export-as-html progn ((obj historic) (style css)) (spinneret:with-html (quick-accessors ((made-historic)) obj (%ez-html-pair "Made historic: " (timestamp->stream nil made-historic))))) (defmacro %export-as-html ((class mixin-name mixin-key)) `(defmethod export-as-html progn ((obj ,class) (style css)) (spinneret:with-html (quick-accessors ((,mixin-name)) obj (%ez-html-pair ,mixin-key ,mixin-name))))) (%export-as-html (has-name name "Name:")) (%export-as-html (has-subtitle subtitle "Subtitle: ")) (%export-as-html (has-description description "Description: ")) (%export-as-html (has-shipping shipping "Shipping: ")) (defmethod export-as-html progn ((obj has-locator) (style css)) (spinneret:with-html (quick-accessors ((locator)) obj (%ez-html-pair "Locator: " locator))))
Raw
Annotate
Repaste
Edit