Guest User

Untitled

a guest
Jun 20th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. (defn baked* [loader ns-forms bindings body]
  2. (with-classloader loader
  3. (let [body `(~'let ~(quote-if odd? bindings) ~@body)
  4. clj (.loadClass loader "clojure.main")
  5. signature (into-array Class [(class (into-array String []))])
  6. method (.getDeclaredMethod clj "main" signature)
  7. args (into-array Object [(into-array String ["-e" (pr-str [ns-forms body])])])]
  8. (.invoke method clj args))))
  9.  
  10. (defmacro baked
  11. [loader & forms]
  12. (let [[ns-forms [bindings & body]] (split-with (complement vector?) forms)]
  13. `(baked* ~loader '~ns-forms ~(quote-if even? bindings) '~body)))
  14.  
  15.  
  16. ; (baked loader
  17. ; [path (.getAbsolutePath file)]
  18. ; (load-file path)))))
Add Comment
Please, Sign In to add comment