1 19 20 package org.netbeans.modules.languages.parser; 21 22 import org.netbeans.api.languages.CharInput; 23 24 public class StringInput extends CharInput { 25 26 private String sourceName; 27 private String expression; 28 private int index = 0; 29 private int length; 30 31 public StringInput (String expression, String sourceName) { 32 this.expression = expression; 33 length = expression.length (); 34 this.sourceName = sourceName; 35 } 36 37 public char read () { 38 if (index < length) 39 return expression.charAt (index++); 40 return 0; 41 } 42 43 public void setIndex (int index) { 44 this.index = index; 45 } 46 47 public int getIndex () { 48 return index; 49 } 50 51 public boolean eof () { 52 return index >= length; 53 } 54 55 public char next () { 56 if (index < length) 57 return expression.charAt (index); 58 return 0; 59 } 60 61 public String getString (int from, int to) { 62 return expression.substring (from, to); 63 } 64 65 66 public String getAsText () { 67 return expression.substring ( 68 index, 69 expression.length () 70 ); 71 } 72 73 public String toString () { 74 int lineNumber = 1; 75 int i = expression.indexOf ('\n'); 76 int offset = 0; 77 while (i >= 0 && i < index) { 78 lineNumber++; 79 i = expression.indexOf ('\n', i + 1); 80 if (i >= 0 && (i < index)) offset = i; 81 } 82 return sourceName + ":" + lineNumber + ',' + (index - offset); 83 } 84 } | Popular Tags |