mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-17 01:51:10 +00:00
[new] Add base-opts arg to impl signal creator
This commit is contained in:
parent
46e82f0816
commit
e32ed8deb5
2 changed files with 204 additions and 200 deletions
|
|
@ -242,7 +242,7 @@
|
||||||
(truss/keep-callsite
|
(truss/keep-callsite
|
||||||
`(impl/signal! ~(args->opts args)))))
|
`(impl/signal! ~(args->opts args)))))
|
||||||
|
|
||||||
(comment (:coords (with-signal (signal!))))
|
(comment (:coords (macroexpand '(with-signal (signal!)))))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(defn- merge-or-assoc-opts [m macro-form k v]
|
(defn- merge-or-assoc-opts [m macro-form k v]
|
||||||
|
|
|
||||||
|
|
@ -511,9 +511,11 @@
|
||||||
(defmacro signal-allowed?
|
(defmacro signal-allowed?
|
||||||
"Returns true iff signal with given opts would meet filtering conditions.
|
"Returns true iff signal with given opts would meet filtering conditions.
|
||||||
Wrapped for public API."
|
Wrapped for public API."
|
||||||
[opts]
|
([ opts] (truss/keep-callsite `(signal-allowed? nil ~opts)))
|
||||||
(valid-opts! opts)
|
([base-opts opts]
|
||||||
(let [opts (merge {:kind :generic, :level :info} opts)
|
(valid-opts! (or base-opts {}))
|
||||||
|
(valid-opts! (or opts {}))
|
||||||
|
(let [opts (merge {:kind :generic, :level :info} base-opts opts)
|
||||||
{:keys [#_callsite-id elide? allow?]}
|
{:keys [#_callsite-id elide? allow?]}
|
||||||
(sigs/filter-call
|
(sigs/filter-call
|
||||||
{:cljs? (boolean (:ns &env))
|
{:cljs? (boolean (:ns &env))
|
||||||
|
|
@ -523,19 +525,21 @@
|
||||||
(assoc opts
|
(assoc opts
|
||||||
:ns (auto-> (get opts :ns :auto) (str *ns*))))]
|
:ns (auto-> (get opts :ns :auto) (str *ns*))))]
|
||||||
|
|
||||||
(if elide? false `(if ~allow? true false)))))
|
(if elide? false `(if ~allow? true false))))))
|
||||||
|
|
||||||
(comment (macroexpand '(signal-allowed? {:level :info})))
|
(comment (macroexpand '(signal-allowed? {:level :info})))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(defmacro signal!
|
(defmacro signal!
|
||||||
"Generic low-level signal creator. Wrapped for public API."
|
"Generic low-level signal creator. Wrapped for public API."
|
||||||
[opts]
|
([ opts] (truss/keep-callsite `(signal!? nil ~opts)))
|
||||||
(valid-opts! opts)
|
([base-opts opts]
|
||||||
|
(valid-opts! (or base-opts {}))
|
||||||
|
(valid-opts! (or opts {}))
|
||||||
(let [cljs? (boolean (:ns &env))
|
(let [cljs? (boolean (:ns &env))
|
||||||
clj? (not cljs?)
|
clj? (not cljs?)
|
||||||
|
|
||||||
opts (merge {:kind :generic, :level :info} opts)
|
opts (merge {:kind :generic, :level :info} base-opts opts)
|
||||||
{run-form :run} opts
|
{run-form :run} opts
|
||||||
|
|
||||||
ns-form* (get opts :ns :auto)
|
ns-form* (get opts :ns :auto)
|
||||||
|
|
@ -766,7 +770,7 @@
|
||||||
(if-let [iife-wrap? true #_cljs?]
|
(if-let [iife-wrap? true #_cljs?]
|
||||||
;; Small perf hit to improve compatibility within `go` and other IOC-style bodies
|
;; Small perf hit to improve compatibility within `go` and other IOC-style bodies
|
||||||
`((fn [] ~final-form))
|
`((fn [] ~final-form))
|
||||||
(do final-form)))))))
|
(do final-form))))))))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
(with-signal (signal! {:level :warn :let [x :x] :msg ["Test" "message" x] :data {:a :A :x x} :run (+ 1 2)}))
|
(with-signal (signal! {:level :warn :let [x :x] :msg ["Test" "message" x] :data {:a :A :x x} :run (+ 1 2)}))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue