DateTimeFormatEntry.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // Mono.Tools.LocaleBuilder.DateTimeFormatEntry
  3. //
  4. // Author(s):
  5. // Jackson Harper ([email protected])
  6. //
  7. // (C) 2004, Novell, Inc (http://www.novell.com)
  8. //
  9. using System;
  10. using System.Text;
  11. using System.Collections;
  12. namespace Mono.Tools.LocaleBuilder {
  13. public class DateTimeFormatEntry : Entry {
  14. public string CalendarType;
  15. public ArrayList AbbreviatedDayNames = new ArrayList ();
  16. public ArrayList AbbreviatedMonthNames = new ArrayList ();
  17. public string AMDesignator;
  18. public int CalendarWeekRule;
  19. public string DateSeparator;
  20. public ArrayList DayNames = new ArrayList ();
  21. public int FirstDayOfWeek;
  22. public string RawFullDateTimePattern;
  23. public string LongDatePattern;
  24. public string LongTimePattern;
  25. public string MonthDayPattern;
  26. public ArrayList MonthNames = new ArrayList ();
  27. public string PMDesignator;
  28. public string ShortDatePattern;
  29. public string ShortTimePattern;
  30. public string TimeSeparator;
  31. public string YearMonthPattern;
  32. public int [] OptionalCalendars = new int [5];
  33. public ArrayList ShortDatePatterns = new ArrayList (14);
  34. public ArrayList LongDatePatterns = new ArrayList (8);
  35. public ArrayList ShortTimePatterns = new ArrayList (5);
  36. public ArrayList LongTimePatterns = new ArrayList (6);
  37. public string FullDateTimePattern {
  38. get { return String.Format (RawFullDateTimePattern, LongTimePattern, LongDatePattern); }
  39. }
  40. public int Row;
  41. public void AppendTableRow (StringBuilder builder)
  42. {
  43. builder.Append ("\t{");
  44. builder.Append (EncodeStringIdx (FullDateTimePattern) + ", ");
  45. builder.Append (EncodeStringIdx (LongDatePattern) + ", ");
  46. builder.Append (EncodeStringIdx (ShortDatePattern) + ", ");
  47. builder.Append (EncodeStringIdx (LongTimePattern) + ", ");
  48. builder.Append (EncodeStringIdx (ShortTimePattern) + ", ");
  49. builder.Append (EncodeStringIdx (YearMonthPattern) + ", ");
  50. builder.Append (EncodeStringIdx (MonthDayPattern) + ", ");
  51. builder.Append (EncodeStringIdx (AMDesignator) + ", ");
  52. builder.Append (EncodeStringIdx (PMDesignator) + ", ");
  53. AppendNames (builder, DayNames);
  54. builder.Append (", ");
  55. AppendNames (builder, AbbreviatedDayNames);
  56. builder.Append (", ");
  57. AppendNames (builder, MonthNames);
  58. builder.Append (", ");
  59. AppendNames (builder, AbbreviatedMonthNames);
  60. builder.Append (", ");
  61. builder.Append (CalendarWeekRule + ", ");
  62. builder.Append (FirstDayOfWeek + ", ");
  63. builder.Append (EncodeStringIdx (DateSeparator) + ", ");
  64. builder.Append (EncodeStringIdx (TimeSeparator) + ", ");
  65. AppendPatterns (builder, ShortDatePatterns);
  66. builder.Append (',');
  67. AppendPatterns (builder, LongDatePatterns);
  68. builder.Append (',');
  69. AppendPatterns (builder, ShortTimePatterns);
  70. builder.Append (',');
  71. AppendPatterns (builder, LongTimePatterns);
  72. builder.Append ('}');
  73. }
  74. private void AppendPatterns (StringBuilder builder, ArrayList al)
  75. {
  76. string [] patterns = al.ToArray (typeof (string)) as string [];
  77. builder.Append ('{');
  78. for (int i = 0; i < patterns.Length; i++) {
  79. string s = EncodeStringIdx (patterns [i]);
  80. builder.Append (s);
  81. if (i + 1 < patterns.Length)
  82. builder.Append (',');
  83. }
  84. if (patterns.Length == 0)
  85. builder.Append ('0');
  86. builder.Append ('}');
  87. }
  88. public override string ToString ()
  89. {
  90. StringBuilder builder = new StringBuilder ();
  91. AppendTableRow (builder);
  92. return builder.ToString ();
  93. }
  94. private void AppendNames (StringBuilder builder, ArrayList names)
  95. {
  96. builder.Append ('{');
  97. for (int i=0; i<names.Count; i++) {
  98. builder.Append (EncodeStringIdx (names [i].ToString ()));
  99. if (i+1 < names.Count)
  100. builder.Append (", ");
  101. }
  102. builder.Append ("}");
  103. }
  104. }
  105. }