@@ -27,46 +27,65 @@ public class LineNumberingPushbackReader extends PushbackReader{
27
27
28
28
private boolean _atLineStart = true ;
29
29
private boolean _prev ;
30
- private int _columnNumber = 1 ;
30
+ private int _columnNumber = 1 ;
31
+ private StringBuilder sb = null ;
31
32
32
33
public LineNumberingPushbackReader (Reader r ){
33
34
super (new LineNumberReader (r ));
34
35
}
35
36
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
+
40
41
public int getLineNumber (){
41
42
return ((LineNumberReader ) in ).getLineNumber () + 1 ;
42
43
}
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
+
50
65
public int read () throws IOException {
51
66
int c = super .read ();
52
67
_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 );
63
80
return c ;
64
81
}
65
82
66
83
public void unread (int c ) throws IOException {
67
84
super .unread (c );
68
85
_atLineStart = _prev ;
69
- _columnNumber --;
86
+ _columnNumber --;
87
+ if (sb != null )
88
+ sb .deleteCharAt (sb .length ()-1 );
70
89
}
71
90
72
91
public String readLine () throws IOException {
@@ -85,7 +104,7 @@ public String readLine() throws IOException{
85
104
line = (rest == null ) ? first : first + rest ;
86
105
_prev = false ;
87
106
_atLineStart = true ;
88
- _columnNumber = 1 ;
107
+ _columnNumber = 1 ;
89
108
break ;
90
109
}
91
110
return line ;
0 commit comments