11package org .dicio .numbers ;
22
3- import org .dicio .numbers .formatter .NumberFormatter ;
3+ import org .dicio .numbers .formatter .Formatter ;
44import org .dicio .numbers .formatter .param .NiceDateParameters ;
55import org .dicio .numbers .formatter .param .NiceDateTimeParameters ;
66import org .dicio .numbers .formatter .param .NiceDurationParameters ;
77import org .dicio .numbers .formatter .param .NiceNumberParameters ;
88import org .dicio .numbers .formatter .param .NiceTimeParameters ;
99import org .dicio .numbers .formatter .param .NiceYearParameters ;
1010import org .dicio .numbers .formatter .param .PronounceNumberParameters ;
11- import org .dicio .numbers .parser .NumberParser ;
11+ import org .dicio .numbers .parser .Parser ;
12+ import org .dicio .numbers .parser .lexer .TokenStream ;
13+ import org .dicio .numbers .parser .param .ExtractDateTimeParams ;
1214import org .dicio .numbers .parser .param .ExtractDurationParams ;
13- import org .dicio .numbers .parser .param .ExtractNumbersParams ;
14- import org .dicio .numbers .util .MixedFraction ;
15+ import org .dicio .numbers .parser .param .ExtractNumberParams ;
16+ import org .dicio .numbers .unit .Duration ;
17+ import org .dicio .numbers .unit .MixedFraction ;
1518
16- import java .time .Duration ;
1719import java .time .LocalDate ;
1820import java .time .LocalDateTime ;
1921import java .time .LocalTime ;
2022import java .util .Locale ;
2123
2224/**
23- * A class that wraps a {@link NumberFormatter } and a {@link NumberParser } for a particular language
25+ * A class that wraps a {@link Formatter } and a {@link Parser } for a particular language
2426 * and provides convenience methods to call the available functions without having to provide all of
2527 * the default parameters.
2628 */
27- public final class NumberParserFormatter {
28- private final NumberFormatter formatter ;
29- private final NumberParser parser ;
29+ public final class ParserFormatter {
30+ private final Formatter formatter ;
31+ private final Parser parser ;
3032
3133 /**
32- * Constructs a {@link NumberParserFormatter } that wraps the provided {@link NumberFormatter }
33- * and {@link NumberParser }. Note: do not use this manually, prefer
34- * {@link NumberParserFormatter }. This is mostly used for tests.
34+ * Constructs a {@link ParserFormatter } that wraps the provided {@link Formatter }
35+ * and {@link Parser }. Note: do not use this manually, prefer
36+ * {@link ParserFormatter }. This is mostly used for tests.
3537 *
3638 * @param formatter the formatter to wrap
3739 * @param parser the parser to wrap
3840 */
39- public NumberParserFormatter (final NumberFormatter formatter , final NumberParser parser ) {
41+ public ParserFormatter (final Formatter formatter , final Parser parser ) {
4042 this .formatter = formatter ;
4143 this .parser = parser ;
4244 }
4345
4446 /**
45- * Constructs a {@link NumberParserFormatter } for the language of the provided locale.
47+ * Constructs a {@link ParserFormatter } for the language of the provided locale.
4648 *
4749 * @param locale the locale containing the language to use
4850 * @throws IllegalArgumentException if the provided locale is not supported
4951 */
50- public NumberParserFormatter (final Locale locale ) throws IllegalArgumentException {
51- final NumberParserFormatterBuilder .ParserFormatterPair parserFormatterPair
52- = NumberParserFormatterBuilder .parserFormatterPairForLocale (locale );
52+ public ParserFormatter (final Locale locale ) throws IllegalArgumentException {
53+ final ParserFormatterBuilder .ParserFormatterPair parserFormatterPair
54+ = ParserFormatterBuilder .parserFormatterPairForLocale (locale );
5355 this .formatter = parserFormatterPair .formatter ;
5456 this .parser = parserFormatterPair .parser ;
5557 }
@@ -62,10 +64,10 @@ public NumberParserFormatter(final Locale locale) throws IllegalArgumentExceptio
6264 *
6365 * @param number the number to format
6466 * @return an instance of a utility class that enables customizing various parameters before
65- * calling {@link NumberFormatter #niceNumber(MixedFraction, boolean)}. See
67+ * calling {@link Formatter #niceNumber(MixedFraction, boolean)}. See
6668 * {@link NiceNumberParameters}.
6769 */
68- public final NiceNumberParameters niceNumber (final double number ) {
70+ public NiceNumberParameters niceNumber (final double number ) {
6971 return new NiceNumberParameters (formatter , number );
7072 }
7173
@@ -75,10 +77,10 @@ public final NiceNumberParameters niceNumber(final double number) {
7577 *
7678 * @param number the number to format
7779 * @return an instance of a utility class that enables customizing various parameters before
78- * calling {@link NumberFormatter #pronounceNumber(double, int, boolean, boolean,
80+ * calling {@link Formatter #pronounceNumber(double, int, boolean, boolean,
7981 * boolean)}. See {@link PronounceNumberParameters}.
8082 */
81- public final PronounceNumberParameters pronounceNumber (final double number ) {
83+ public PronounceNumberParameters pronounceNumber (final double number ) {
8284 return new PronounceNumberParameters (formatter , number );
8385 }
8486
@@ -88,10 +90,10 @@ public final PronounceNumberParameters pronounceNumber(final double number) {
8890 *
8991 * @param date the date to format (assumes already in local timezone)
9092 * @return an instance of a utility class that enables customizing various parameters before
91- * calling {@link NumberFormatter #niceDate(LocalDate, LocalDate)}. See {@link
93+ * calling {@link Formatter #niceDate(LocalDate, LocalDate)}. See {@link
9294 * NiceDateParameters}.
9395 */
94- public final NiceDateParameters niceDate (final LocalDate date ) {
96+ public NiceDateParameters niceDate (final LocalDate date ) {
9597 return new NiceDateParameters (formatter , date );
9698 }
9799
@@ -101,9 +103,9 @@ public final NiceDateParameters niceDate(final LocalDate date) {
101103 *
102104 * @param date the date containing the year to format (assumes already in local timezone)
103105 * @return an instance of a utility class that enables customizing various parameters before
104- * calling {@link NumberFormatter #niceYear(LocalDate)}. See {@link NiceYearParameters}.
106+ * calling {@link Formatter #niceYear(LocalDate)}. See {@link NiceYearParameters}.
105107 */
106- public final NiceYearParameters niceYear (final LocalDate date ) {
108+ public NiceYearParameters niceYear (final LocalDate date ) {
107109 // note: useless encapsulation, since niceYear has only the mandatory date parameter, but
108110 // keep for consistency
109111 return new NiceYearParameters (formatter , date );
@@ -115,10 +117,10 @@ public final NiceYearParameters niceYear(final LocalDate date) {
115117 *
116118 * @param time the time to format (assumes already in local timezone)
117119 * @return an instance of a utility class that enables customizing various parameters before
118- * calling {@link NumberFormatter #niceTime(LocalTime, boolean, boolean, boolean)}. See
120+ * calling {@link Formatter #niceTime(LocalTime, boolean, boolean, boolean)}. See
119121 * {@link NiceTimeParameters}.
120122 */
121- public final NiceTimeParameters niceTime (final LocalTime time ) {
123+ public NiceTimeParameters niceTime (final LocalTime time ) {
122124 return new NiceTimeParameters (formatter , time );
123125 }
124126
@@ -129,10 +131,10 @@ public final NiceTimeParameters niceTime(final LocalTime time) {
129131 *
130132 * @param dateTime the date time to format (assumes already in local timezone)
131133 * @return an instance of a utility class that enables customizing various parameters before
132- * calling {@link NumberFormatter #niceDateTime(LocalDate, LocalDate, LocalTime, boolean,
134+ * calling {@link Formatter #niceDateTime(LocalDate, LocalDate, LocalTime, boolean,
133135 * boolean)}. See {@link NiceDateTimeParameters}.
134136 */
135- public final NiceDateTimeParameters niceDateTime (final LocalDateTime dateTime ) {
137+ public NiceDateTimeParameters niceDateTime (final LocalDateTime dateTime ) {
136138 return new NiceDateTimeParameters (formatter , dateTime );
137139 }
138140
@@ -142,10 +144,10 @@ public final NiceDateTimeParameters niceDateTime(final LocalDateTime dateTime) {
142144 *
143145 * @param duration the duration to format
144146 * @return an instance of a utility class that enables customizing various parameters before
145- * calling {@link NumberFormatter #niceDuration(Duration, boolean)}. See {@link
147+ * calling {@link Formatter #niceDuration(Duration, boolean)}. See {@link
146148 * NiceDurationParameters}.
147149 */
148- public final NiceDurationParameters niceDuration (final Duration duration ) {
150+ public NiceDurationParameters niceDuration (final Duration duration ) {
149151 return new NiceDurationParameters (formatter , duration );
150152 }
151153
@@ -154,26 +156,37 @@ public final NiceDurationParameters niceDuration(final Duration duration) {
154156 * parsed as "I am ", 23, " years old".
155157 *
156158 * @param utterance the text to extract numbers from
157- * @return an instance of a utility class that enables customizing various parameters before
158- * calling {@link NumberParser#extractNumbers(String , boolean, boolean)}. See {@link
159- * ExtractNumbersParams }.
159+ * @return an instance of a utility class that enables customizing various parameters and then
160+ * allows calling {@link Parser#extractNumber(TokenStream , boolean, boolean)} in
161+ * multiple ways. See {@link ExtractNumberParams }.
160162 */
161- public final ExtractNumbersParams extractNumbers (final String utterance ) {
162- return new ExtractNumbersParams (parser , utterance );
163+ public ExtractNumberParams extractNumber (final String utterance ) {
164+ return new ExtractNumberParams (parser , utterance );
163165 }
164166
165167 /**
166168 * Used to extract a duration from a string. For example, "Set a timer for three minutes and
167- * five seconds" would be parsed as 185 seconds. If the user said multiple durations not next to
168- * one another inside the string, only the first one will be returned. For example, "400 days
169- * are more than one year" would be parsed only as 365 days.
169+ * five seconds" would be parsed as "Set a timer for ", 185 seconds.
170170 *
171171 * @param utterance the text to extract a duration from
172- * @return an instance of a utility class that enables customizing various parameters before
173- * calling {@link NumberParser #extractDuration(String , boolean)}. See {@link
174- * ExtractDurationParams}.
172+ * @return an instance of a utility class that enables customizing various parameters and then
173+ * allows calling {@link Parser #extractDuration(TokenStream , boolean)} in multiple
174+ * ways. See {@link ExtractDurationParams}.
175175 */
176- public final ExtractDurationParams extractDuration (final String utterance ) {
176+ public ExtractDurationParams extractDuration (final String utterance ) {
177177 return new ExtractDurationParams (parser , utterance );
178178 }
179+
180+ /**
181+ * Used to extract a date&time from a string. For example, "Set an alarm at five p.m." would be
182+ * parsed as "Set an alarm ", today at 5 PM.
183+ *
184+ * @param utterance the text to extract a date&time from
185+ * @return an instance of a utility class that enables customizing various parameters and then
186+ * allows calling {@link Parser#extractDateTime(TokenStream, LocalDateTime)} in
187+ * multiple ways. See {@link ExtractDateTimeParams}.
188+ */
189+ public ExtractDateTimeParams extractDateTime (final String utterance ) {
190+ return new ExtractDateTimeParams (parser , utterance );
191+ }
179192}
0 commit comments