Class Numberer_en

java.lang.Object
net.sf.saxon.number.Numberer_en
All Implemented Interfaces:
Serializable, Numberer
Direct Known Subclasses:
Numberer_de, Numberer_fr

public class Numberer_en extends Object implements Numberer, 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:
  • Field Details

  • Constructor Details

    • Numberer_en

      public Numberer_en()
  • Method Details

    • setCountry

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

      public String format(long number, String picture, int groupSize, String groupSeparator, String letterValue, 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 String ordinalSuffix(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 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 String toAlphaSequence(long number, 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 String toRoman(long n)
      Generate a Roman numeral (in lower case)
    • toWords

      public 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 String toWords(long number, int wordCase)
    • toOrdinalWords

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

      public 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 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 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 String getOrdinalSuffixForDateTime(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 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 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, String name, String country)
    • getCalendarName

      public String getCalendarName(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