aboutsummaryrefslogtreecommitdiff
path: root/src/main/clojure
diff options
context:
space:
mode:
authorStuart Sierra <mail@stuartsierra.com>2010-01-30 23:11:27 -0500
committerStuart Sierra <mail@stuartsierra.com>2010-01-30 23:11:27 -0500
commit8d5f9fa4920fb6afb0e8b2859e5d4a4de2f7ef9f (patch)
tree347b124c5d2cd9bef92a4d3a3fb1c2a3d7211967 /src/main/clojure
parent655060b3f265026ef3b45b44f5ab22d8897b3034 (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.clj13
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)]