-
Notifications
You must be signed in to change notification settings - Fork 260
/
ns_utils.clj
23 lines (21 loc) · 978 Bytes
/
ns_utils.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
;; Copyright (c) James Reeves. All rights reserved.
;; The use and distribution terms for this software are covered by the Eclipse
;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which
;; can be found in the file epl-v10.html at the root of this distribution. By
;; using this software in any fashion, you are agreeing to be bound by the
;; terms of this license. You must not remove this notice, or any other, from
;; this software.
(ns compojure.ns-utils)
(defn immigrate
"Create a public var in this namespace for each public var in the
namespaces named by ns-names. The created vars have the same name, value,
and metadata as the original except that their :ns metadata value is this
namespace."
[& ns-names]
(doseq [ns ns-names]
(require ns)
(doseq [[sym var] (ns-publics ns)]
(let [sym (with-meta sym (assoc (meta var) :ns *ns*))]
(if (.isBound var)
(intern *ns* sym (var-get var))
(intern *ns* sym))))))