diff options
author | scgilardi <scgilardi@gmail.com> | 2008-04-07 20:12:02 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2008-04-07 20:12:02 +0000 |
commit | 71cebc07111b98797924c0da56077e20e88f819f (patch) | |
tree | d960c563bd616a17de26b17f66d34c9b4ef71255 | |
parent | a9cc1cb7c9acbacc58d55893b10d5a588f3ab191 (diff) |
jewel.clj: protect private vars from redefinition on a :reload-all that incudes jewel
-rw-r--r-- | jewel.clj | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -53,12 +53,23 @@ (def #^{:private true :doc "A ref to a set of symbols representing loaded jewels"} - *jewels* (ref #{})) + *jewels*) (def #^{:private true :doc "True while a verbose require is pending"} - *verbose* false) + *verbose*) + +(defmacro init-once + "Initializes a var exactly once. The var must already exist." + #^{:private true} + [var init] + `(let [v# (resolve '~var)] + (when-not (. v# (isBound)) + (. v# (bindRoot ~init))))) + +(init-once *jewels* (ref #{})) +(init-once *verbose* false) (defn- load-system-resource "Loads Clojure source from a resource within classpath" |