summaryrefslogtreecommitdiff
path: root/src/jvm
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-10-15 21:02:08 +0000
committerRich Hickey <richhickey@gmail.com>2008-10-15 21:02:08 +0000
commitbd0ca4e2dc44f98935db5806886be898313028e3 (patch)
tree000c1453559bf4f422448248221e79f9ed211c2c /src/jvm
parentbe542947ad5a96930fca37b760c93eb5ced10950 (diff)
simplified regex literal format - no longer need to escape \
patch from Chouser
Diffstat (limited to 'src/jvm')
-rw-r--r--src/jvm/clojure/lang/LispReader.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java
index afc95835..e3b01c4b 100644
--- a/src/jvm/clojure/lang/LispReader.java
+++ b/src/jvm/clojure/lang/LispReader.java
@@ -364,8 +364,22 @@ static class RegexReader extends AFn{
static StringReader stringrdr = new StringReader();
public Object invoke(Object reader, Object doublequote) throws Exception{
- String str = (String) stringrdr.invoke(reader, doublequote);
- return Pattern.compile(str);
+ StringBuilder sb = new StringBuilder();
+ Reader r = (Reader) reader;
+ for(int ch = r.read(); ch != '"'; ch = r.read())
+ {
+ if(ch == -1)
+ throw new Exception("EOF while reading regex");
+ sb.append( (char) ch );
+ if(ch == '\\') //escape
+ {
+ ch = r.read();
+ if(ch == -1)
+ throw new Exception("EOF while reading regex");
+ sb.append( (char) ch ) ;
+ }
+ }
+ return Pattern.compile(sb.toString());
}
}