boolean cr = false;
private int count = 0;
+ private StringBuilder cache = new StringBuilder();
+
+ public void setCacheEnabled(boolean enabled) {
+ if (!enabled) cache = null;
+ else if (cache == null) cache = new StringBuilder();
+ }
+
public boolean isCR() { return cr; }
public Character _next() throws IOException {
cr = false;
int i = r.read();
- if (i==-1) { System.err.print("\r...done \r"); return null; }
+ if (i==-1) { /*System.err.print("\r...done \r"); */return null; }
char c = (char)i;
+ if (cache != null) cache.append(c);
cr = c=='\n';
+ /*
if ((count++) % 100 == 0)
System.err.print(" " + count + "\r");
+ */
return c;
}
+
+ public String showRegion(Region<Character> rc) {
+ if (cache == null) return null;
+ Cartesian.Region r = (Cartesian.Region)rc;
+ int start = r.getStart().getScalar()+1;
+ int end = r.getEnd().getScalar()+1;
+ if (end > cache.length()) end = cache.length();
+ String ret;
+ if (end-start < 60) ret = cache.substring(start, end);
+ else ret = cache.substring(start, start+25) +
+ "..." +
+ cache.substring(end-25, end);
+ return StringUtil.escapify(ret, "\n\r");
+ }
+
}