src/middleware/core.lisp @ 330b6240a25c
Kill the hash printer
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Wed, 07 Sep 2016 11:36:48 +0000 |
| parents | 3e9db801d234 |
| children | 919ebd924aac |
(in-package #:nrepl) (defvar *middleware* (fset:empty-map)) (defmacro handle-op (message op fallback &rest body) `(if (equal ,op (fset:lookup ,message "op")) (progn ,@body) (funcall ,fallback ,message))) (defmacro define-middleware (name op message-binding &body body) "Define a middleware at the symbol `name` to handle `op`. As the body is executing `message-binding` will be bound to the message map. " (let ((fallback (gensym))) `(defun ,name (,fallback) (lambda (,message-binding) (handle-op ,message-binding ,op ,fallback ,@body)))))