mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
util: extract StringUtil.findStartingLineSeparator
This commit is contained in:
@@ -3147,10 +3147,23 @@ public class StringUtil extends StringUtilRt {
|
||||
public static LineSeparator detectSeparators(@NotNull CharSequence text) {
|
||||
int index = indexOfAny(text, "\n\r");
|
||||
if (index == -1) return null;
|
||||
if (startsWith(text, index, "\r\n")) return LineSeparator.CRLF;
|
||||
if (text.charAt(index) == '\r') return LineSeparator.CR;
|
||||
if (text.charAt(index) == '\n') return LineSeparator.LF;
|
||||
throw new IllegalStateException();
|
||||
LineSeparator lineSeparator = findStartingLineSeparator(text, index);
|
||||
if (lineSeparator == null) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
return lineSeparator;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static LineSeparator findStartingLineSeparator(@NotNull CharSequence text, int startIndex) {
|
||||
if (startIndex < 0 || startIndex >= text.length()) {
|
||||
return null;
|
||||
}
|
||||
char ch = text.charAt(startIndex);
|
||||
if (ch == '\r') {
|
||||
return startIndex + 1 < text.length() && text.charAt(startIndex + 1) == '\n' ? LineSeparator.CRLF : LineSeparator.CR;
|
||||
}
|
||||
return ch == '\n' ? LineSeparator.LF : null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -373,6 +373,28 @@ public class StringUtilTest {
|
||||
assertEquals(LineSeparator.CRLF, StringUtil.detectSeparators("asd\r\nads\n"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindStartingLineSeparator() {
|
||||
assertEquals(null, StringUtil.findStartingLineSeparator("", -1));
|
||||
assertEquals(null, StringUtil.findStartingLineSeparator("", 0));
|
||||
assertEquals(null, StringUtil.findStartingLineSeparator("", 1));
|
||||
assertEquals(null, StringUtil.findStartingLineSeparator("\nHello", -1));
|
||||
assertEquals(null, StringUtil.findStartingLineSeparator("\nHello", 1));
|
||||
assertEquals(null, StringUtil.findStartingLineSeparator("\nH\rel\nlo", 6));
|
||||
|
||||
assertEquals(LineSeparator.LF, StringUtil.findStartingLineSeparator("\nHello", 0));
|
||||
assertEquals(LineSeparator.LF, StringUtil.findStartingLineSeparator("\nH\rel\nlo", 5));
|
||||
assertEquals(LineSeparator.LF, StringUtil.findStartingLineSeparator("Hello\n", 5));
|
||||
|
||||
assertEquals(LineSeparator.CR, StringUtil.findStartingLineSeparator("\rH\r\nello", 0));
|
||||
assertEquals(LineSeparator.CR, StringUtil.findStartingLineSeparator("Hello\r", 5));
|
||||
assertEquals(LineSeparator.CR, StringUtil.findStartingLineSeparator("Hello\b\r", 6));
|
||||
|
||||
assertEquals(LineSeparator.CRLF, StringUtil.findStartingLineSeparator("\rH\r\nello", 2));
|
||||
assertEquals(LineSeparator.CRLF, StringUtil.findStartingLineSeparator("\r\nH\r\nello", 0));
|
||||
assertEquals(LineSeparator.CRLF, StringUtil.findStartingLineSeparator("\r\nH\r\nello\r\n", 9));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFormatFileSize() {
|
||||
assertEquals("0B", StringUtil.formatFileSize(0));
|
||||
|
||||
Reference in New Issue
Block a user