diff options
author | Paul Pazderski | 2019-10-04 14:38:18 +0000 |
---|---|---|
committer | Paul Pazderski | 2019-10-04 14:46:52 +0000 |
commit | 1363fef4438fcbeeff43bdfc8f2503f7e16881de (patch) | |
tree | 79039275d48a5e13328cf0282a417450af06801d | |
parent | f759612dc8cad1ee3c57f234defb33606c5ea90e (diff) | |
download | eclipse.platform.text-1363fef4438fcbeeff43bdfc8f2503f7e16881de.tar.gz eclipse.platform.text-1363fef4438fcbeeff43bdfc8f2503f7e16881de.tar.xz eclipse.platform.text-1363fef4438fcbeeff43bdfc8f2503f7e16881de.zip |
Bug 551781 - Change TextUtilities.nextDelimiter return typeI20191009-0300I20191008-1800I20191008-0600I20191007-1800I20191007-0625I20191007-0430I20191006-1800
Change-Id: I2673f7ee6b18d2705d6353054ec042a1fe6a1f9c
Signed-off-by: Paul Pazderski <paul-eclipse@ppazderski.de>
5 files changed, 44 insertions, 39 deletions
diff --git a/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java b/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java index 1292ecf3d18..05f752eb2cb 100644 --- a/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java +++ b/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java @@ -20,11 +20,11 @@ import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Map; import org.junit.Assert; import org.junit.Test; +import org.eclipse.jface.text.AbstractLineTracker.DelimiterInfo; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.DocumentEvent; @@ -347,45 +347,45 @@ public class TextUtilitiesTest { @Test public void testNextDelimiter() { - Map.Entry<Integer, String> result; + DelimiterInfo result; result = TextUtilities.nextDelimiter("abc\ndef", 0); - assertEquals(3, result.getKey().intValue()); - assertEquals("\n", result.getValue()); + assertEquals(3, result.delimiterIndex); + assertEquals("\n", result.delimiter); result = TextUtilities.nextDelimiter("abc\ndef", 5); - assertEquals(-1, result.getKey().intValue()); - assertEquals(null, result.getValue()); + assertEquals(-1, result.delimiterIndex); + assertEquals(null, result.delimiter); result = TextUtilities.nextDelimiter("abc\rdef\n123", 0); - assertEquals(3, result.getKey().intValue()); - assertEquals("\r", result.getValue()); + assertEquals(3, result.delimiterIndex); + assertEquals("\r", result.delimiter); result = TextUtilities.nextDelimiter("abc+\r\ndef\n123", 0); - assertEquals(4, result.getKey().intValue()); - assertEquals("\r\n", result.getValue()); + assertEquals(4, result.delimiterIndex); + assertEquals("\r\n", result.delimiter); result = TextUtilities.nextDelimiter("abc~>\r\r\ndef\n123", 0); - assertEquals(5, result.getKey().intValue()); - assertEquals("\r", result.getValue()); + assertEquals(5, result.delimiterIndex); + assertEquals("\r", result.delimiter); result = TextUtilities.nextDelimiter("\nabc~>\r\r\ndef\n123", 0); - assertEquals(0, result.getKey().intValue()); - assertEquals("\n", result.getValue()); + assertEquals(0, result.delimiterIndex); + assertEquals("\n", result.delimiter); result = TextUtilities.nextDelimiter("abc~>123\r\n", 0); - assertEquals(8, result.getKey().intValue()); - assertEquals("\r\n", result.getValue()); + assertEquals(8, result.delimiterIndex); + assertEquals("\r\n", result.delimiter); result = TextUtilities.nextDelimiter("abc~>\r\r\ndef\n123", 9); - assertEquals(11, result.getKey().intValue()); - assertEquals("\n", result.getValue()); + assertEquals(11, result.delimiterIndex); + assertEquals("\n", result.delimiter); result = TextUtilities.nextDelimiter("", 0); - assertEquals(-1, result.getKey().intValue()); - assertEquals(null, result.getValue()); + assertEquals(-1, result.delimiterIndex); + assertEquals(null, result.delimiter); result = TextUtilities.nextDelimiter("abc123", 0); - assertEquals(-1, result.getKey().intValue()); - assertEquals(null, result.getValue()); + assertEquals(-1, result.delimiterIndex); + assertEquals(null, result.delimiter); } } diff --git a/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java b/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java index 88e3ecc6571..b13fa0479d7 100644 --- a/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java +++ b/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java @@ -46,8 +46,9 @@ public abstract class AbstractLineTracker implements ILineTracker, ILineTrackerE * Combines the information of the occurrence of a line delimiter. <code>delimiterIndex</code> * is the index where a line delimiter starts, whereas <code>delimiterLength</code>, * indicates the length of the delimiter. + * @since 3.10 */ - protected static class DelimiterInfo { + public static class DelimiterInfo { public int delimiterIndex; public int delimiterLength; public String delimiter; diff --git a/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java b/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java index 29e1b3e0578..fceca67e384 100644 --- a/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java +++ b/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java @@ -13,7 +13,6 @@ *******************************************************************************/ package org.eclipse.jface.text; -import java.util.AbstractMap; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -27,6 +26,7 @@ import java.util.Set; import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.text.AbstractLineTracker.DelimiterInfo; /** * A collection of text functions. @@ -63,7 +63,7 @@ public class TextUtilities { * @return the line delimiter */ public static String determineLineDelimiter(String text, String hint) { - String delimiter = nextDelimiter(text, 0).getValue(); + String delimiter = nextDelimiter(text, 0).delimiter; return delimiter != null ? delimiter : hint; } @@ -593,32 +593,36 @@ public class TextUtilities { * * @param text the text to be searched. Not <code>null</code>. * @param offset the offset in text at which to start the search - * @return a <code>Map.Entry<Integer, String></code> where key is index of found delimiter - * or <code>-1</code> if non found and value is the delimiter found or <code>null</code> - * if non found. The return value itself is never <code>null</code>. + * @return a {@link DelimiterInfo}. If no delimiter was found + * {@link DelimiterInfo#delimiterIndex} is <code>-1</code> and + * {@link DelimiterInfo#delimiter} is <code>null</code>. * @since 3.10 */ - public static Map.Entry<Integer, String> nextDelimiter(CharSequence text, int offset) { - int delimiterIndex= -1; - String delimiter= null; + public static DelimiterInfo nextDelimiter(CharSequence text, int offset) { + final DelimiterInfo info= new DelimiterInfo(); char ch; final int length= text.length(); for (int i= offset; i < length; i++) { ch= text.charAt(i); if (ch == '\r') { - delimiterIndex= i; + info.delimiterIndex= i; if (i + 1 < length && text.charAt(i + 1) == '\n') { - delimiter= DELIMITERS[2]; + info.delimiter= DELIMITERS[2]; break; } - delimiter= DELIMITERS[1]; + info.delimiter= DELIMITERS[1]; break; } else if (ch == '\n') { - delimiterIndex= i; - delimiter= DELIMITERS[0]; + info.delimiterIndex= i; + info.delimiter= DELIMITERS[0]; break; } } - return new AbstractMap.SimpleImmutableEntry<>(Integer.valueOf(delimiterIndex), delimiter); + if (info.delimiter == null) { + info.delimiterIndex= -1; + } else { + info.delimiterLength= info.delimiter.length(); + } + return info; } } diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java index 9276b771091..76b3c0d4944 100644 --- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java +++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java @@ -398,7 +398,7 @@ public class FindNextAction extends ResourceAction implements IUpdate { */ private String getFirstLine(String selection) { if (!selection.isEmpty()) { - int delimiterOffset = TextUtilities.nextDelimiter(selection, 0).getKey().intValue(); + int delimiterOffset = TextUtilities.nextDelimiter(selection, 0).delimiterIndex; if (delimiterOffset > 0) return selection.substring(0, delimiterOffset); } diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java index 937dce6476d..6b65bafd251 100644 --- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java +++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java @@ -1048,7 +1048,7 @@ class FindReplaceDialog extends Dialog { */ private String getFirstLine(String selection) { if (!selection.isEmpty()) { - int delimiterOffset = TextUtilities.nextDelimiter(selection, 0).getKey().intValue(); + int delimiterOffset = TextUtilities.nextDelimiter(selection, 0).delimiterIndex; if (delimiterOffset > 0) return selection.substring(0, delimiterOffset); else if (delimiterOffset == -1) |