diff options
author | colin <colin@cicadas.surf> | 2023-03-05 16:36:44 -0800 |
---|---|---|
committer | colin <colin@cicadas.surf> | 2023-03-05 16:36:44 -0800 |
commit | f7abccc38ceda7024ca375d34ed88f4fb561ef02 (patch) | |
tree | 432d6673e9e8d53b5fbc43e25a684b654f6dea1d /src/render.lisp | |
parent | 89d0d687992b41f7f0f9b0d3da19d9d587f06010 (diff) |
Reorganized codebase
Diffstat (limited to 'src/render.lisp')
-rw-r--r-- | src/render.lisp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/render.lisp b/src/render.lisp new file mode 100644 index 0000000..140e1ec --- /dev/null +++ b/src/render.lisp @@ -0,0 +1,23 @@ +;;;; render.lisp -- render protocol and tools + +(in-package :dnd) + +(defgeneric render (view object &key) + (:documentation "Render OBJECT as VIEW. VIEW could be anything, but it is intended to +be a keyword for usin in EQL method specializers.")) + +(defmacro defrender (view (spec &rest kwargs) &body body) + "A helper macro for defining specializations of render." + (let ((viewvar (gensym))) + `(defmethod render ((,viewvar ,(if (eq t view) t `(eql ,view))) ,spec &key ,@kwargs) + ,@body))) + +(defmacro with-page ((&key title) &body body) + "A helper macro fordefining some standard page boilerplate." + `(with-html-string + (:doctype) + (:html + (:head + (:title ,title)) + (:body + ,@body)))) |