declare namespace java { namespace text { /** * A ChoiceFormat allows you to attach a format to a range of numbers. * It is generally used in a MessageFormat for handling plurals. * The choice is specified with an ascending list of doubles, where each item * specifies a half-open interval up to the next item: *
*
         * X matches j if and only if limit[j] ≤ X < limit[j+1]
         * 
*
* If there is no match, then either the first or last index is used, depending * on whether the number (X) is too low or too high. If the limit array is not * in ascending order, the results of formatting will be incorrect. ChoiceFormat * also accepts \u221E as equivalent to infinity(INF). *

* Note: * ChoiceFormat differs from the other Format * classes in that you create a ChoiceFormat object with a * constructor (not with a getInstance style factory * method). The factory methods aren't necessary because ChoiceFormat * doesn't require any complex setup for a given locale. In fact, * ChoiceFormat doesn't implement any locale specific behavior. *

* When creating a ChoiceFormat, you must specify an array of formats * and an array of limits. The length of these arrays must be the same. * For example, *

*

* Here is a simple example that shows formatting and parsing: *

*
{@code
         * double[] limits = {1,2,3,4,5,6,7};
         * String[] dayOfWeekNames = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"};
         * ChoiceFormat form = new ChoiceFormat(limits, dayOfWeekNames);
         * ParsePosition status = new ParsePosition(0);
         * for (double i = 0.0; i <= 8.0; ++i) {
         * status.setIndex(0);
         * System.out.println(i + " -> " + form.format(i) + " -> "
         * + form.parse(form.format(i),status));
         * }
         * }
*
* Here is a more complex example, with a pattern format: *
*
{@code
         * double[] filelimits = {0,1,2};
         * String[] filepart = {"are no files","is one file","are {2} files"};
         * ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
         * Format[] testFormats = {fileform, null, NumberFormat.getInstance()};
         * MessageFormat pattform = new MessageFormat("There {0} on {1}");
         * pattform.setFormats(testFormats);
         * Object[] testArgs = {null, "ADisk", null};
         * for (int i = 0; i < 4; ++i) {
         * testArgs[0] = new Integer(i);
         * testArgs[2] = testArgs[0];
         * System.out.println(pattform.format(testArgs));
         * }
         * }
*
*

* Specifying a pattern for ChoiceFormat objects is fairly straightforward. * For example: *

*
{@code
         * ChoiceFormat fmt = new ChoiceFormat(
         * "-1#is negative| 0#is zero or fraction | 1#is one |1.0
         * 
* And the output result would be like the following: *
*
{@code
         * Format with -INF : is negative
         * Format with -1.0 : is negative
         * Format with 0 : is zero or fraction
         * Format with 0.9 : is zero or fraction
         * Format with 1.0 : is one
         * Format with 1.5 : is 1+
         * Format with 2 : is two
         * Format with 2.1 : is more than 2.
         * Format with NaN : is negative
         * Format with +INF : is more than 2.
         * }
*
*

Synchronization

*

* Choice formats are not synchronized. * It is recommended to create separate format instances for each thread. * If multiple threads access a format concurrently, it must be synchronized * externally. * @see DecimalFormat * @see MessageFormat * @author Mark Davis */ // @ts-ignore class ChoiceFormat extends java.text.NumberFormat { /** * Constructs with limits and corresponding formats based on the pattern. * @param newPattern the new pattern string * @see #applyPattern */ // @ts-ignore constructor(newPattern: java.lang.String | string) /** * Constructs with the limits and the corresponding formats. * @param limits limits in ascending order * @param formats corresponding format strings * @see #setChoices */ // @ts-ignore constructor(limits: number /*double*/[], formats: java.lang.String[] | string[]) /** * Sets the pattern. * @param newPattern See the class description. */ // @ts-ignore public applyPattern(newPattern: java.lang.String | string): void /** * Gets the pattern. * @return the pattern string */ // @ts-ignore public toPattern(): string /** * Set the choices to be used in formatting. * @param limits contains the top value that you want * parsed with that format, and should be in ascending sorted order. When * formatting X, the choice will be the i, where * limit[i] ≤ X {#literal <} limit[i+1]. * If the limit array is not in ascending order, the results of formatting * will be incorrect. * @param formats are the formats you want to use for each limit. * They can be either Format objects or Strings. * When formatting with object Y, * if the object is a NumberFormat, then ((NumberFormat) Y).format(X) * is called. Otherwise Y.toString() is called. */ // @ts-ignore public setChoices(limits: number /*double*/[], formats: java.lang.String[] | string[]): void /** * Get the limits passed in the constructor. * @return the limits. */ // @ts-ignore public getLimits(): number /*double*/[] /** * Get the formats passed in the constructor. * @return the formats. */ // @ts-ignore public getFormats(): any[] /** * Specialization of format. This method really calls * format(double, StringBuffer, FieldPosition) * thus the range of longs that are supported is only equal to * the range that can be stored by double. This will never be * a practical limitation. */ // @ts-ignore public format(number: number /*long*/, toAppendTo: java.lang.StringBuffer, status: java.text.FieldPosition): java.lang.StringBuffer /** * Returns pattern with formatted double. * @param number number to be formatted and substituted. * @param toAppendTo where text is appended. * @param status ignore no useful status is returned. */ // @ts-ignore public format(number: number /*double*/, toAppendTo: java.lang.StringBuffer, status: java.text.FieldPosition): java.lang.StringBuffer /** * Parses a Number from the input text. * @param text the source text. * @param status an input-output parameter. On input, the * status.index field indicates the first character of the * source text that should be parsed. On exit, if no error * occurred, status.index is set to the first unparsed character * in the source text. On exit, if an error did occur, * status.index is unchanged and status.errorIndex is set to the * first index of the character that caused the parse to fail. * @return A Number representing the value of the number parsed. */ // @ts-ignore public parse(text: java.lang.String | string, status: java.text.ParsePosition): java.lang.Number /** * Finds the least double greater than {@code d}. * If {@code NaN}, returns same value. *

Used to make half-open intervals. * @param d the reference value * @return the least double value greather than {#code d} * @see #previousDouble */ // @ts-ignore public static nextDouble(d: number /*double*/): number /*double*/ /** * Finds the greatest double less than {@code d}. * If {@code NaN}, returns same value. * @param d the reference value * @return the greatest double value less than {#code d} * @see #nextDouble */ // @ts-ignore public static previousDouble(d: number /*double*/): number /*double*/ /** * Overrides Cloneable */ // @ts-ignore public clone(): any /** * Generates a hash code for the message format object. */ // @ts-ignore public hashCode(): number /*int*/ /** * Equality comparision between two */ // @ts-ignore public equals(obj: java.lang.Object | any): boolean /** * Finds the least double greater than {@code d} (if {@code positive} is * {@code true}), or the greatest double less than {@code d} (if * {@code positive} is {@code false}). * If {@code NaN}, returns same value. * Does not affect floating-point flags, * provided these member functions do not: * Double.longBitsToDouble(long) * Double.doubleToLongBits(double) * Double.isNaN(double) * @param d the reference value * @param positive {#code true} if the least double is desired; * {@code false} otherwise * @return the least or greater double value */ // @ts-ignore public static nextDouble(d: number /*double*/, positive: boolean): number /*double*/ } } }