aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clojure/contrib/with_ns.clj22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/clojure/contrib/with_ns.clj b/src/clojure/contrib/with_ns.clj
new file mode 100644
index 00000000..4b770cd5
--- /dev/null
+++ b/src/clojure/contrib/with_ns.clj
@@ -0,0 +1,22 @@
+;;; with_ns.clj -- temporary namespace macro
+
+;; by Stuart Sierra, http://stuartsierra.com/
+;; March 28, 2009
+
+;; Copyright (c) Stuart Sierra, 2009. 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 clojure.contrib.with-ns)
+
+(defmacro with-ns
+ "Evaluates body in another namespace. ns is either a namespace
+ object or a symbol. This makes it possible to define functions in
+ namespaces other than the current one."
+ [ns & body]
+ `(binding [*ns* (the-ns ~ns)] (eval '(do ~@body))))