diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-12-31 20:20:41 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-12-31 20:20:41 +0000 |
commit | dc5ab35bee8aefa3fa9bdcaadc157becb91918d9 (patch) | |
tree | e7bdfcac53fb0ee6e8c93350a4558f0ed6e7990c /src | |
parent | 473e4bfa98bc5dfdcbadb8046021054091407f55 (diff) |
changed load to take Reader
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 936caae0..c43b4d5e 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -2991,7 +2991,7 @@ public static Object loadFile(String file) throws Exception{ { Var.pushThreadBindings(RT.map(SOURCE_PATH, file, SOURCE, (new File(file)).getName())); - return load(f); + return load(new InputStreamReader(f)); } finally { @@ -3000,7 +3000,7 @@ public static Object loadFile(String file) throws Exception{ } } -public static Object load(InputStream s) throws Exception{ +public static Object load(Reader rdr) throws Exception{ Object EOF = new Object(); Object ret = null; try @@ -3011,8 +3011,11 @@ public static Object load(InputStream s) throws Exception{ RT.NS_IMPORTS, RT.NS_IMPORTS.get(), RT.CURRENT_NS_SYM, RT.CURRENT_NS_SYM.get() )); - LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(s)); - for(Object r = LispReader.read(rdr, false, EOF, false); r != EOF; r = LispReader.read(rdr, false, EOF, false)) + LineNumberingPushbackReader pushbackReader = + (rdr instanceof LineNumberingPushbackReader) ? (LineNumberingPushbackReader) rdr : + new LineNumberingPushbackReader(rdr); + for(Object r = LispReader.read(pushbackReader, false, EOF, false); r != EOF; + r = LispReader.read(pushbackReader, false, EOF, false)) ret = eval(r); } finally |