mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-09 15:27:38 +00:00
ICU-22789 Rename and adjust logic for Stream<Segment>-returning APIs
This commit is contained in:
parent
47ffdd8fa9
commit
e500e421dc
5 changed files with 39 additions and 35 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Add table
Reference in a new issue