Open ryrobes opened 1 year ago
If my understanding about your question is right, the answer might be as follows.
https://github.com/philoskim/debux#81-dbg-inside-dbgn-or-vice-versa
dbg
can be used selectively inside dbgn
like this, if you want to avoid printing a deeply nested structure inside dbgn
.
(let [a 10 b 9 c 8 d 7 e 6 f 5 g 4 h 3]
(dbgn (* a b (dbg (+ c d (- e f (* g h)))))))
; => 360
The above dbg
will prevent dbgn
from printing (+ c d (- e f (* g h))))
recursively.
REPL output
{:ns example.demo, :line 15}
dbgn: (* a b (+ c d (- e f (* g h)))) =>
| a =>
| 10
| b =>
| 9
|{:ns example.demo, :line 15}
|dbg: (+ c d (- e f (* g h))) =>
|| 4
| (* a b (dbg (+ c d (- e f (* g h))))) =>
| 360
If my answer is not what you expected, please show me a concrete example that you want in more detailed way!
Appreciate the response! No, I def want all the nested return forms... but let me give you an example.
If I am wrapping dbgn
over a form...
(use 'debux.core)
(dbgn (into {}
(clojure.core/map (fn [x]
(let [kk (keyword x)
vv (clojure.core/rand-int 123)]
{kk vv}))
["goose" "maverick" "iceman" "joker"])))
I'll get this in return:
{:ns user, :line 3}
dbgn: (into {} (clojure.core/map (fn [x] (let [kk (keyword x) vv (clojure.core/rand-int 123)] {kk vv})) ["goose" "maverick" "iceman" "joker"])) =>
| {} =>
| {}
| (fn [x] (clojure.core/binding [debux.common.util/*indent-level* (clojure.core/inc debux.common.util/*indent-level*)] (clojure.core/reset! (:evals +debux-dbg-opts+) {}) (debux.common.util/insert-blank-line) (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}))) =>
| #object[user$eval74563$result__779__auto____74566 0x34d2bfa9 "user$eval74563$result__779__auto____74566@34d2bfa9"]
| ["goose" "maverick" "iceman" "joker"] =>
| ["goose" "maverick" "iceman" "joker"]
|| x =>
|| "goose"
|| (keyword x) =>
|| :goose
|| (clojure.core/rand-int 123) =>
|| 37
|| {kk vv} =>
|| {:goose 37}
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}) =>
|| {:goose 37}
|| x =>
|| "maverick"
|| (keyword x) =>
|| :maverick
|| (clojure.core/rand-int 123) =>
|| 73
|| {kk vv} =>
|| {:maverick 73}
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}) =>
|| {:maverick 73}
|| x =>
|| "iceman"
|| (keyword x) =>
|| :iceman
|| (clojure.core/rand-int 123) =>
|| 121
|| {kk vv} =>
|| {:iceman 121}
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}) =>
|| {:iceman 121}
|| x =>
|| "joker"
|| (keyword x) =>
|| :joker
|| (clojure.core/rand-int 123) =>
|| 22
|| {kk vv} =>
|| {:joker 22}
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}) =>
|| {:joker 22}
| (clojure.core/map (fn [x] (clojure.core/binding [debux.common.util/*indent-level* (clojure.core/inc debux.common.util/*indent-level*)] (clojure.core/reset! (:evals +debux-dbg-opts+) {}) (debux.common.util/insert-blank-line) (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}))) ["goose" "maverick" "iceman" "joker"]) =>
| ({:goose 37} {:maverick 73} {:iceman 121} {:joker 22})
| (into {} (clojure.core/map (fn [x] (clojure.core/binding [debux.common.util/*indent-level* (clojure.core/inc debux.common.util/*indent-level*)] (clojure.core/reset! (:evals +debux-dbg-opts+) {}) (debux.common.util/insert-blank-line) (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}))) ["goose" "maverick" "iceman" "joker"])) =>
| {:goose 37, :maverick 73, :iceman 121, :joker 22}
Is it possible to get the forms back in the same fashion but without the injected debux wrappings?
i.e. return
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] {kk vv}) =>
|| {:goose 37}
instead of
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}) =>
|| {:goose 37}
or (less trivial to remove) return this
|| {kk vv} =>
|| {:joker 22}
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] {kk vv}) =>
|| {:joker 22}
| (clojure.core/map (fn [x] (let [kk (keyword x) vv (clojure.core/rand-int 123)] {kk vv}))) ["goose" "maverick" "iceman" "joker"]) =>
| ({:goose 37} {:maverick 73} {:iceman 121} {:joker 22})
| (into {} (clojure.core/map (fn [x] (let [kk (keyword x) vv (clojure.core/rand-int 123)] {kk vv}))) ["goose" "maverick" "iceman" "joker"])) =>
| {:goose 37, :maverick 73, :iceman 121, :joker 22}
instead of this
|| {kk vv} =>
|| {:joker 22}
|| (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}) =>
|| {:joker 22}
| (clojure.core/map (fn [x] (clojure.core/binding [debux.common.util/*indent-level* (clojure.core/inc debux.common.util/*indent-level*)] (clojure.core/reset! (:evals +debux-dbg-opts+) {}) (debux.common.util/insert-blank-line) (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}))) ["goose" "maverick" "iceman" "joker"]) =>
| ({:goose 37} {:maverick 73} {:iceman 121} {:joker 22})
| (into {} (clojure.core/map (fn [x] (clojure.core/binding [debux.common.util/*indent-level* (clojure.core/inc debux.common.util/*indent-level*)] (clojure.core/reset! (:evals +debux-dbg-opts+) {}) (debux.common.util/insert-blank-line) (let [kk (keyword x) vv (clojure.core/rand-int 123)] (debux.common.util/insert-blank-line) {kk vv}))) ["goose" "maverick" "iceman" "joker"])) =>
| {:goose 37, :maverick 73, :iceman 121, :joker 22}
Essentially returning the original source forms, sub-forms instead of mutated versions with embedded debux fns wrapped inside them? Hope that helps explain my question.
I'll fix this problem as soon as possible. Thanks for the report!
Hi, is there any way to avoid having the output include internal debux forms like wrapping
(clojure.core/binding [debux.common.util/*indent-level* (clojure.core/inc debux.common.util/*indent-level*)] (clojure.core/reset! (:evals +debux-dbg-opts+) {})
(or extrado
blocks) on to submitted sub-forms, etc - and just returning the orignals? Thanks!