aboutsummaryrefslogtreecommitdiff
path: root/macros.lisp
diff options
context:
space:
mode:
authorcolin <colin@cicadas.surf>2023-11-18 15:25:51 -0800
committercolin <colin@cicadas.surf>2023-11-18 15:25:51 -0800
commitc201a822f264041a1b9169824c0f9acbfae9cf6e (patch)
tree47ebbdfeaf4bc184a676537ec03637b3ec023c5d /macros.lisp
parent1d3d018f01ffb71dcdeaa086b3025a00428b45c1 (diff)
version 1.0
Diffstat (limited to 'macros.lisp')
-rw-r--r--macros.lisp49
1 files changed, 0 insertions, 49 deletions
diff --git a/macros.lisp b/macros.lisp
deleted file mode 100644
index 46ac4da..0000000
--- a/macros.lisp
+++ /dev/null
@@ -1,49 +0,0 @@
-;; Copyright (C) 2022 Colin Okay
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU Affero General Public License as
-;; published by the Free Software Foundation, either version 3 of the
-;; License, or (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;; GNU Affero General Public License for more details.
-
-;; You should have received a copy of the GNU Affero General Public License
-;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-;;;; macros.lisp --- utility macros
-
-
-(in-package :lazybones)
-
-(defmacro let-parameters ((&rest names) &body body)
- "NAMES is a list of symbols. Binds the names to the value of the
-request parameters whose keys compare string-equal to the symbol-name
-of each NAME, or NIL if there is no such parameter."
- (let ((params (gensym)))
- `(let ((,params (lazybones:request-parameters)))
- (let ,(loop for name in names
- for string-name = (symbol-name name)
- collect `(,name (cdr (assoc ,string-name ,params :test #'string-equal))))
- (declare (ignorable ,@names))
- ,@body))))
-
-(defmacro map-parameters ((&rest params) &body body)
- "PARAMS is a list of pairs (NAME PARSER). MAP-PARAMETERS behaves
-exactly like LET-PARAMETERS except that the values boudn to NAMEs are
-first mapped with the PARSER function."
- (assert (loop for (name parser) in params
- always (and (symbolp name)
- (or (symbolp parser) (functionp parser))))
- ()
- "Malformed PARAMS in MAP-PARAMETERS macro")
-
- (let ((names (mapcar #'car params)))
- `(let-parameters ,names
- (let ,(loop for name in names
- collect `(,name (when ,name (funcall ',(second (assoc name params)) ,name))))
- ,@body))))
-