Skip to content

Commit 537d5eb

Browse files
committed
added string capture mode to LNPReader
1 parent 269b2d1 commit 537d5eb

File tree

1 file changed

+43
-24
lines changed

1 file changed

+43
-24
lines changed

src/jvm/clojure/lang/LineNumberingPushbackReader.java

+43-24
Original file line numberDiff line numberDiff line change
@@ -27,46 +27,65 @@ public class LineNumberingPushbackReader extends PushbackReader{
2727

2828
private boolean _atLineStart = true;
2929
private boolean _prev;
30-
private int _columnNumber = 1;
30+
private int _columnNumber = 1;
31+
private StringBuilder sb = null;
3132

3233
public LineNumberingPushbackReader(Reader r){
3334
super(new LineNumberReader(r));
3435
}
3536

36-
public LineNumberingPushbackReader(Reader r, int size){
37-
super(new LineNumberReader(r, size));
38-
}
39-
37+
public LineNumberingPushbackReader(Reader r, int size){
38+
super(new LineNumberReader(r, size));
39+
}
40+
4041
public int getLineNumber(){
4142
return ((LineNumberReader) in).getLineNumber() + 1;
4243
}
43-
44-
public void setLineNumber(int line) { ((LineNumberReader) in).setLineNumber(line - 1); }
45-
46-
public int getColumnNumber(){
47-
return _columnNumber;
48-
}
49-
44+
45+
public void setLineNumber(int line) { ((LineNumberReader) in).setLineNumber(line - 1); }
46+
47+
public void captureString(){
48+
this.sb = new StringBuilder();
49+
}
50+
51+
public String getString(){
52+
if(sb != null)
53+
{
54+
String ret = sb.toString();
55+
sb = null;
56+
return ret;
57+
}
58+
return null;
59+
}
60+
61+
public int getColumnNumber(){
62+
return _columnNumber;
63+
}
64+
5065
public int read() throws IOException{
5166
int c = super.read();
5267
_prev = _atLineStart;
53-
if((c == newline) || (c == -1))
54-
{
55-
_atLineStart = true;
56-
_columnNumber = 1;
57-
}
58-
else
59-
{
60-
_atLineStart = false;
61-
_columnNumber++;
62-
}
68+
if((c == newline) || (c == -1))
69+
{
70+
_atLineStart = true;
71+
_columnNumber = 1;
72+
}
73+
else
74+
{
75+
_atLineStart = false;
76+
_columnNumber++;
77+
}
78+
if(sb != null)
79+
sb.append((char)c);
6380
return c;
6481
}
6582

6683
public void unread(int c) throws IOException{
6784
super.unread(c);
6885
_atLineStart = _prev;
69-
_columnNumber--;
86+
_columnNumber--;
87+
if(sb != null)
88+
sb.deleteCharAt(sb.length()-1);
7089
}
7190

7291
public String readLine() throws IOException{
@@ -85,7 +104,7 @@ public String readLine() throws IOException{
85104
line = (rest == null) ? first : first + rest;
86105
_prev = false;
87106
_atLineStart = true;
88-
_columnNumber = 1;
107+
_columnNumber = 1;
89108
break;
90109
}
91110
return line;

0 commit comments

Comments
 (0)