@@ -27,46 +27,65 @@ public class LineNumberingPushbackReader extends PushbackReader{
2727
2828private  boolean  _atLineStart  = true ;
2929private  boolean  _prev ;
30- private  int  _columnNumber  = 1 ;
30+ private  int  _columnNumber  = 1 ;
31+ private  StringBuilder  sb  = null ;
3132
3233public  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+ 
4041public  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+ 
5065public  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
6683public  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
7291public  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