diff options
author | Stuart Sierra <mail@stuartsierra.com> | 2010-01-30 23:11:27 -0500 |
---|---|---|
committer | Stuart Sierra <mail@stuartsierra.com> | 2010-01-30 23:11:27 -0500 |
commit | 8d5f9fa4920fb6afb0e8b2859e5d4a4de2f7ef9f (patch) | |
tree | 347b124c5d2cd9bef92a4d3a3fb1c2a3d7211967 /src/main/clojure | |
parent | 655060b3f265026ef3b45b44f5ab22d8897b3034 (diff) |
c.c.json.read: accept any Reader type; fixes #67
Diffstat (limited to 'src/main/clojure')
-rw-r--r-- | src/main/clojure/clojure/contrib/json/read.clj | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/main/clojure/clojure/contrib/json/read.clj b/src/main/clojure/clojure/contrib/json/read.clj index e9c7a3f2..496a8c54 100644 --- a/src/main/clojure/clojure/contrib/json/read.clj +++ b/src/main/clojure/clojure/contrib/json/read.clj @@ -47,7 +47,7 @@ ", :see-also [["http://www.json.org", "JSON Home Page"]]} clojure.contrib.json.read - (:import (java.io PushbackReader StringReader EOFException)) + (:import (java.io PushbackReader StringReader Reader EOFException)) (:use [clojure.test :only (deftest- is)])) (declare read-json) @@ -144,9 +144,14 @@ "Read one JSON record from s, which may be a String or a java.io.PushbackReader." ([] (read-json *in* true nil)) - ([s] (if (string? s) - (read-json (PushbackReader. (StringReader. s)) true nil) - (read-json s true nil))) + ([s] (cond (string? s) + (read-json (PushbackReader. (StringReader. s)) true nil) + + (instance? PushbackReader s) + (read-json s true nil) + + (instance? Reader s) + (read-json (PushbackReader. s) true nil))) ([#^PushbackReader stream eof-error? eof-value] (loop [i (.read stream)] (let [c (char i)] |