diff options
author | Chas Emerick <cemerick@snowtide.com> | 2009-06-19 23:10:24 -0400 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-06-19 23:12:01 -0400 |
commit | d97dfc8791e87dbd7727eb3b76d3b62f11de9089 (patch) | |
tree | 65001158137b7fc4f511bc2064ef8cc09fea55c7 /src | |
parent | f1d13b8f1fbda376352caf85857cc0585717bcd9 (diff) |
add an optional encoding argument to slurp. Fixes #125
Signed-off-by: Chouser <chouser@n01se.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/clj/clojure/core.clj | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 4c76d9b5..78a7a772 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -2975,16 +2975,20 @@ [v] (instance? clojure.lang.Var v)) (defn slurp - "Reads the file named by f into a string and returns it." - [#^String f] - (with-open [r (new java.io.BufferedReader (new java.io.FileReader f))] + "Reads the file named by f using the encoding enc into a string + and returns it." + ([f] (slurp f (.name (java.nio.charset.Charset/defaultCharset)))) + ([#^String f #^String enc] + (with-open [r (new java.io.BufferedReader + (new java.io.InputStreamReader + (new java.io.FileInputStream f) enc))] (let [sb (new StringBuilder)] - (loop [c (. r (read))] + (loop [c (.read r)] (if (neg? c) (str sb) (do - (. sb (append (char c))) - (recur (. r (read))))))))) + (.append sb (char c)) + (recur (.read r))))))))) (defn subs "Returns the substring of s beginning at start inclusive, and ending |