On Thu, Mar 12, 2009 at 12:50 PM, Phil Hagelberg <p...@hagelb.org> wrote:
> > Paul Stadig <p...@stadig.name> writes: > > > I wrote these a while ago, and I'm not sure if they're still useful or > not, but I'll just send them along without any guarantee. I > > have used them like (__FILE__) and (__DIR__) when I wanted to get access > to things relative to the current file. > > > > (defmacro __FILE__ [] > > `(if *file* > > (let [f# (ClassLoader/getSystemResource *file*)] > > (if f# > > (.getCanonicalPath (java.io.File. (.toURI f#))) > > (.getCanonicalPath (java.io.File. *file*)))))) > > Wow, that's quite a set of hoops to jump through. > > I don't think I could have figured that out on my own; thanks! > Like I said, I wrote these a while ago when I was learning Clojure for a project that I haven't touched in a while. I'm not sure this is the best way (or even the correct way!) to do this. As I recall, I was having a problem, because *file* was only available while compiling and was nil at runtime. I ended up using these macros with defvar from clojure-contrib to find my path and bind it once during loading, like so: (defvar *downloads* (join (__DIR__) "cache" "downloads") "The root path for the download cache") Not sure if all of those assumptions are still valid, but if it helps someone, then there it is. Paul --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---