From 449c39e0dafd7c736bfcd8d56bbd08b7a99e25a4 Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 27 Mar 2007 19:39:13 -0400 Subject: [PATCH 1/1] add maxLength argument to Input.showRegion() darcs-hash:20070327233913-5007d-bdcad3b136e659105f9c22fb9881653e3b5daab1.gz --- src/edu/berkeley/sbp/Input.java | 11 ++++++----- src/edu/berkeley/sbp/chr/CharInput.java | 8 ++++---- src/edu/berkeley/sbp/tib/Tib.java | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java index 13c45d4..bf0d50d 100644 --- a/src/edu/berkeley/sbp/Input.java +++ b/src/edu/berkeley/sbp/Input.java @@ -22,12 +22,13 @@ public interface Input { /** * Optional: If possible, this method will return a - * <60 char long rendering of the input region (for example, if - * the input is a region of characters, it would be those - * characters, possibly with ellipses in the middle to truncate - * the length) -- otherwise, returns null. + * rendering of the input region (for example, if the input is a + * region of characters, it would be those characters) -- + * otherwise, returns null. In any case, the string returned + * will be no more than maxLength characters long; + * typically ellipses will be inserted to perform truncation. */ - public abstract String showRegion(Region r); + public abstract String showRegion(Region r, int maxLength); /** a location (position) in the input stream -- between tokens */ public static interface Location extends Comparable { diff --git a/src/edu/berkeley/sbp/chr/CharInput.java b/src/edu/berkeley/sbp/chr/CharInput.java index a03f940..3ebbb88 100644 --- a/src/edu/berkeley/sbp/chr/CharInput.java +++ b/src/edu/berkeley/sbp/chr/CharInput.java @@ -157,7 +157,7 @@ public class CharInput extends Cartesian.Input { if (i>0) { r.unread(CharAtom.left); redent(i-1); return; } } - public String showRegion(Region rc) { + public String showRegion(Region rc, int maxLength) { if (cache == null) return null; Cartesian.Region r = (Cartesian.Region)rc; int start = r.getStart().getScalar()+1; @@ -166,10 +166,10 @@ public class CharInput extends Cartesian.Input { 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) + + if (end-start < maxLength) ret = cachesubstring(start, end); + else ret = cachesubstring(start, start+(maxLength/2-5)) + "..." + - cachesubstring(end-25, end); + cachesubstring(end-(maxLength/2-5), end); return StringUtil.escapify(ret, "\n\r"); } diff --git a/src/edu/berkeley/sbp/tib/Tib.java b/src/edu/berkeley/sbp/tib/Tib.java index 387f5ed..a86b3ab 100644 --- a/src/edu/berkeley/sbp/tib/Tib.java +++ b/src/edu/berkeley/sbp/tib/Tib.java @@ -20,7 +20,7 @@ import java.io.*; */ public class Tib implements Input { - public String showRegion(Region r) { return ""; } + public String showRegion(Region r, int max) { return ""; } public Tib(String s) throws IOException { this(new StringReader(s)); } public Tib(Reader r) throws IOException { this(new BufferedReader(r)); } -- 1.7.10.4