From dc5ab35bee8aefa3fa9bdcaadc157becb91918d9 Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Mon, 31 Dec 2007 20:20:41 +0000 Subject: changed load to take Reader --- src/jvm/clojure/lang/Compiler.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') 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 -- cgit v1.2.3-70-g09d2