+
+ 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 (start < 0) start = 0;
+ if (end < start) end = start;
+ if (end > cache.length()) end = cache.length();
+ String ret;
+ if (end-start < 60) ret = cachesubstring(start, end);
+ else ret = cachesubstring(start, start+25) +
+ "..." +
+ cachesubstring(end-25, end);
+ return StringUtil.escapify(ret, "\n\r");
+ }
+
+ private String cachesubstring(int start, int end) {
+ if (start < 0) start = 0;
+ if (end < 0) end = 0;
+ if (start >= cache.length()) start = cache.length();
+ if (end >= cache.length()) end = cache.length();
+ return cache.substring(start, end);
+ }
+