summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-10-21 13:01:28 +0000
committerRich Hickey <richhickey@gmail.com>2007-10-21 13:01:28 +0000
commit17e416d3cb89416063fd01a7b5ee4b40ffd0bf0f (patch)
treedc5b9067ab8a6788a0d4c90fca88bc2284307224 /src
parent1bf3aaff908cf57c8193e6edf9f7be81d8dae102 (diff)
added read
Diffstat (limited to 'src')
-rw-r--r--src/boot.clj11
-rw-r--r--src/jvm/clojure/lang/Compiler.java2
-rw-r--r--src/jvm/clojure/lang/RT.java3
3 files changed, 15 insertions, 1 deletions
diff --git a/src/boot.clj b/src/boot.clj
index e381bfdc..04031be6 100644
--- a/src/boot.clj
+++ b/src/boot.clj
@@ -584,6 +584,16 @@
(print x writer)
(newline)))
+(defn read
+ ([]
+ (thisfn *in*))
+ ([stream]
+ (thisfn stream :t nil))
+ ([stream eof-error? eof-value]
+ (thisfn stream eof-error? eof-value nil))
+ ([stream eof-error? eof-value recursive?]
+ (. clojure.lang.LispReader (read stream eof-error? eof-value recursive?))))
+
(defmacro .-> [x & members]
(let [gx (gensym)]
`(let [~gx ~x]
@@ -625,6 +635,7 @@
into-array array
make-proxy new-proxy
prn print newline *out* *current-namespace* .->
+ read *in*
time
))
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 6c26ef12..13a7fcf3 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -2699,7 +2699,7 @@ public static void main(String[] args){
}
//repl
- LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(System.in));
+ LineNumberingPushbackReader rdr = (LineNumberingPushbackReader) RT.IN.get();
OutputStreamWriter w = (OutputStreamWriter) RT.OUT.get();//new OutputStreamWriter(System.out);
Object EOF = new Object();
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index 26782f24..bdfedecc 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -21,6 +21,9 @@ public class RT{
static public Keyword T = Keyword.intern(Symbol.create(null, "t"));
final static public Var OUT =
Var.intern(Symbol.create("clojure", "*out*"), new OutputStreamWriter(System.out));
+final static public Var IN =
+ Var.intern(Symbol.create("clojure", "*in*"),
+ new LineNumberingPushbackReader(new InputStreamReader(System.in)));
final static Keyword TAG_KEY = Keyword.intern("clojure", "tag");
//final static public Var CURRENT_MODULE = Var.intern(Symbol.create("clojure", "current-module"),