[Text] Improve TextParserInput
- Add constant NA_INDEX
- Fix and improve toString
Change-Id: I5a6fff6017fab5d8799540df3563d05dd52149a0
diff --git a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java
index 8a63d54..18781d4 100644
--- a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java
+++ b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java
@@ -125,7 +125,7 @@
if (!updateBuffer(offset + 1)) {
checkOffset(offset);
int index= getStopIndex();
- if (index == Integer.MIN_VALUE) {
+ if (index == NA_INDEX) {
index= this.bufferBeginIndexes[getEndIdx()];
}
setConsume(offset, index);
diff --git a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java
index 50743be..b4701ac 100644
--- a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java
+++ b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java
@@ -49,7 +49,7 @@
}
public OffsetStringParserInput initAtOffset() {
- super.init(this.sourceOffset, Integer.MIN_VALUE);
+ super.init(this.sourceOffset, NA_INDEX);
return this;
}
diff --git a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java
index 504cd2a..29af45a 100644
--- a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java
+++ b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java
@@ -16,6 +16,7 @@
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.lang.Nullable;
+import org.eclipse.statet.jcommons.lang.ObjectUtils.ToStringBuilder;
import org.eclipse.statet.jcommons.string.CharArrayString;
import org.eclipse.statet.jcommons.string.StringFactory;
import org.eclipse.statet.jcommons.text.core.BasicTextRegion;
@@ -39,11 +40,17 @@
public static final int EOF= -1;
+ public static final int NA_INDEX= Integer.MIN_VALUE;
+
protected static final int DEFAULT_BUFFER_SIZE= 0x800;
protected static final char[] NO_INPUT= new char[0];
+ protected static final String indexToString(final int index) {
+ return (index != NA_INDEX) ? Integer.toString(index) : "<NA>"; //$NON-NLS-1$
+ }
+
private final CharArrayString tmpCharString= new CharArrayString();
@@ -61,21 +68,21 @@
protected TextParserInput(final int defaultBufferLength) {
this.defaultBufferLength= defaultBufferLength;
this.buffer= NO_INPUT;
- this.stopIndex= Integer.MIN_VALUE;
- this.currentIndex= Integer.MIN_VALUE;
+ this.stopIndex= NA_INDEX;
+ this.currentIndex= NA_INDEX;
}
protected void reset() {
this.startIndex= 0;
- this.stopIndex= Integer.MIN_VALUE;
- this.currentIndex= Integer.MIN_VALUE;
+ this.stopIndex= NA_INDEX;
+ this.currentIndex= NA_INDEX;
this.currentIdx= 0;
this.endIdx= 0;
}
public TextParserInput init() {
- init(0, Integer.MIN_VALUE);
+ init(0, NA_INDEX);
return this;
}
@@ -88,7 +95,7 @@
if (stopIndex > sourceStopIndex) {
throw new IndexOutOfBoundsException("stopIndex= " + stopIndex); //$NON-NLS-1$
}
- else if (stopIndex == Integer.MIN_VALUE) {
+ else if (stopIndex == NA_INDEX) {
stopIndex= sourceStopIndex;
}
if (startIndex < sourceStartIndex | startIndex > sourceStopIndex) {
@@ -472,22 +479,27 @@
protected final void checkOffset(final int offset) {
if (this.currentIdx + offset > this.endIdx) {
- throw new IndexOutOfBoundsException("offset= " + offset);
+ throw new IndexOutOfBoundsException("offset= " + offset); //$NON-NLS-1$
}
}
@Override
public String toString() {
- final StringBuilder sb= new StringBuilder(getClass().getName());
+ final ToStringBuilder sb= new ToStringBuilder(TextParserInput.class, getClass());
+ sb.addProp("region", "[%1$s, %2$s)", //$NON-NLS-1$ //$NON-NLS-2$
+ indexToString(getStartIndex()), indexToString(getStopIndex()) );
final String s= getSourceString();
if (s != null) {
final int index= getSourceStringIndex();
- sb.append("\n~~~ [").append(index).append(", ").append(index + s.length()).append("] ~~~");
- sb.append(getSourceStringIndex());
- sb.append("\n~~~\n");
+ sb.addProp("source"); //$NON-NLS-1$
+ sb.getStringBuilder()
+ .append("\n~~~ [").append(index).append(", ").append(index + s.length()) //$NON-NLS-1$ //$NON-NLS-2$
+ .append("] ~~~\n") //$NON-NLS-1$
+ .append(s)
+ .append("\n~~~\n"); //$NON-NLS-1$
}
- return super.toString();
+ return sb.toString();
}
}