Mercurial > rlm
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 |