-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
debug.clj
24 lines (21 loc) · 1020 Bytes
/
debug.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(ns toucan2.tools.debug
(:require
[toucan2.log :as log]
[toucan2.pipeline :as pipeline]))
(defn- print-result [message result]
(log/pprint-doc (log/->Doc [(log/->Text message) result]))
result)
(defn -debug [thunk]
(binding [pipeline/*build* (comp (partial print-result "\nBuilt:")
(let [build* pipeline/*build*]
(fn [query-type model parsed-args resolved-query]
(print-result "\nParsed args:" parsed-args)
(print-result "\nResolved query:" resolved-query)
(build* query-type model parsed-args resolved-query))))
pipeline/*compile* (comp (partial print-result "\nCompiled:") pipeline/*compile*)]
(thunk)))
(defmacro debug
"Simple debug macro. This is a placeholder until I come up with a more sophisticated version."
{:style/indent 0}
[& body]
`(-debug (^:once fn* [] ~@body)))