spv-file-format.texi: Work on more of the "format" element attributes.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 11 Apr 2016 05:22:27 +0000 (22:22 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 11 Apr 2016 05:22:27 +0000 (22:22 -0700)
spv-file-format.texi

index 15eef0eedf19814fb4429f93d3cdab04b4f4e1de..f4cceb4b4c5c4cb675d22ece46826ff8a92bc375 100644 (file)
@@ -1896,47 +1896,158 @@ numeric or string format.
 @end defvr
 
 @noindent
-Whether other attributes are required (``yes''), prohibited (``no''),
-or optional (``opt'') depends on @code{baseFormat}:
+Whether, in the corpus, other attributes are always present (``yes''),
+never present (``no''), or sometimes present (``opt'') depends on
+@code{baseFormat}:
 
 @multitable {maximumFractionDigits} {@code{dateTime}} {@code{elapsedTime}} {number} {string}
 @headitem Attribute @tab @code{dateTime} @tab @code{elapsedTime} @tab number @tab string
 @item errorCharacter        @tab yes @tab yes @tab yes @tab opt
-@item maximumFractionDigits @tab  no @tab yes @tab yes @tab no
-@item minimumFractionDigits @tab  no @tab yes @tab yes @tab no
 @item separatorChars        @tab yes @tab  no @tab  no @tab no
-@item
-@item useGrouping           @tab  no @tab opt @tab  no @tab no
+@item @w{ }
 @item mdyOrder              @tab yes @tab  no @tab  no @tab no
-@item
+@item @w{ }
 @item showYear              @tab yes @tab  no @tab  no @tab no
 @item yearAbbreviation      @tab yes @tab  no @tab  no @tab no
-@item
+@item @w{ }
 @item showMonth             @tab yes @tab  no @tab  no @tab no
 @item monthFormat           @tab yes @tab  no @tab  no @tab no
-@item
+@item @w{ }
 @item showDay               @tab yes @tab opt @tab  no @tab no
 @item dayPadding            @tab yes @tab opt @tab  no @tab no
 @item dayOfMonthPadding     @tab yes @tab  no @tab  no @tab no
 @item dayType               @tab yes @tab  no @tab  no @tab no
-@item
+@item @w{ }
 @item showHour              @tab yes @tab opt @tab  no @tab no
 @item hourFormat            @tab yes @tab opt @tab  no @tab no
 @item hourPadding           @tab yes @tab yes @tab  no @tab no
-@item
+@item @w{ }
 @item showMinute            @tab yes @tab  no @tab  no @tab no
 @item minutePadding         @tab yes @tab yes @tab  no @tab no
-@item
+@item @w{ }
 @item showSecond            @tab yes @tab yes @tab  no @tab no
 @item secondPadding         @tab  no @tab yes @tab  no @tab no
-@item
+@item @w{ }
 @item showMillis            @tab  no @tab yes @tab  no @tab no
-@item
-@item tryStringsAsNumbers   @tab  no @tab  no @tab  no @tab no
-@item
+@item @w{ }
 @item minimumIntegerDigits  @tab  no @tab  no @tab yes @tab no
+@item maximumFractionDigits @tab  no @tab yes @tab yes @tab no
+@item minimumFractionDigits @tab  no @tab yes @tab yes @tab no
+@item useGrouping           @tab  no @tab opt @tab  no @tab no
+@item @w{ }
+@item tryStringsAsNumbers   @tab  no @tab  no @tab  no @tab no
+@item @w{ }
 @item scientific            @tab  no @tab  no @tab yes @tab no
 @item small                 @tab  no @tab  no @tab opt @tab no
-@item
+@item @w{ }
 @item suffix                @tab  no @tab  no @tab opt @tab no
 @end multitable
+
+Each attribute is described below.
+
+@defvr {Attribute} errorCharacter
+A character that replaces the formatted value when it cannot otherwise
+be represented in the given format.  Always @samp{*}.
+@end defvr
+
+@defvr {Attribute} separatorChars
+Exactly four characters.  In order, these are used for: decimal point,
+grouping, date separator, time separator.  Always @samp{.,-:}.
+@end defvr
+
+@defvr {Attribute} mdyOrder
+Within a date, the order of the days, months, and years.
+@code{dayMonthYear} is the only observed value, but one would expect
+that @code{monthDayYear} and @code{yearMonthDay} to be reasonable as
+well.
+@end defvr
+
+@defvr {Attribute} showYear
+@defvrx {Attribute} yearAbbreviation
+Whether to include the year and, if so, whether the year should be
+shown abbreviated, that is, with only 2 digits.  Each is @code{true}
+or @code{false}; only values of @code{true} and @code{false},
+respectively, have been observed.
+@end defvr
+
+@defvr {Attribute} showMonth
+@defvrx {Attribute} monthFormat
+Whether to include the month (@code{true} or @code{false}) and, if so,
+how to format it.  @code{monthFormat} is one of the following:
+
+@table @code
+@item long
+The full name of the month, e.g.@: in an English locale,
+@code{September}.
+
+@item short
+The abbreviated name of the month, e.g.@: in an English locale,
+@code{Sep}.
+
+@item number
+The number representing the month, e.g.@: 9 for September.
+
+@item paddedNumber
+A two-digit number representing the month, e.g.@: 09 for September.
+@end table
+
+Only values of @code{true} and @code{short}, respectively, have been
+observed.
+@end defvr
+
+@defvr {Attribute} showDay
+@defvrx {Attribute} dayPadding
+@defvrx {Attribute} dayOfMonthPadding
+@defvrx {Attribute} dayType
+When @code{baseFormat} is @code{elapsedTime}, @code{showDay} controls
+whether and how the ``day'' component (e.g.@: the number of elapsed
+24-hour periods) of the elapsed time is displayed.  @code{dayPadding}
+presumably controls whether the day is padded with spaces, but the
+details are not understood.  The only observed values are @code{true}
+and @code{true}, respectively.  @code{dayOfMonthPadding} and
+@code{dayType} are not used.
+
+When @code{baseFormat} is @code{dateTime}, @code{showDay}, which is
+always @code{true} in the corpus, controls whether a day is displayed.
+@code{dayType} is always @code{month} in the corpus, specifying that
+the day of the month is to be displayed; a value of @code{year} is
+supposed to indicate that the day of the year, where 1 is January 1,
+is to be displayed instead.  @code{dayOfMonthPadding} or possibly
+@code{dayPadding} presumably controls whether a 1-digit day of the
+month is padded with a space to occupy two positions; in the corpus
+both are always present and always @code{true}.  (A day of the year
+would presumably be padded to 3 positions.)
+@end defvr
+
+@defvr {Attribute} showHour
+@defvrx {Attribute} hourFormat
+@defvrx {Attribute} hourPadding
+@code{showHour} controls whether and how the hour component of a date
+or an elapsed time is displayed.  @code{hourPadding} presumably
+controls whether the hour is padded with spaces, but the details are
+not understood.  The only observed values are @code{true} and
+@code{true}, respectively.
+
+@code{hourFormat}, if present, is one of:
+
+@table @code
+@item AMPM
+The time is displayed with an @code{am} or @code{pm} suffix, e.g.@:
+@code{10:15pm}.
+
+@item AS_24
+The time is displayed in a 24-hour format, e.g.@: @code{22:15}.
+
+This is the only value observed in the corpus.
+
+@item AS_12
+The time is displayed in a 12-hour format, without distinguishing
+morning or evening, e.g.@: @code{10;15}.
+@end table
+
+@code{hourFormat} is sometimes present for @code{elapsedTime} formats,
+which is confusing since a time duration does not have a concept of AM
+or PM.  This might indicate a bug in the code that generated the XML
+in the corpus, or it might indicate that @code{elapsedTime} is
+sometimes used to format a time of day.
+@end defvr