Improved handling of clojurescrpt files...
* Find all processable files in one pass to preserve order. * Added .cljx to the set of processable file extensions. * Use set as predicate instead of regex. Maybe down the road this set could be configured by users in their project.clj files?
This commit is contained in:
parent
56a9e6a004
commit
275b470eec
1 changed files with 22 additions and 12 deletions
|
@ -74,12 +74,24 @@
|
||||||
[path]
|
[path]
|
||||||
(.isDirectory (java.io.File. path)))
|
(.isDirectory (java.io.File. path)))
|
||||||
|
|
||||||
|
(defn find-file-extension
|
||||||
|
"Returns a string containing the files extension."
|
||||||
|
[^java.io.File file]
|
||||||
|
(second (re-find #"\.([^.]+)$" (.getName file))))
|
||||||
|
|
||||||
|
(defn processable-file?
|
||||||
|
"Predicate. Returns true for \"normal\" files with a file extension which
|
||||||
|
passes the provided predicate."
|
||||||
|
[pred ^java.io.File file]
|
||||||
|
(when (.isFile file)
|
||||||
|
(-> file find-file-extension pred)))
|
||||||
|
|
||||||
(defn find-processable-file-paths
|
(defn find-processable-file-paths
|
||||||
"Returns a seq of clojure file paths (strings) in alphabetical order."
|
"Returns a seq of processable file paths (strings) in alphabetical order."
|
||||||
[dir matching-re]
|
[dir pred]
|
||||||
(->> (io/file dir)
|
(->> (io/file dir)
|
||||||
(file-seq)
|
(file-seq)
|
||||||
(filter #(re-find matching-re (.getCanonicalPath %)))
|
(filter (partial processable-file? pred))
|
||||||
(map #(.getCanonicalPath %))
|
(map #(.getCanonicalPath %))
|
||||||
(sort)))
|
(sort)))
|
||||||
|
|
||||||
|
@ -202,20 +214,18 @@
|
||||||
;; These functions support Marginalia's use by client software or command-line
|
;; These functions support Marginalia's use by client software or command-line
|
||||||
;; users.
|
;; users.
|
||||||
|
|
||||||
|
(def ^:private file-extensions #{"clj" "cljs" "cljx"})
|
||||||
|
|
||||||
(defn format-sources
|
(defn format-sources
|
||||||
"Given a collection of filepaths, returns a lazy sequence of filepaths to
|
"Given a collection of filepaths, returns a lazy sequence of filepaths to all
|
||||||
all .clj files on those paths: directory paths will be searched recursively
|
.clj, .cljs, and .cljx files on those paths: directory paths will be searched
|
||||||
for .clj files."
|
recursively for files."
|
||||||
[sources]
|
[sources]
|
||||||
(if (nil? sources)
|
(if (nil? sources)
|
||||||
(concat
|
(find-processable-file-paths "./src" file-extensions)
|
||||||
(find-processable-file-paths "./src" #"\.clj$")
|
|
||||||
(find-processable-file-paths "./src" #"\.cljs$"))
|
|
||||||
(->> sources
|
(->> sources
|
||||||
(mapcat #(if (dir? %)
|
(mapcat #(if (dir? %)
|
||||||
(concat
|
(find-processable-file-paths % file-extensions)
|
||||||
(find-processable-file-paths % #"\.clj$")
|
|
||||||
(find-processable-file-paths % #"\.cljs$"))
|
|
||||||
[(.getCanonicalPath (io/file %))])))))
|
[(.getCanonicalPath (io/file %))])))))
|
||||||
|
|
||||||
(defn split-deps [deps]
|
(defn split-deps [deps]
|
||||||
|
|
Loading…
Reference in a new issue