Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.78 KB | None | 0 0
  1. (defmacro with-post-params (params &body body)
  2.   (let ((payload-assoc (gensym)))
  3.     `(let ((,payload-assoc (url-decode-params (payload-as-string))))
  4.        (let ,(loop for param in params
  5.            collect `(,param (cdr (assoc (symbol-name ',param)
  6.                         ,payload-assoc
  7.                         :test #'string-equal))))
  8.      ,@body))))
  9.  
  10. (with-post-params (name age sex)
  11.   (format t "L'age de ~a (~a) est ~a ans" name age sex))
  12.  
  13. ;; Si j'expand ma macro, j'obtiens:
  14. (LET ((#:G831 (URL-DECODE-PARAMS (PAYLOAD-AS-STRING))))
  15.   (LET ((NAME (CDR (ASSOC (SYMBOL-NAME 'NAME) #:G831 :TEST #'STRING-EQUAL)))
  16.         (AGE (CDR (ASSOC (SYMBOL-NAME 'AGE) #:G831 :TEST #'STRING-EQUAL)))
  17.         (SEX (CDR (ASSOC (SYMBOL-NAME 'SEX) #:G831 :TEST #'STRING-EQUAL))))
  18.     (FORMAT T "L'age de ~a (~a) est ~a ans" NAME AGE SEX)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement