Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn baked* [loader ns-forms bindings body]
- (with-classloader loader
- (let [body `(~'let ~(quote-if odd? bindings) ~@body)
- clj (.loadClass loader "clojure.main")
- signature (into-array Class [(class (into-array String []))])
- method (.getDeclaredMethod clj "main" signature)
- args (into-array Object [(into-array String ["-e" (pr-str [ns-forms body])])])]
- (.invoke method clj args))))
- (defmacro baked
- [loader & forms]
- (let [[ns-forms [bindings & body]] (split-with (complement vector?) forms)]
- `(baked* ~loader '~ns-forms ~(quote-if even? bindings) '~body)))
- ; (baked loader
- ; [path (.getAbsolutePath file)]
- ; (load-file path)))))
Add Comment
Please, Sign In to add comment