diff --git a/app/demo/main.lisp b/app/demo/main.lisp
index 4a56c72..75757b4 100644
--- a/app/demo/main.lisp
+++ b/app/demo/main.lisp
@@ -13,12 +13,23 @@
(in-package :scopes/app/demo)
+(defvar *quit-queue* (lparallel.queue:make-queue :fixed-capacity 1))
+
(defun main()
+ ;(setf (trivial-signal:signal-handler :int) #'quit-handler)
+ ;(setf (trivial-signal:signal-handler :term) #'quit-handler)
(let ((config-path (util:relative-path "config" "etc")))
(format t "~%Hello World.~%config-path: ~s~%" config-path)
(load config-path))
- (core:setup-services)
- ;(setf forge:*forge-env* (forge:forge-env))
- ;(forge:setup-builtins)
- (forge:repl)
- (core:shutdown))
+ (unwind-protect
+ (progn
+ (core:setup-services)
+ ;(setf forge:*forge-env* (forge:forge-env))
+ ;(forge:setup-builtins)
+ ;(forge:repl)
+ (lparallel.queue:pop-queue *quit-queue*))
+ (core:shutdown)))
+
+(defun quit-handler (sig)
+ (format t "~%quit-handler: got signal ~s~%" sig)
+ (lparallel.queue:push-queue sig))
diff --git a/app/demo/scopes-demo.asd b/app/demo/scopes-demo.asd
index 664916b..e5d5206 100644
--- a/app/demo/scopes-demo.asd
+++ b/app/demo/scopes-demo.asd
@@ -6,7 +6,7 @@
:version "0.0.1"
:homepage "https://www.cyberconcepts.org"
:description ""
- :depends-on (:scopes)
+ :depends-on (:scopes :lparallel :trivial-signal)
:components ((:file "main"))
:build-operation "program-op"
:build-pathname "bin/demo"
diff --git a/test/test-web.lisp b/test/test-web.lisp
index cb5b9a3..9cd2c9c 100644
--- a/test/test-web.lisp
+++ b/test/test-web.lisp
@@ -47,8 +47,7 @@
(format nil
"Link to example.com"))
- (== (dom:render (dom:br nil))
- (format nil "
")))
+ (== (dom:render (dom:br)) (format nil "
")))
(deftest test-jwt ()
(let ((secret (crypt:create-secret))
diff --git a/web/dom.lisp b/web/dom.lisp
index 106f0b1..794a3ac 100644
--- a/web/dom.lisp
+++ b/web/dom.lisp
@@ -49,8 +49,7 @@
(defmethod put ((el element))
(let ((tag (tagname el)))
(start tag (attrs el))
- (dolist (c (body el))
- (put c))
+ (put (body el))
(end tag)))
(defun elem (tag &optional attrs body)
@@ -74,7 +73,7 @@
(defmacro make-elements (tags &optional (elem-fn 'elem))
`(progn
,@(mapcar (lambda (tag) ;`(make-element ,tag)) tags)))
- `(defun ,tag (attrs &rest body)
+ `(defun ,tag (&optional attrs &rest body)
(funcall (function ,elem-fn) ',tag attrs body)))
tags)))