From cf691411d76f8cc1466da4006f784d0ede2af6e7 Mon Sep 17 00:00:00 2001 From: paku <paku@skyizwhite.dev> Date: Fri, 19 Apr 2024 13:04:30 +0900 Subject: [PATCH] Improve view --- src/components/.keep | 0 .../document.lisp} | 21 ++++--------------- src/components/layout.lisp | 13 ++++++++++++ src/routes/about.lisp | 2 +- src/routes/index.lisp | 2 +- src/routes/not-found.lisp | 2 +- src/view.lisp | 19 +++++++++++++++++ 7 files changed, 39 insertions(+), 20 deletions(-) delete mode 100644 src/components/.keep rename src/{view/renderer.lisp => components/document.lisp} (62%) create mode 100644 src/components/layout.lisp create mode 100644 src/view.lisp diff --git a/src/components/.keep b/src/components/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/src/view/renderer.lisp b/src/components/document.lisp similarity index 62% rename from src/view/renderer.lisp rename to src/components/document.lisp index 0ffb2d6..f99b614 100644 --- a/src/view/renderer.lisp +++ b/src/components/document.lisp @@ -1,10 +1,8 @@ -(defpackage #:hp/view/renderer +(defpackage #:hp/components/document (:use #:cl) - (:local-nicknames (#:jg #:jingle)) (:local-nicknames (#:pi #:piccolo)) - (:export #:render - #:partial-render)) -(in-package #:hp/view/renderer) + (:export #:document)) +(in-package #:hp/components/document) (pi:define-element document (title description) (pi:h @@ -24,15 +22,4 @@ (meta :name "description" :content (or description "pakuの個人サイト"))) - (body :hx-ext "head-support" - (main pi:children))))) - -(defun render (page &key status metadata) - (jg:with-html-response - (and status (jg:set-response-status status)) - (pi:elem-str (document metadata page)))) - -(defun partial-render (component &key status) - (jg:with-html-response - (and status (jg:set-response-status status)) - (pi:elem-str component))) + pi:children))) diff --git a/src/components/layout.lisp b/src/components/layout.lisp new file mode 100644 index 0000000..15f22ed --- /dev/null +++ b/src/components/layout.lisp @@ -0,0 +1,13 @@ +(defpackage #:hp/components/layout + (:use #:cl) + (:local-nicknames (#:pi #:piccolo)) + (:export #:layout)) +(in-package #:hp/components/layout) + +(pi:define-element layout () + (pi:h + (body :hx-ext "head-support" + ; header + (main pi:children) + ; footer + ))) diff --git a/src/routes/about.lisp b/src/routes/about.lisp index 4bbbe77..18a5df8 100644 --- a/src/routes/about.lisp +++ b/src/routes/about.lisp @@ -1,7 +1,7 @@ (defpackage #:hp/routes/about (:use #:cl) (:local-nicknames (#:pi #:piccolo)) - (:local-nicknames (#:view #:hp/view/*)) + (:local-nicknames (#:view #:hp/view)) (:export #:handle-get)) (in-package #:hp/routes/about) diff --git a/src/routes/index.lisp b/src/routes/index.lisp index 857142f..69bd28d 100644 --- a/src/routes/index.lisp +++ b/src/routes/index.lisp @@ -1,7 +1,7 @@ (defpackage #:hp/routes/index (:use #:cl) (:local-nicknames (#:pi #:piccolo)) - (:local-nicknames (#:view #:hp/view/*)) + (:local-nicknames (#:view #:hp/view)) (:export #:handle-get)) (in-package #:hp/routes/index) diff --git a/src/routes/not-found.lisp b/src/routes/not-found.lisp index f6c7f31..3078a05 100644 --- a/src/routes/not-found.lisp +++ b/src/routes/not-found.lisp @@ -2,7 +2,7 @@ (:use #:cl) (:local-nicknames (#:jg #:jingle)) (:local-nicknames (#:pi #:piccolo)) - (:local-nicknames (#:view #:hp/view/*)) + (:local-nicknames (#:view #:hp/view)) (:export #:handle-not-found)) (in-package #:hp/routes/not-found) diff --git a/src/view.lisp b/src/view.lisp new file mode 100644 index 0000000..48d13c8 --- /dev/null +++ b/src/view.lisp @@ -0,0 +1,19 @@ +(defpackage #:hp/view + (:use #:cl) + (:local-nicknames (#:jg #:jingle)) + (:local-nicknames (#:pi #:piccolo)) + (:local-nicknames (#:cmp #:hp/components/*)) + (:export #:render + #:partial-render)) +(in-package #:hp/view) + +(defun render (page &key status metadata) + (jg:with-html-response + (and status (jg:set-response-status status)) + (pi:elem-str (cmp:document metadata + (cmp:layout page))))) + +(defun partial-render (component &key status) + (jg:with-html-response + (and status (jg:set-response-status status)) + (pi:elem-str component)))