Skip to content

Instantly share code, notes, and snippets.

@cemerick
Created November 8, 2013 02:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cemerick/7365536 to your computer and use it in GitHub Desktop.
Save cemerick/7365536 to your computer and use it in GitHub Desktop.
(ns clojure.tools.nrepl.middleware.bespoke-handlers)
(def ^:private handlers (atom {}))
(defn register-handler!
[op-name var]
(swap! handlers assoc op-name var))
(defn deregister-handler!
[op-name]
(swap! handlers dissoc op-name))
(defn bespoke-handlers
[h]
(fn [{:keys [op handler-var handler-op-name transport] :as msg}]
(if-let [handler (@handlers op)]
(handler msg)
(case op
"describe"
(reduce
;TODO
@handlers)
"register-handler"
(do
(register-handler! handler-op-name
(resolve (symbol handler-var)))
(t/send transport (response-for msg :status :done)))
"deregister-handler"
(do
(deregister-handler! handler-op-name)
(t/send transport (response-for msg :status :done)))
(h msg)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment