summaryrefslogtreecommitdiff
path: root/compojure-3.2/src/compojure/ns_utils.clj
diff options
context:
space:
mode:
Diffstat (limited to 'compojure-3.2/src/compojure/ns_utils.clj')
-rwxr-xr-xcompojure-3.2/src/compojure/ns_utils.clj23
1 files changed, 23 insertions, 0 deletions
diff --git a/compojure-3.2/src/compojure/ns_utils.clj b/compojure-3.2/src/compojure/ns_utils.clj
new file mode 100755
index 0000000..5e26ab2
--- /dev/null
+++ b/compojure-3.2/src/compojure/ns_utils.clj
@@ -0,0 +1,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))))))