I'm looking for all strings in our codebase at Metabase that need translations. To this end i'm doing
(s/def ::translate (s/and
(complement vector?)
(s/cat :translate-symbol (fn [x]
(and (symbol? x)
(#{"trs" "deferred-trs"
"tru" "deferred-tru"}
(name x))))
:args (s/+ any?))))
(I only just now realized I can resolve symbols for smarter matching but not relevant here). This spec works great and finds almost all usages. However I've found one that it does not find:
(defmacro ^:private deffingerprinter
[field-type transducer]
{:pre [(keyword? field-type)]}
(let [field-type [field-type :Semantic/* :Relation/*]]
`(defmethod fingerprinter ~field-type
[field#]
(with-error-handling
(with-global-fingerprinter
(redux/post-complete
~transducer
(fn [fingerprint#]
{:type {~(first field-type) fingerprint#}})))
(trs "Error generating fingerprint for {0}" (sync-util/name-for-logging field#))))))
I'm going to try to come up with a minimal reproduction because there's a lot going on.
(g/grasp "/Users/dan/projects/work/metabase/src/metabase/sync/analyze/fingerprint/fingerprinters.clj"
::translate)
;; misses the example above
[(deferred-trs "Error reducing {0}" (name k))]
Note I'm not expecting to find the usage at macro invocations and call sites, just in the literal form here which I would expect it to be able to descend into and match on the trs.
I'm looking for all strings in our codebase at Metabase that need translations. To this end i'm doing
(I only just now realized I can resolve symbols for smarter matching but not relevant here). This spec works great and finds almost all usages. However I've found one that it does not find:
I'm going to try to come up with a minimal reproduction because there's a lot going on.
Note I'm not expecting to find the usage at macro invocations and call sites, just in the literal form here which I would expect it to be able to descend into and match on the
trs.