File tree Expand file tree Collapse file tree 3 files changed +23
-5
lines changed
main/clojure/clojure/tools/namespace
test/clojure/clojure/tools/namespace Expand file tree Collapse file tree 3 files changed +23
-5
lines changed Original file line number Diff line number Diff line change 89
89
([dir] (find-ns-decls-in-dir dir nil ))
90
90
([dir platform]
91
91
(keep #(ignore-reader-exception
92
- (let [[_ nom & more] (file/read-file-ns-decl % (:read-opts platform))]
93
- (list* 'ns (with-meta nom
94
- {:dir (.getName ^java.io.File dir) :file (.getName ^java.io.File %)})
95
- more)))
92
+ (let [[_ nom & more :as decl] (file/read-file-ns-decl % (:read-opts platform))]
93
+ (when (and decl nom (symbol? nom))
94
+ (list* 'ns (with-meta nom
95
+ {:dir (.getName ^java.io.File dir) :file (.getName ^java.io.File %)})
96
+ more))))
96
97
(find-sources-in-dir dir platform))))
97
98
98
99
(defn find-namespaces-in-dir
Original file line number Diff line number Diff line change 33
33
main-clj (help/create-source dir 'example.main :clj '[example.one])
34
34
one-cljc (help/create-source dir 'example.one :cljc '[example.two])
35
35
two-clj (help/create-source dir 'example.two :clj )
36
- two-cljs (help/create-source dir 'example.two :cljs )]
36
+ two-cljs (help/create-source dir 'example.two :cljs )
37
+ headless-clj (help/create-headless-source dir 'example.headless :clj )]
37
38
(is (every? #{(.getName ^java.io.File dir)}
38
39
(map #(-> % second meta :dir )
39
40
(find/find-ns-decls [dir]))))))
Original file line number Diff line number Diff line change 73
73
(list 'ns sym))]
74
74
(create-file full-path (into [ns-decl] contents)))))
75
75
76
+ (defn create-headless-source
77
+ " Creates a file at the correct path under base-dir for a file that
78
+ declares in-ns for namespace named sym, with file extension (keyword)
79
+ and will also require the dependencies (symbols). Optional contents
80
+ written after the ns declaration as by write-contents."
81
+ ([base-dir sym extension]
82
+ (create-headless-source base-dir sym extension nil nil ))
83
+ ([base-dir sym extension dependencies]
84
+ (create-headless-source base-dir sym extension dependencies nil ))
85
+ ([base-dir sym extension dependencies contents]
86
+ (let [full-path (into [base-dir] (source-path sym extension))
87
+ ins-decl (list 'in-ns (list 'quote sym))
88
+ deps-decl (when (seq dependencies)
89
+ (map #(list 'require `(quote ~%)) dependencies))]
90
+ (create-file full-path (filter identity (concat [ins-decl] deps-decl contents))))))
91
+
76
92
(defn same-files?
77
93
" True if files-a and files-b contain the same canonical File's,
78
94
regardless of order."
You can’t perform that action at this time.
0 commit comments