website/src/renderer.lisp
2025-05-04 01:28:40 +09:00

32 lines
1.3 KiB
Common Lisp

(defpackage #:website/renderer
(:use #:cl
#:hsx
#:jingle)
(:import-from #:hsx/element
#:element)
(:import-from #:website/lib/env
#:website-env)
(:import-from #:website/components/metadata
#:~metadata)
(:import-from #:website/components/scripts
#:~scripts)
(:import-from #:website/components/layout
#:~layout))
(in-package #:website/renderer)
(defmethod jingle:process-response ((app jingle:app) result)
(set-response-header :content-type "text/html; charset=utf-8")
(when (eq (request-method *request*) :get)
(set-response-header :cache-control (if (string= (website-env) "dev")
"private, no-store"
"public, max-age=60")))
(call-next-method app
(render-to-string
(hsx (html :lang "ja"
(head
(~metadata :metadata (context :metadata))
(~scripts))
(body
:hx-ext "head-support, response-targets"
:hx-boost "true" :hx-target-404 "body" :hx-target-5* "body"
(~layout result)))))))