From c201a822f264041a1b9169824c0f9acbfae9cf6e Mon Sep 17 00:00:00 2001 From: colin Date: Sat, 18 Nov 2023 15:25:51 -0800 Subject: version 1.0 --- macros.lisp | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 macros.lisp (limited to 'macros.lisp') 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 . - - -;;;; 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)))) - -- cgit v1.2.3