aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/repl_utils.clj
diff options
context:
space:
mode:
authorChouser <chouser@n01se.net>2009-04-14 12:30:33 +0000
committerChouser <chouser@n01se.net>2009-04-14 12:30:33 +0000
commit69ce50f287d824fe0dd5bc35461703efb93e6577 (patch)
tree65db3303a1cd9d6906a959ab35faeb6832f8d332 /src/clojure/contrib/repl_utils.clj
parent23c753a2314b293fa899a75bc7d1ac9d212ff666 (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.clj26
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.