comparison 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
comparison
equal deleted inserted replaced
0:78a630e650d2 1:8565803376a4
1 (ns rlm.ns-rlm 1 (ns rlm.ns-rlm
2 "A few convienence functions for namespaces." 2 "A few convienence functions for namespaces.")
3 (:use [clojure.contrib [ns-utils :only [get-ns]]]))
4 3
5 (defn ns-clear 4 (defn ns-clear
6 "completely removes all aliases, interns, and references from the namespace 5 "completely removes all aliases, interns, and references from the namespace
7 works on *ns* if called with no arguments" 6 works on *ns* if called with no arguments"
8 ([ns] 7 ([ns]
10 (doall (map (partial ns-unmap ns) (keys (ns-map ns)))) 9 (doall (map (partial ns-unmap ns) (keys (ns-map ns))))
11 (doall (map (partial ns-unalias ns) (keys (ns-aliases ns)))) nil)) 10 (doall (map (partial ns-unalias ns) (keys (ns-aliases ns)))) nil))
12 ([] (ns-clear *ns*))) 11 ([] (ns-clear *ns*)))
13 12
14 (defn ns-clone-fn 13 (defn ns-clone-fn
15 "the calling namespace (*ns*) gets all the referenced vars as the target namespace 14 "the calling namespace (*ns*) gets all the referenced vars as the
16 anything that the target namespace doesn't have, ns won't have. Anything it does 15 target namespace anything that the target namespace doesn't have,
17 have, *ns* will have." 16 ns won't have. Anything it does have, *ns* will have."
18 [target-ns] 17 [target-ns]
19 (ns-clear *ns*) 18 (ns-clear *ns*)
20 (doall (map (fn [[ns-alias ns]] (alias ns-alias (.name ns))) (ns-aliases target-ns))) 19 (doall (map (fn [[ns-alias ns]]
20 (alias ns-alias (.name ns))) (ns-aliases target-ns)))
21 (doall (map (fn [[sym var]] 21 (doall (map (fn [[sym var]]
22 (cond (var? var) 22 (cond (var? var)
23 (. *ns* (refer sym var)) 23 (. *ns* (refer sym var))
24 (class? var) 24 (class? var)
25 (. *ns* (importClass var)))) 25 (. *ns* (importClass var))))
26 ;;(eval `(clojure.core/import* ~(.getName var))))) 26 ;;(eval `(clojure.core/import* ~(.getName var)))))
27 (ns-map target-ns))) nil) 27 (ns-map target-ns))) nil)
28 28
29 (defmacro ns-clone 29 ;; (defmacro ns-clone
30 ([target-ns-name] 30 ;; ([target-ns-name]
31 `(do 31 ;; `(do
32 (require '~target-ns-name) 32 ;; (require '~target-ns-name)
33 (ns-clone-fn (get-ns '~target-ns-name))))) 33 ;; (ns-clone-fn (get-ns '~target-ns-name)))))
34 34
35 (defn ls 35 (defn ls
36 "lists all the vars defined in the namespace" 36 "lists all the vars defined in the namespace"
37 ([ns] (doall (map println (keys (ns-map ns)))) nil) 37 ([ns] (doall (map println (keys (ns-interns ns)))) nil)
38 ([] (ls *ns*))) 38 ([] (ls *ns*)))
39 39
40 40