From b54bf2bba4c7a72bf716189ba7b61d6f89dc0f04 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 2 Feb 2023 10:58:51 +0100 Subject: [PATCH] :paperclip: Add helpers for instrumenting vars --- backend/src/app/srepl/main.clj | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/backend/src/app/srepl/main.clj b/backend/src/app/srepl/main.clj index d9b03a099..c3b0fdf34 100644 --- a/backend/src/app/srepl/main.clj +++ b/backend/src/app/srepl/main.clj @@ -144,3 +144,23 @@ [system & {:as params}] (enable-objects-map-feature-on-file! system params) (enable-pointer-map-feature-on-file! system params)) + +(defn instrument-var + [var] + (alter-var-root var (fn [f] + (let [mf (meta f)] + (if (::original mf) + f + (with-meta + (fn [& params] + (tap> params) + (let [result (apply f params)] + (tap> result) + result)) + {::original f})))))) + +(defn uninstrument-var + [var] + (alter-var-root var (fn [f] + (or (::original (meta f)) f)))) +