Class Numberer_en

  • All Implemented Interfaces:
    java.io.Serializable, Numberer
    Direct Known Subclasses:
    Numberer_de, Numberer_fr

    public class Numberer_en
    extends java.lang.Object
    implements Numberer, java.io.Serializable
    Class Numberer_en does number formatting for language="en". This supports the xsl:number element. Methods and data are declared as protected, and static is avoided, to allow easy subclassing.
    Author:
    Michael H. Kay
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      Numberer_en()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void alphaDefault​(long number, char formchar, FastStringBuffer sb)
      Default processing with an alphabetic format token: use the contiguous range of Unicode letters starting with that token.
      java.lang.String dayName​(int day, int minWidth, int maxWidth)
      Get a day name or abbreviation
      java.lang.String format​(long number, java.lang.String picture, int groupSize, java.lang.String groupSeparator, java.lang.String letterValue, java.lang.String ordinal)
      Format a number into a string
      java.lang.String getCalendarName​(java.lang.String code)
      Get the name of a calendar
      java.lang.String getEraName​(int year)
      Get the name for an era (e.g.
      java.lang.String getOrdinalSuffixForDateTime​(java.lang.String component)
      Get an ordinal suffix for a particular component of a date/time.
      java.lang.String getTimezoneName​(int tz)
      Get the name of a timezone
      java.lang.String halfDayName​(int minutes, int minWidth, int maxWidth)
      Get an am/pm indicator
      java.lang.String monthName​(int month, int minWidth, int maxWidth)
      Get a month name or abbreviation
      protected java.lang.String ordinalSuffix​(java.lang.String ordinalParam, long number)
      Construct the ordinal suffix for a number, for example "st", "nd", "rd"
      void setCountry​(java.lang.String country)
      Set the country used by this numberer (currenly used only for names of timezones)
      protected java.lang.String toAlpha​(long number, int min, int max)
      Format the number as an alphabetic label using the alphabet consisting of consecutive Unicode characters from min to max
      protected java.lang.String toAlphaSequence​(long number, java.lang.String alphabet)
      Convert the number into an alphabetic label using a given alphabet.
      java.lang.String toOrdinalWords​(java.lang.String ordinalParam, long number, int wordCase)
      Show an ordinal number as English words in a requested case (for example, Twentyfirst)
      static java.lang.String toRoman​(long n)
      Generate a Roman numeral (in lower case)
      java.lang.String toWords​(long number)
      Show the number as words in title case.
      java.lang.String toWords​(long number, int wordCase)  
      (package private) static void tz​(double offset, java.lang.String name, java.lang.String country)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Numberer_en

        public Numberer_en()
    • Method Detail

      • setCountry

        public void setCountry​(java.lang.String country)
        Set the country used by this numberer (currenly used only for names of timezones)
        Specified by:
        setCountry in interface Numberer
      • format

        public java.lang.String format​(long number,
                                       java.lang.String picture,
                                       int groupSize,
                                       java.lang.String groupSeparator,
                                       java.lang.String letterValue,
                                       java.lang.String ordinal)
        Format a number into a string
        Specified by:
        format in interface Numberer
        Parameters:
        number - The number to be formatted
        picture - The format token. This is a single component of the format attribute of xsl:number, e.g. "1", "01", "i", or "a"
        groupSize - number of digits per group (0 implies no grouping)
        groupSeparator - string to appear between groups of digits
        letterValue - The letter-value specified to xsl:number: "alphabetic" or "traditional". Can also be an empty string or null.
        ordinal - The value of the ordinal attribute specified to xsl:number The value "yes" indicates that ordinal numbers should be used; "" or null indicates that cardinal numbers
        Returns:
        the formatted number. Note that no errors are reported; if the request is invalid, the number is formatted as if the string() function were used.
      • ordinalSuffix

        protected java.lang.String ordinalSuffix​(java.lang.String ordinalParam,
                                                 long number)
        Construct the ordinal suffix for a number, for example "st", "nd", "rd"
        Parameters:
        ordinalParam - the value of the ordinal attribute (used in non-English language implementations)
        number - the number being formatted
        Returns:
        the ordinal suffix to be appended to the formatted number
      • alphaDefault

        protected void alphaDefault​(long number,
                                    char formchar,
                                    FastStringBuffer sb)
        Default processing with an alphabetic format token: use the contiguous range of Unicode letters starting with that token.
      • toAlpha

        protected java.lang.String toAlpha​(long number,
                                           int min,
                                           int max)
        Format the number as an alphabetic label using the alphabet consisting of consecutive Unicode characters from min to max
      • toAlphaSequence

        protected java.lang.String toAlphaSequence​(long number,
                                                   java.lang.String alphabet)
        Convert the number into an alphabetic label using a given alphabet. For example, if the alphabet is "xyz" the sequence is x, y, z, xx, xy, xz, ....
      • toRoman

        public static java.lang.String toRoman​(long n)
        Generate a Roman numeral (in lower case)
      • toWords

        public java.lang.String toWords​(long number)
        Show the number as words in title case. (We choose title case because the result can then be converted algorithmically to lower case or upper case).
      • toWords

        public java.lang.String toWords​(long number,
                                        int wordCase)
      • toOrdinalWords

        public java.lang.String toOrdinalWords​(java.lang.String ordinalParam,
                                               long number,
                                               int wordCase)
        Show an ordinal number as English words in a requested case (for example, Twentyfirst)
      • monthName

        public java.lang.String monthName​(int month,
                                          int minWidth,
                                          int maxWidth)
        Get a month name or abbreviation
        Specified by:
        monthName in interface Numberer
        Parameters:
        month - The month number (1=January, 12=December)
        minWidth - The minimum number of characters
        maxWidth - The maximum number of characters
      • dayName

        public java.lang.String dayName​(int day,
                                        int minWidth,
                                        int maxWidth)
        Get a day name or abbreviation
        Specified by:
        dayName in interface Numberer
        Parameters:
        day - The day of the week (1=Monday, 7=Sunday)
        minWidth - The minimum number of characters
        maxWidth - The maximum number of characters
      • halfDayName

        public java.lang.String halfDayName​(int minutes,
                                            int minWidth,
                                            int maxWidth)
        Get an am/pm indicator
        Specified by:
        halfDayName in interface Numberer
        Parameters:
        minutes - the minutes within the day
        minWidth - minimum width of output
        maxWidth - maximum width of output
        Returns:
        the AM or PM indicator
      • getOrdinalSuffixForDateTime

        public java.lang.String getOrdinalSuffixForDateTime​(java.lang.String component)
        Get an ordinal suffix for a particular component of a date/time.
        Specified by:
        getOrdinalSuffixForDateTime in interface Numberer
        Parameters:
        component - the component specifier from a format-dateTime picture, for example "M" for the month or "D" for the day.
        Returns:
        a string that is acceptable in the ordinal attribute of xsl:number to achieve the required ordinal representation. For example, "-e" for the day component in German, to have the day represented as "dritte August".
      • getEraName

        public java.lang.String getEraName​(int year)
        Get the name for an era (e.g. "BC" or "AD")
        Specified by:
        getEraName in interface Numberer
        Parameters:
        year - the proleptic gregorian year, using "0" for the year before 1AD
      • getTimezoneName

        public java.lang.String getTimezoneName​(int tz)
        Get the name of a timezone
        Specified by:
        getTimezoneName in interface Numberer
        Parameters:
        tz - the offset of the timezone from GMT in minutes
      • tz

        static void tz​(double offset,
                       java.lang.String name,
                       java.lang.String country)
      • getCalendarName

        public java.lang.String getCalendarName​(java.lang.String code)
        Get the name of a calendar
        Specified by:
        getCalendarName in interface Numberer
        Parameters:
        code - The code representing the calendar as in the XSLT 2.0 spec, e.g. AD for the Gregorian calendar