aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2008-07-03 12:19:34 +0000
committerscgilardi <scgilardi@gmail.com>2008-07-03 12:19:34 +0000
commit1432520e97e282a39a873e68caf8dc53085129d4 (patch)
tree65485095008127ad49df76e3724870aababdfdbf
parent21b3892707c859e801c303047ec789a52439608c (diff)
lib.clj: deref :in and :ns arguments if they are symbols
-rw-r--r--lib.clj12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib.clj b/lib.clj
index d2126069..12f24a3a 100644
--- a/lib.clj
+++ b/lib.clj
@@ -192,13 +192,21 @@
(load-lib sym in ns)
@*libs*))))
+(defn- eval-option
+ "Evaluates an option which may be a symbol representing a var
+ or a literal (including nil)"
+ [option]
+ (if (symbol? option)
+ (deref (resolve option))
+ option))
+
(defn- load-with-options
"Load a lib with options expressed as sequential keywords and
values"
[sym & options]
(let [opts (apply hash-map options)
- in (:in opts)
- ns (:ns opts)
+ in (eval-option (:in opts))
+ ns (eval-option (:ns opts))
reload (:reload opts)
reload-all (:reload-all opts)
require (:require opts)