annotate src/rlm/ns_rlm.clj @ 1:8565803376a4
upgrading source to work with clojure 1.4
author |
Robert McIntyre <rlm@mit.edu> |
date |
Tue, 28 Feb 2012 13:26:34 -0600 |
parents |
78a630e650d2 |
children |
|
rev |
line source |
rlm@0
|
1 (ns rlm.ns-rlm
|
rlm@1
|
2 "A few convienence functions for namespaces.")
|
rlm@0
|
3
|
rlm@0
|
4 (defn ns-clear
|
rlm@0
|
5 "completely removes all aliases, interns, and references from the namespace
|
rlm@0
|
6 works on *ns* if called with no arguments"
|
rlm@0
|
7 ([ns]
|
rlm@0
|
8 (let [ns (the-ns ns)]
|
rlm@0
|
9 (doall (map (partial ns-unmap ns) (keys (ns-map ns))))
|
rlm@0
|
10 (doall (map (partial ns-unalias ns) (keys (ns-aliases ns)))) nil))
|
rlm@0
|
11 ([] (ns-clear *ns*)))
|
rlm@0
|
12
|
rlm@0
|
13 (defn ns-clone-fn
|
rlm@1
|
14 "the calling namespace (*ns*) gets all the referenced vars as the
|
rlm@1
|
15 target namespace anything that the target namespace doesn't have,
|
rlm@1
|
16 ns won't have. Anything it does have, *ns* will have."
|
rlm@0
|
17 [target-ns]
|
rlm@0
|
18 (ns-clear *ns*)
|
rlm@1
|
19 (doall (map (fn [[ns-alias ns]]
|
rlm@1
|
20 (alias ns-alias (.name ns))) (ns-aliases target-ns)))
|
rlm@0
|
21 (doall (map (fn [[sym var]]
|
rlm@0
|
22 (cond (var? var)
|
rlm@0
|
23 (. *ns* (refer sym var))
|
rlm@0
|
24 (class? var)
|
rlm@0
|
25 (. *ns* (importClass var))))
|
rlm@0
|
26 ;;(eval `(clojure.core/import* ~(.getName var)))))
|
rlm@0
|
27 (ns-map target-ns))) nil)
|
rlm@0
|
28
|
rlm@1
|
29 ;; (defmacro ns-clone
|
rlm@1
|
30 ;; ([target-ns-name]
|
rlm@1
|
31 ;; `(do
|
rlm@1
|
32 ;; (require '~target-ns-name)
|
rlm@1
|
33 ;; (ns-clone-fn (get-ns '~target-ns-name)))))
|
rlm@0
|
34
|
rlm@0
|
35 (defn ls
|
rlm@0
|
36 "lists all the vars defined in the namespace"
|
rlm@1
|
37 ([ns] (doall (map println (keys (ns-interns ns)))) nil)
|
rlm@0
|
38 ([] (ls *ns*)))
|
rlm@0
|
39
|
rlm@0
|
40
|