[update] use :local-nicknames to import package
This commit is contained in:
parent
48c1dbd097
commit
d62ff175dd
5 changed files with 36 additions and 46 deletions
src
|
@ -3,8 +3,7 @@
|
||||||
(:use #:cl)
|
(:use #:cl)
|
||||||
(:import-from #:clack)
|
(:import-from #:clack)
|
||||||
(:import-from #:lack)
|
(:import-from #:lack)
|
||||||
(:import-from #:hp/pages/**/*
|
(:local-nicknames (#:pages #:hp/pages/**/*))
|
||||||
#:*index-app*)
|
|
||||||
(:export #:start-app
|
(:export #:start-app
|
||||||
#:stop-app))
|
#:stop-app))
|
||||||
(in-package :hp)
|
(in-package :hp)
|
||||||
|
@ -13,7 +12,7 @@
|
||||||
|
|
||||||
(defun start-app ()
|
(defun start-app ()
|
||||||
(unless *handler*
|
(unless *handler*
|
||||||
(setf *handler* (clack:clackup (lack:builder *index-app*)
|
(setf *handler* (clack:clackup (lack:builder pages:*index-app*)
|
||||||
:address "localhost"
|
:address "localhost"
|
||||||
:port 3000))))
|
:port 3000))))
|
||||||
|
|
||||||
|
|
|
@ -1,44 +1,42 @@
|
||||||
(defpackage #:hp/pages/index
|
(defpackage #:hp/pages/index
|
||||||
(:use #:cl)
|
(:use #:cl)
|
||||||
(:import-from #:jingle)
|
(:local-nicknames (#:jg #:jingle))
|
||||||
(:import-from #:markup)
|
(:local-nicknames (#:mk #:markup))
|
||||||
(:import-from #:hp/ui/layout
|
(:local-nicknames (#:ui #:hp/ui/*))
|
||||||
#:layout)
|
(:local-nicknames (#:utils #:hp/utils/*))
|
||||||
(:import-from #:hp/utils
|
|
||||||
#:render-html
|
|
||||||
#:register-routes)
|
|
||||||
(:export #:*index-app*))
|
(:export #:*index-app*))
|
||||||
(in-package #:hp/pages/index)
|
(in-package #:hp/pages/index)
|
||||||
|
|
||||||
(markup:enable-reader)
|
(mk:enable-reader)
|
||||||
|
|
||||||
(defparameter *counter* 0)
|
(defparameter *counter* 0)
|
||||||
|
|
||||||
(markup:deftag counter (&key value)
|
(mk:deftag counter (&key id value)
|
||||||
<div id="counter">,(progn value)</div>)
|
<div id=id >,(progn value)</div>)
|
||||||
|
|
||||||
(defun index-page (params)
|
(defun index-page (params)
|
||||||
(declare (ignore params))
|
(declare (ignore params))
|
||||||
(render-html
|
(jg:with-html-response
|
||||||
<layout>
|
(mk:write-html
|
||||||
<counter value=*counter* />
|
<ui:layout>
|
||||||
<button hx-target="#counter" hx-post="/decrease"> - </button>
|
<counter id="counter" value=*counter* />
|
||||||
<button hx-target="#counter" hx-post="/increase"> + </button>
|
<button hx-target="#counter" hx-post="/decrease"> - </button>
|
||||||
</layout>))
|
<button hx-target="#counter" hx-post="/increase"> + </button>
|
||||||
|
</ui:layout>)))
|
||||||
|
|
||||||
(defun increase (params)
|
(defun increase (params)
|
||||||
(declare (ignore params))
|
(declare (ignore params))
|
||||||
(render-html
|
(jg:with-html-response
|
||||||
<counter value=(incf *counter*) />))
|
(mk:write-html <counter id="counter" value=(incf *counter*) />)))
|
||||||
|
|
||||||
(defun decrease (params)
|
(defun decrease (params)
|
||||||
(declare (ignore params))
|
(declare (ignore params))
|
||||||
(render-html
|
(jg:with-html-response
|
||||||
<counter value=(decf *counter*) />))
|
(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*
|
*index-app*
|
||||||
`((:method :GET :path "/" :handler ,#'index-page)
|
`((:method :GET :path "/" :handler ,#'index-page)
|
||||||
(:method :POST :path "/increase" :handler ,#'increase)
|
(:method :POST :path "/increase" :handler ,#'increase)
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
(defpackage #:hp/ui/layout
|
(defpackage #:hp/ui/layout
|
||||||
(:use #:cl)
|
(:use #:cl)
|
||||||
(:import-from #:markup)
|
(:local-nicknames (#:mk #:markup))
|
||||||
(:export #:layout))
|
(:export #:layout))
|
||||||
(in-package #:hp/ui/layout)
|
(in-package #:hp/ui/layout)
|
||||||
|
|
||||||
(markup:enable-reader)
|
(markup:enable-reader)
|
||||||
|
|
||||||
(markup:deftag layout (children)
|
(mk:deftag layout (children)
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>skyizwhite.dev</title>
|
<title>skyizwhite.dev</title>
|
||||||
|
|
|
@ -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)))
|
|
12
src/utils/routes.lisp
Normal file
12
src/utils/routes.lisp
Normal file
|
@ -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)))
|
Loading…
Add table
Add a link
Reference in a new issue