ICU-22789 Rename and adjust logic for Stream<Segment>-returning APIs

This commit is contained in:
Elango Cheran 2025-01-03 12:49:17 -08:00
parent 47ffdd8fa9
commit e500e421dc
5 changed files with 39 additions and 35 deletions

View file

@ -80,8 +80,8 @@ public class LocalizedSegmenter implements Segmenter {
}
@Override
public Stream<Segment> ranges() {
return SegmentsImplUtils.ranges(this.breakIter, this.source);
public Stream<Segment> segments() {
return SegmentsImplUtils.segments(this.breakIter, this.source);
}
@Override
@ -91,21 +91,21 @@ public class LocalizedSegmenter implements Segmenter {
@Override
public Stream<Segment> rangesAfterIndex(int i) {
return SegmentsImplUtils.rangesAfterIndex(this.breakIter, this.source, i);
return SegmentsImplUtils.segmentsFrom(this.breakIter, this.source, i);
}
@Override
public Stream<Segment> rangesBeforeIndex(int i) {
return SegmentsImplUtils.rangesBeforeIndex(this.breakIter, this.source, i);
return SegmentsImplUtils.segmentsBefore(this.breakIter, this.source, i);
}
@Override
public Segment rangeAfterIndex(int i) {
public Segment segmentsFrom(int i) {
return SegmentsImplUtils.rangeAfterIndex(this.breakIter, this.source, i);
}
@Override
public Segment rangeBeforeIndex(int i) {
public Segment segmentsBefore(int i) {
return SegmentsImplUtils.rangeBeforeIndex(this.breakIter, this.source, i);
}

View file

@ -53,8 +53,8 @@ public class RuleBasedSegmenter implements Segmenter {
}
@Override
public Stream<Segment> ranges() {
return SegmentsImplUtils.ranges(this.breakIter, this.source);
public Stream<Segment> segments() {
return SegmentsImplUtils.segments(this.breakIter, this.source);
}
@Override
@ -64,21 +64,21 @@ public class RuleBasedSegmenter implements Segmenter {
@Override
public Stream<Segment> rangesAfterIndex(int i) {
return SegmentsImplUtils.rangesAfterIndex(this.breakIter, this.source, i);
return SegmentsImplUtils.segmentsFrom(this.breakIter, this.source, i);
}
@Override
public Stream<Segment> rangesBeforeIndex(int i) {
return SegmentsImplUtils.rangesBeforeIndex(this.breakIter, this.source, i);
return SegmentsImplUtils.segmentsBefore(this.breakIter, this.source, i);
}
@Override
public Segment rangeAfterIndex(int i) {
public Segment segmentsFrom(int i) {
return SegmentsImplUtils.rangeAfterIndex(this.breakIter, this.source, i);
}
@Override
public Segment rangeBeforeIndex(int i) {
public Segment segmentsBefore(int i) {
return SegmentsImplUtils.rangeBeforeIndex(this.breakIter, this.source, i);
}

View file

@ -11,15 +11,15 @@ public interface Segments {
Segment segmentAt(int i);
Stream<Segment> ranges();
Stream<Segment> segments();
Stream<Segment> rangesAfterIndex(int i);
Stream<Segment> rangesBeforeIndex(int i);
Segment rangeAfterIndex(int i);
Segment segmentsFrom(int i);
Segment rangeBeforeIndex(int i);
Segment segmentsBefore(int i);
Function<Segment, CharSequence> rangeToSequenceFn();
@ -103,14 +103,18 @@ public interface Segments {
this.direction = direction;
this.source = source;
if (direction == IterationDirection.FORWARDS) {
this.start = breakIter.following(startIdx);
Segment segmentAtIdx = SegmentsImplUtils.segmentAt(breakIter, source, startIdx);
if (segmentAtIdx == null) {
this.start = BreakIterator.DONE;
} else if (direction == IterationDirection.FORWARDS) {
this.start = segmentAtIdx.start;
this.limit = breakIter.following(this.start);
} else {
assert direction == IterationDirection.BACKWARDS;
this.start = breakIter.preceding(startIdx);
this.start = breakIter.preceding(segmentAtIdx.start);
this.limit = getDirectionBasedNextIdx();
}
this.limit = getDirectionBasedNextIdx();
}
int getDirectionBasedNextIdx() {

View file

@ -21,7 +21,7 @@ public class SegmentsImplUtils {
}
public static Stream<CharSequence> subSequences(BreakIterator breakIter, CharSequence sourceSequence) {
return ranges(breakIter, sourceSequence).map(rangeToSequenceFn(sourceSequence));
return segments(breakIter, sourceSequence).map(rangeToSequenceFn(sourceSequence));
}
public static Segment segmentAt(BreakIterator breakIter, CharSequence sourceSequence, int i) {
@ -50,11 +50,11 @@ public class SegmentsImplUtils {
}
}
public static Stream<Segment> ranges(BreakIterator breakIter, CharSequence sourceSequence) {
return rangesAfterIndex(breakIter, sourceSequence, -1);
public static Stream<Segment> segments(BreakIterator breakIter, CharSequence sourceSequence) {
return segmentsFrom(breakIter, sourceSequence, 0);
}
public static Stream<Segment> rangesAfterIndex(BreakIterator breakIter, CharSequence sourceSequence, int i) {
public static Stream<Segment> segmentsFrom(BreakIterator breakIter, CharSequence sourceSequence, int i) {
breakIter.setText(sourceSequence);
// create a Stream from a Spliterator of an Iterable so that the Stream can be lazy, not eager
@ -62,7 +62,7 @@ public class SegmentsImplUtils {
return StreamSupport.stream(iterable.spliterator(), false);
}
public static Stream<Segment> rangesBeforeIndex(BreakIterator breakIter, CharSequence sourceSequence, int i) {
public static Stream<Segment> segmentsBefore(BreakIterator breakIter, CharSequence sourceSequence, int i) {
breakIter.setText(sourceSequence);
// create a Stream from a Spliterator of an Iterable so that the Stream can be lazy, not eager

View file

@ -22,7 +22,7 @@ import org.junit.runners.JUnit4;
public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRanges() {
public void testSegments() {
Segmenter enWordSegmenter =
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
@ -34,7 +34,7 @@ public class SegmentsTest extends CoreTestFmwk {
// Create new Segments for source1
Segments segments1 = enWordSegmenter.segment(source1);
List<Segment> segments = segments1.ranges().collect(Collectors.toList());
List<Segment> segments = segments1.segments().collect(Collectors.toList());
assertEquals("first range start", 0, segments.get(0).start);
assertEquals("first range limit", 3, segments.get(0).limit);
@ -123,7 +123,7 @@ public class SegmentsTest extends CoreTestFmwk {
}
@Test
public void testRangesAfterIndex() {
public void testSegmentsFrom() {
Segmenter enWordSegmenter =
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
@ -138,15 +138,15 @@ public class SegmentsTest extends CoreTestFmwk {
List<Segment> segments = segments1.rangesAfterIndex(startIdx).collect(Collectors.toList());
assertEquals("first range start", 3, segments.get(0).start);
assertEquals("first range limit", 4, segments.get(0).limit);
assertEquals("first range start", 0, segments.get(0).start);
assertEquals("first range limit", 3, segments.get(0).limit);
assertEquals("second range start", 4, segments.get(1).start);
assertEquals("second range limit", 9, segments.get(1).limit);
assertEquals("second range start", 3, segments.get(1).start);
assertEquals("second range limit", 4, segments.get(1).limit);
}
@Test
public void testRangesBeforeIndex() {
public void testSegmentsBefore() {
Segmenter enWordSegmenter =
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
@ -218,7 +218,7 @@ public class SegmentsTest extends CoreTestFmwk {
Integer expStart = (Integer) caseDatum[2];
Integer expLimit = (Integer) caseDatum[3];
Segment segment = segments.rangeAfterIndex(startIdx);
Segment segment = segments.segmentsFrom(startIdx);
if (expStart == null) {
assert expLimit == null;
@ -259,7 +259,7 @@ public class SegmentsTest extends CoreTestFmwk {
Integer expStart = (Integer) caseDatum[2];
Integer expLimit = (Integer) caseDatum[3];
Segment segment = segments.rangeBeforeIndex(startIdx);
Segment segment = segments.segmentsBefore(startIdx);
if (startIdx < 0 ) {
logKnownIssue("ICU-22987", "BreakIterator.preceding(-2) should return DONE, not 0");