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
-~----------~----~----~----~------~----~------~--~---

Reply via email to