Add #:no-default-when option to parse-query-parameters

Where there are multiple interrelated fields, then it's useful to only apply
the default if another field hasn't been specified.
This commit is contained in:
Christopher Baines 2019-05-19 21:26:38 +01:00
parent 9f94e3278e
commit 0a7e6a76f3
1 changed files with 15 additions and 0 deletions

View File

@ -150,6 +150,21 @@
(() (cons name default))
(x (cons name x))))
((name processor #:no-default-when fields #:default default)
(let ((use-default?
(every (lambda (field)
(not (memq field fields)))
fields)))
(match (assq name request-query-parameters)
(#f (if use-default?
(cons name default)
#f))
((_ . "") (if use-default?
(cons name default)
#f))
((_ . value) (cons name
(processor value))))))
((name processor #:default default)
(match (assq name request-query-parameters)
(#f (cons name default))