diff --git a/src/main.lisp b/src/main.lisp index 6030a61..38dfade 100644 --- a/src/main.lisp +++ b/src/main.lisp @@ -3,8 +3,7 @@ (:use #:cl) (:import-from #:clack) (:import-from #:lack) - (:import-from #:hp/pages/**/* - #:*index-app*) + (:local-nicknames (#:pages #:hp/pages/**/*)) (:export #:start-app #:stop-app)) (in-package :hp) @@ -13,7 +12,7 @@ (defun start-app () (unless *handler* - (setf *handler* (clack:clackup (lack:builder *index-app*) + (setf *handler* (clack:clackup (lack:builder pages:*index-app*) :address "localhost" :port 3000)))) diff --git a/src/pages/index.lisp b/src/pages/index.lisp index e58db86..d0f8ad1 100644 --- a/src/pages/index.lisp +++ b/src/pages/index.lisp @@ -1,44 +1,42 @@ (defpackage #:hp/pages/index (:use #:cl) - (:import-from #:jingle) - (:import-from #:markup) - (:import-from #:hp/ui/layout - #:layout) - (:import-from #:hp/utils - #:render-html - #:register-routes) + (:local-nicknames (#:jg #:jingle)) + (:local-nicknames (#:mk #:markup)) + (:local-nicknames (#:ui #:hp/ui/*)) + (:local-nicknames (#:utils #:hp/utils/*)) (:export #:*index-app*)) (in-package #:hp/pages/index) -(markup:enable-reader) +(mk:enable-reader) (defparameter *counter* 0) -(markup:deftag counter (&key value) - <div id="counter">,(progn value)</div>) +(mk:deftag counter (&key id value) + <div id=id >,(progn value)</div>) (defun index-page (params) (declare (ignore params)) - (render-html - <layout> - <counter value=*counter* /> - <button hx-target="#counter" hx-post="/decrease"> - </button> - <button hx-target="#counter" hx-post="/increase"> + </button> - </layout>)) + (jg:with-html-response + (mk:write-html + <ui:layout> + <counter id="counter" value=*counter* /> + <button hx-target="#counter" hx-post="/decrease"> - </button> + <button hx-target="#counter" hx-post="/increase"> + </button> + </ui:layout>))) (defun increase (params) (declare (ignore params)) - (render-html - <counter value=(incf *counter*) />)) + (jg:with-html-response + (mk:write-html <counter id="counter" value=(incf *counter*) />))) (defun decrease (params) (declare (ignore params)) - (render-html - <counter value=(decf *counter*) />)) + (jg:with-html-response + (mk:write-html <counter id= "counter" value=(decf *counter*) />))) -(defparameter *index-app* (jingle:make-app)) +(defparameter *index-app* (jg:make-app)) -(register-routes +(utils:register-routes *index-app* `((:method :GET :path "/" :handler ,#'index-page) (:method :POST :path "/increase" :handler ,#'increase) diff --git a/src/ui/layout.lisp b/src/ui/layout.lisp index 25c7b96..b6c30cb 100644 --- a/src/ui/layout.lisp +++ b/src/ui/layout.lisp @@ -1,12 +1,12 @@ (defpackage #:hp/ui/layout (:use #:cl) - (:import-from #:markup) + (:local-nicknames (#:mk #:markup)) (:export #:layout)) (in-package #:hp/ui/layout) (markup:enable-reader) -(markup:deftag layout (children) +(mk:deftag layout (children) <html> <head> <title>skyizwhite.dev</title> diff --git a/src/utils.lisp b/src/utils.lisp deleted file mode 100644 index abd097e..0000000 --- a/src/utils.lisp +++ /dev/null @@ -1,19 +0,0 @@ -(defpackage #:hp/utils - (:use #:cl) - (:import-from #:markup) - (:import-from #:jingle) - (:export #:register-routes - #:render-html)) -(in-package #:hp/utils) - -(defun register-routes (app routes) - (loop :for item :in routes - :for path = (getf item :path) - :for handler = (getf item :handler) - :for method = (getf item :method) - :do (setf (jingle:route app path :method method) handler))) - -(defmacro render-html (&body body) - `(jingle:with-html-response - (markup:write-html - ,@body))) diff --git a/src/utils/routes.lisp b/src/utils/routes.lisp new file mode 100644 index 0000000..a713393 --- /dev/null +++ b/src/utils/routes.lisp @@ -0,0 +1,12 @@ +(defpackage #:hp/utils/routes + (:use #:cl) + (:local-nicknames (#:jg #:jingle)) + (:export #:register-routes)) +(in-package #:hp/utils/routes) + +(defun register-routes (app routes) + (loop :for item :in routes + :for path = (getf item :path) + :for handler = (getf item :handler) + :for method = (getf item :method) + :do (setf (jg:route app path :method method) handler)))