Issue resolved. Thanks!

On Tue, Feb 4, 2014 at 1:09 PM, Michał Marczyk <michal.marc...@gmail.com> wrote:
> source-fn is a private Var in the clojure.repl namespace; you can
> still use source to display its definition, but you'll have to use the
> fully qualified name:
>
> user=> (source clojure.repl/source-fn)
> (defn source-fn
>   "Returns a string of the source code for the given symbol, if it can
>   find it.  This requires that the symbol resolve to a Var defined in
>   a namespace for which the .clj is in the classpath.  Returns nil if
>   it can't find the source.  For most REPL usage, 'source' is more
>   convenient.
>
>   Example: (source-fn 'filter)"
>   [x]
>   (when-let [v (resolve x)]
>     (when-let [filepath (:file (meta v))]
>       (when-let [strm (.getResourceAsStream (RT/baseLoader) filepath)]
>         (with-open [rdr (LineNumberReader. (InputStreamReader. strm))]
>           (dotimes [_ (dec (:line (meta 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)))))))
>
> Cheers,
> Michał
>
>
> On 4 February 2014 21:34, t x <txrev...@gmail.com> wrote:
>> Hi,
>>
>> user> (source source)
>> (defmacro source
>>   "Prints the source code for the given symbol, if it can find it.
>>   This requires that the symbol resolve to a Var defined in a
>>   namespace for which the .clj is in the classpath.
>>
>>   Example: (source filter)"
>>   [n]
>>   `(println (or (source-fn '~n) (str "Source not found"))))
>> nil
>> user> (source source-fn)
>> Source not found
>> nil
>>
>>
>> Is there a way, from pure-clojure that I can implement my-def +
>> my-source (without using def+source) which behaves as def+source does
>> ... or does doing so require writing Java code?
>>
>> Thanks!
>>
>> --
>> 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
>> Note that posts from new members are moderated - please be patient with your 
>> first post.
>> 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
>> ---
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> 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
> Note that posts from new members are moderated - please be patient with your 
> first post.
> 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
> ---
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to