diff options
author | Chouser <chouser@n01se.net> | 2009-04-14 12:30:33 +0000 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-04-14 12:30:33 +0000 |
commit | 69ce50f287d824fe0dd5bc35461703efb93e6577 (patch) | |
tree | 65db3303a1cd9d6906a959ab35faeb6832f8d332 /src/clojure/contrib/repl_utils.clj | |
parent | 23c753a2314b293fa899a75bc7d1ac9d212ff666 (diff) |
repl-utils: fix get-source to use full-path :file meta-data.
Diffstat (limited to 'src/clojure/contrib/repl_utils.clj')
-rw-r--r-- | src/clojure/contrib/repl_utils.clj | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/clojure/contrib/repl_utils.clj b/src/clojure/contrib/repl_utils.clj index 93dce311..a5ab9c41 100644 --- a/src/clojure/contrib/repl_utils.clj +++ b/src/clojure/contrib/repl_utils.clj @@ -95,22 +95,16 @@ Example: (get-source 'filter)" [x] (when-let [v (resolve x)] - (let [ns-str (str (ns-name (:ns ^v))) - path (first (re-seq #"^.*(?=/[^/]*$)" - (-> ns-str - (.replace "." "/") - (.replace "-" "_")))) - fname (str path "/" (:file ^v))] - (when-let [strm (.getResourceAsStream (RT/baseLoader) fname)] - (with-open [rdr (LineNumberReader. (InputStreamReader. strm))] - (dotimes [_ (dec (:line ^v))] (.readLine rdr)) - (let [text (StringBuilder.) - pbr (proxy [PushbackReader] [rdr] - (read [] (let [i (proxy-super read)] - (.append text (char i)) - i)))] - (read (PushbackReader. pbr)) - (str text))))))) + (when-let [strm (.getResourceAsStream (RT/baseLoader) (:file ^v))] + (with-open [rdr (LineNumberReader. (InputStreamReader. strm))] + (dotimes [_ (dec (:line ^v))] (.readLine rdr)) + (let [text (StringBuilder.) + pbr (proxy [PushbackReader] [rdr] + (read [] (let [i (proxy-super read)] + (.append text (char i)) + i)))] + (read (PushbackReader. pbr)) + (str text)))))) (defmacro source "Prints the source code for the given symbol, if it can find it. |