ICU-22789 Create top level classes for builders of concrete Segmenter types

This commit is contained in:
Elango Cheran 2025-01-01 21:11:19 -08:00
parent e0f3554b33
commit f12d724f50
7 changed files with 59 additions and 60 deletions

View file

@ -17,10 +17,6 @@ public class LocalizedSegmenter implements Segmenter {
return new LocalizedSegments(s, this);
}
public static Builder builder() {
return new Builder();
}
LocalizedSegmenter(ULocale locale, SegmentationType segmentationType) {
this.locale = locale;
this.segmentationType = segmentationType;
@ -59,30 +55,6 @@ public class LocalizedSegmenter implements Segmenter {
SENTENCE,
}
public static class Builder {
private ULocale locale = ULocale.ROOT;
private SegmentationType segmentationType = SegmentationType.GRAPHEME_CLUSTER;
Builder() { }
public Builder setLocale(ULocale locale) {
this.locale = locale;
return this;
}
public Builder setSegmentationType(SegmentationType segmentationType) {
this.segmentationType = segmentationType;
return this;
}
public LocalizedSegmenter build() {
return new LocalizedSegmenter(this.locale, this.segmentationType);
}
}
public class LocalizedSegments implements Segments {
private CharSequence source;

View file

@ -0,0 +1,27 @@
package com.ibm.icu.text.segmenter;
import com.ibm.icu.text.segmenter.LocalizedSegmenter.SegmentationType;
import com.ibm.icu.util.ULocale;
public class LocalizedSegmenterBuilder {
private ULocale locale = ULocale.ROOT;
private SegmentationType segmentationType = SegmentationType.GRAPHEME_CLUSTER;
public LocalizedSegmenterBuilder() { }
public LocalizedSegmenterBuilder setLocale(ULocale locale) {
this.locale = locale;
return this;
}
public LocalizedSegmenterBuilder setSegmentationType(SegmentationType segmentationType) {
this.segmentationType = segmentationType;
return this;
}
public LocalizedSegmenter build() {
return new LocalizedSegmenter(this.locale, this.segmentationType);
}
}

View file

@ -15,10 +15,6 @@ public class RuleBasedSegmenter implements Segmenter {
return new RuleBasedSegments(s, this);
}
public static Builder builder() {
return new Builder();
}
RuleBasedSegmenter(String rules) {
this.rules = rules;
}
@ -33,22 +29,6 @@ public class RuleBasedSegmenter implements Segmenter {
return new RuleBasedBreakIterator(this.rules);
}
public static class Builder {
String rules;
Builder() { }
public Builder setRules(String rules) {
this.rules = rules;
return this;
}
public RuleBasedSegmenter build() {
return new RuleBasedSegmenter(this.rules);
}
}
public static class RuleBasedSegments implements Segments {
private CharSequence source;

View file

@ -0,0 +1,17 @@
package com.ibm.icu.text.segmenter;
public class RuleBasedSegmenterBuilder {
String rules;
public RuleBasedSegmenterBuilder() { }
public RuleBasedSegmenterBuilder setRules(String rules) {
this.rules = rules;
return this;
}
public RuleBasedSegmenter build() {
return new RuleBasedSegmenter(this.rules);
}
}

View file

@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.text.segmenter.LocalizedSegmenter;
import com.ibm.icu.text.segmenter.LocalizedSegmenter.SegmentationType;
import com.ibm.icu.text.segmenter.LocalizedSegmenterBuilder;
import com.ibm.icu.text.segmenter.Segmenter;
import com.ibm.icu.text.segmenter.Segments;
import com.ibm.icu.util.ULocale;
@ -34,7 +35,7 @@ public class LocalizedSegmenterTest extends CoreTestFmwk {
List<CharSequence> expWords = (List<CharSequence>) caseDatum[1];
Segmenter wordSeg =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(locale)
.setSegmentationType(SegmentationType.WORD)
.build();

View file

@ -5,6 +5,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.text.segmenter.RuleBasedSegmenter;
import com.ibm.icu.text.segmenter.RuleBasedSegmenterBuilder;
import com.ibm.icu.text.segmenter.Segmenter;
import com.ibm.icu.text.segmenter.Segments;
import java.util.Arrays;
@ -34,7 +35,7 @@ public class RuleBasedSegmenterTest extends CoreTestFmwk {
// the following rule substring was taken as a subset from BreakIteratorRules_en_US_TEST.java:
String rules = subrule;
Segmenter seg = RuleBasedSegmenter.builder()
Segmenter seg = new RuleBasedSegmenterBuilder()
.setRules(rules)
.build();
Segments segments = seg.segment(source);

View file

@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import com.ibm.icu.dev.test.CoreTestFmwk;
import com.ibm.icu.text.segmenter.LocalizedSegmenter;
import com.ibm.icu.text.segmenter.LocalizedSegmenter.SegmentationType;
import com.ibm.icu.text.segmenter.LocalizedSegmenterBuilder;
import com.ibm.icu.text.segmenter.Segmenter;
import com.ibm.icu.text.segmenter.Segments;
import com.ibm.icu.text.segmenter.Segments.Segment;
@ -23,7 +24,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRanges() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(SegmentationType.WORD)
.build();
@ -45,7 +46,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testMultipleSegmentObjectsFromSegmenter() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(SegmentationType.WORD)
.build();
@ -92,7 +93,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRangesAfterIndex() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(LocalizedSegmenter.SegmentationType.WORD)
.build();
@ -115,7 +116,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRangesBeforeIndex() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(LocalizedSegmenter.SegmentationType.WORD)
.build();
@ -138,7 +139,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRangeToSequenceFn() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(LocalizedSegmenter.SegmentationType.WORD)
.build();
@ -161,7 +162,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRangeAfterIndex() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(LocalizedSegmenter.SegmentationType.WORD)
.build();
@ -201,7 +202,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testRangeBeforeIndex() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(SegmentationType.WORD)
.build();
@ -245,7 +246,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testBoundaries() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(SegmentationType.WORD)
.build();
@ -265,7 +266,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testBoundariesAfterIndex() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(SegmentationType.WORD)
.build();
@ -297,7 +298,7 @@ public class SegmentsTest extends CoreTestFmwk {
@Test
public void testBoundariesBeforeIndex() {
Segmenter enWordSegmenter =
LocalizedSegmenter.builder()
new LocalizedSegmenterBuilder()
.setLocale(ULocale.ENGLISH)
.setSegmentationType(SegmentationType.WORD)
.build();