Skip to content

Commit 3d197f1

Browse files
committed
Extract namespace-aliases-for
1 parent e5ba9a9 commit 3d197f1

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

src/refactor_nrepl/ns/libspecs.clj

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,33 @@
9595
(apply dissoc possible-aliases)
9696
(merge-with into project-aliases))))
9797

98+
;; `namespace-aliases-for` was split out from `namespace-aliases`, for a 3rd-party need.
99+
;; `namespace-aliases-for` is a little more fine-grained, since it accepts files rather than dirs.
100+
(defn namespace-aliases-for [files ignore-errors?]
101+
;; pmap parallelizes a couple things:
102+
;; - `pred`, which is IO-intensive
103+
;; - `aliases-by-frequencies`, which is moderately CPU-intensive
104+
(let [[clj-aliases cljs-aliases] (pmap (fn [[dialect pred] corpus]
105+
(->> corpus
106+
(filter pred)
107+
(keep (comp (fn [v]
108+
(or v
109+
;; nullify `false` values for `keep`:
110+
nil))
111+
(util/with-suppressed-errors
112+
(partial get-libspec-from-file-with-caching dialect)
113+
ignore-errors?)))
114+
aliases-by-frequencies))
115+
[[:clj (util/with-suppressed-errors
116+
(some-fn core/clj-file? core/cljc-file?)
117+
ignore-errors?)]
118+
[:cljs (util/with-suppressed-errors
119+
(some-fn core/cljs-file? core/cljc-file?)
120+
ignore-errors?)]]
121+
(repeat files))]
122+
{:clj clj-aliases
123+
:cljs cljs-aliases}))
124+
98125
(defn namespace-aliases
99126
"Returns a map of file type to a map of aliases to namespaces
100127
@@ -110,29 +137,7 @@
110137
([ignore-errors? dirs include-tentative-aliases?]
111138
(let [;; fetch the file list just once (as opposed to traversing the project once for each dialect)
112139
files (core/source-files-with-clj-like-extension ignore-errors? dirs)
113-
;; pmap parallelizes a couple things:
114-
;; - `pred`, which is IO-intensive
115-
;; - `aliases-by-frequencies`, which is moderately CPU-intensive
116-
[clj-aliases cljs-aliases] (pmap (fn [[dialect pred] corpus]
117-
(->> corpus
118-
(filter pred)
119-
(keep (comp (fn [v]
120-
(or v
121-
;; nullify `false` values for `keep`:
122-
nil))
123-
(util/with-suppressed-errors
124-
(partial get-libspec-from-file-with-caching dialect)
125-
ignore-errors?)))
126-
aliases-by-frequencies))
127-
[[:clj (util/with-suppressed-errors
128-
(some-fn core/clj-file? core/cljc-file?)
129-
ignore-errors?)]
130-
[:cljs (util/with-suppressed-errors
131-
(some-fn core/cljs-file? core/cljc-file?)
132-
ignore-errors?)]]
133-
(repeat files))
134-
project-aliases {:clj clj-aliases
135-
:cljs cljs-aliases}]
140+
project-aliases (namespace-aliases-for files ignore-errors?)]
136141
(cond-> project-aliases
137142
include-tentative-aliases? (update :clj add-tentative-aliases :clj files ignore-errors?)
138143
include-tentative-aliases? (update :cljs add-tentative-aliases :cljs files ignore-errors?)))))

0 commit comments

Comments
 (0)