2013-04-20 38 views
5

我在解析REPL中的文本,並且有時想將一堆數據轉儲到字符串中,無論是bibtex條目還是某些EBNF表示法等。通常,字符串中可能會有引號,並且這是非常繁瑣和容易出錯的有手動逃脫他們..輕鬆處理文本而無需在Clojure中引號?

是否有這樣做的另一種方式,比如Ruby的%Q|I可以使用"Quotation Marks"|heredocs等?或者是否可以寫一個宏或修改閱讀器來啓用它?

+0

這是我一直想太多。解決數據問題的一種方法是使用'slurp'從文件中讀取數據。 – DaoWen 2013-04-20 01:10:41

+0

您是在運行時代碼還是編輯器中「傾銷」?如果以後,看到這個問題:http://stackoverflow.com/questions/11043318/does-clojure-have-raw-string – noahlz 2013-04-20 09:47:38

+0

你在用什麼編輯器?我通常的做法是使用一個帶有智能粘貼功能的編輯器,爲我添加逃脫功能。 – Korny 2016-07-17 06:58:43

回答

0

關於更強大的引用語法,有some discussion,但沒有任何更改支持這似乎迫在眉睫。

與此同時,要特別處理您提到的REPL交互,您可能會發現這很有用。注意它可能無法滿足每個REPL工作,在那裏 - 他們並不都支持read-line非常好:

 
(defn read-lines [] 
    (->> (repeatedly read-line) 
     (take-while #(not= % ".")) 
     (mapcat #(list % "\n")) 
     (apply str))) 

通過在REPL運行(read-lines),粘貼您的內容,然後再添加符合使用它一個.本身:

 
user=> (read-lines) 
    #_=> This "works" 
    #_=> sometimes... 
    #_=> . 
"This \"works\"\nsometimes...\n" 
user=> (print *1) 
This "works" 
sometimes... 
nil 
-1

如何簡單地使用你傾倒入您的文本,然後從那裏使用slup閱讀一個臨時文件?這樣,每當你打電話時,一切都會自動逃脫?

(slurp "tempfile.txt") 

(def data (slurp "tempfile.txt")) 

(defn rd [] (def data (slurp "tempfile.txt")))