2014-07-23 136 views

回答

5

[]到字符串,使整個文件到一個單一的載體形式的起點和終點:

user> (clojure.pprint/pprint 
     (read-string (str "[" (slurp "/home/arthur/hello/project.clj") "]"))) 
[(defproject 
    hello 
    "0.1.0-SNAPSHOT" 
    :description 
    "FIXME: write description" 
    :url 
    "http://example.com/FIXME" 
    :license 
{:name "Eclipse Public License", 
    :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies 
    [[org.clojure/clojure "1.5.1"] [clj-time "0.6.0"]] 
    :source-paths 
    ["dev"])] 
nil 

```

+0

非常酷!我完全忘記了這一點。 – zcaudate

+1

雖然,如果最後一行是註釋,那麼不是太熱。 – amalloy

+2

哦好點!最好在[之前]和[之前] –

10

該功能打開了Clojure的一個流讀取並熱切讀取該流中的所有表單,直到讀取拋出異常(如果存在解析錯誤或者沒有更多表單可讀取,則會發生這種情況)。

(import '[java.io PushbackReader]) 
(require '[clojure.java.io :as io]) 

(defn read-all 
    [file] 
    (let [rdr (-> file io/file io/reader PushbackReader.)] 
    (loop [forms []] 
     (let [form (try (read rdr) (catch Exception e nil))] 
     (if form 
      (recur (conj forms form)) 
      forms))))) 
相關問題