diff --git a/project.clj b/project.clj index 9b7650f..3790bb3 100644 --- a/project.clj +++ b/project.clj @@ -6,8 +6,7 @@ :source-paths ["src"] - :dependencies [[org.clojure/clojure "1.7.0"] - [org.clojure/tools.macro "0.1.2"]] + :dependencies [[org.clojure/clojure "1.7.0"]] :profiles {:dev {:source-paths ["dev" "test/app"] :dependencies [[yesql "0.5.1"] diff --git a/src/mount/core.clj b/src/mount/core.clj index 6ca57c4..aa7b7f2 100644 --- a/src/mount/core.clj +++ b/src/mount/core.clj @@ -1,5 +1,5 @@ (ns mount.core - (:require [clojure.tools.macro :as macro])) + (:require [mount.tools.macro :as macro])) (defonce ^:private mount-state 42) (defonce ^:private -args (atom :no-args)) ;; mostly for command line args and external files diff --git a/src/mount/tools/macro.clj b/src/mount/tools/macro.clj new file mode 100644 index 0000000..a0b1e1c --- /dev/null +++ b/src/mount/tools/macro.clj @@ -0,0 +1,29 @@ +(ns mount.tools.macro) + +;; this is a one to one copy from https://github.com/clojure/tools.macro +;; to avoid a lib dependency for a single function + +(defn name-with-attributes + "To be used in macro definitions. + Handles optional docstrings and attribute maps for a name to be defined + in a list of macro arguments. If the first macro argument is a string, + it is added as a docstring to name and removed from the macro argument + list. If afterwards the first macro argument is a map, its entries are + added to the name's metadata map and the map is removed from the + macro argument list. The return value is a vector containing the name + with its extended metadata map and the list of unprocessed macro + arguments." + [name macro-args] + (let [[docstring macro-args] (if (string? (first macro-args)) + [(first macro-args) (next macro-args)] + [nil macro-args]) + [attr macro-args] (if (map? (first macro-args)) + [(first macro-args) (next macro-args)] + [{} macro-args]) + attr (if docstring + (assoc attr :doc docstring) + attr) + attr (if (meta name) + (conj (meta name) attr) + attr)] + [(with-meta name attr) macro-args]))