aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Albers Raviola <thomas@thomaslabs.org>2024-10-14 23:39:55 +0200
committerThomas Albers Raviola <thomas@thomaslabs.org>2024-10-14 23:39:55 +0200
commit1be9ab5f5a929153b4a8193f6c12bab45fd00ab2 (patch)
tree4862ab90b5d2fb976ce5d1a07e02fa09e43c083c
parent1014236db9ca98612ea3fdcdf1f074e3855a446c (diff)
Fix issues with query and fragment binding
-rw-r--r--src/routes.lisp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/routes.lisp b/src/routes.lisp
index 8303b14..272d579 100644
--- a/src/routes.lisp
+++ b/src/routes.lisp
@@ -79,15 +79,13 @@
((not slot)
(error ""))
((symbolp slot)
- `(,slot (assoc-value ,alist ',(symbol-name slot)
- :test #'string-equal)))
+ `((,slot (assoc-value ,alist ',(symbol-name slot)
+ :test #'string-equal))))
((listp slot)
(destructuring-bind (var &key init-form name suppliedp)
slot
- `(,var (or (assoc-value ,alist ',name :test #'equal)
- ,(if suppliedp
- `(progn (setf ,suppliedp t) ,init-form)
- init-form)))))
+ `(,@(if suppliedp `((,suppliedp t)) '())
+ (,var (or (assoc-value ,alist ',name :test #'equal) ,init-form)))))
(t
(error ""))))
@@ -100,9 +98,8 @@
((listp slot)
(destructuring-bind (var &optional init-form suppliedp)
slot
- `((,var (or ,value ,(if suppliedp
- `(progn (setf ,suppliedp t) ,init-form)
- init-form))))))
+ `(,@(if suppliedp `((,suppliedp t)) '())
+ (,var (or ,value ,init-form)))))
(t
(error ""))))
@@ -158,8 +155,8 @@ route handles different methods."
(let (,@(append
(mapcar (rcurry #'path-binding path-alist)
(remove-if-not #'symbolp path))
- (mapcar (rcurry #'query-binding query-alist)
- query)
+ (mappend (rcurry #'query-binding query-alist)
+ query)
(fragment-binding fragment fragment-value)
(if headers `((,headers ,headers-value)) '())))
,@body))))))