Hmm.. My code which I pasted above is wrong.. Though I know no one
care about it, :) here is the corrected code.. It seems that It is
good to just use 'java-import-code->lst' in repl and copy & paste the
list into (:use ~) statement.
(ns easy-import
(:use clojure.contrib.str-utils))
(defn java-import-code->lst
{:doc "converts java import code to a list for clojure import
code. For example (java-import-code->lst \"import
org.apache.http.HttpVersion; import
org.apache.http.http.client.HttpClient;\") => '((org.apache.http
HttpVersion) (org.apache.http.client HttpClient))"}
[#^String code]
(let [parsed-code (map re-split (repeat #"\.")
(re-split #";" (re-gsub #"\n+|\s+|import" "" code)))
packages (map str-join (repeat ".") (map drop-last parsed-code))
classes (map last parsed-code)]
(map (fn [package class]
(list (symbol package) (symbol class)))
packages
classes)))
(defn map-quote
{:doc "(map-quote '((a b) (c d))) => '((quote (a b)) (quote (c
d)))"}
[lst]
(for [item lst]
(list 'quote item)))
(defmacro ->import
{:doc "(->import \"import org.apache.http.HttpVersion; import
org.apache.http.http.client.HttpClient;\") expands to (import
'(org.apache.http HttpVersion) '(org.apache.http.client HttpClient))"}
[#^String code]
`(import ~@(map-quote (java-import-code->lst code))))
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---