2 // Mono.Tools.LocaleBuilder.DateTimeFormatEntry
5 // Jackson Harper (jackson@ximian.com)
7 // (C) 2004, Novell, Inc (http://www.novell.com)
13 using System
.Collections
;
15 namespace Mono
.Tools
.LocaleBuilder
{
17 public class DateTimeFormatEntry
: Entry
{
19 public string CalendarType
;
20 public ArrayList AbbreviatedDayNames
= new ArrayList ();
21 public ArrayList AbbreviatedMonthNames
= new ArrayList ();
22 public string AMDesignator
;
23 public int CalendarWeekRule
;
24 public string DateSeparator
;
25 public ArrayList DayNames
= new ArrayList ();
26 public int FirstDayOfWeek
;
27 public string RawFullDateTimePattern
;
28 public string LongDatePattern
;
29 public string LongTimePattern
;
30 public string MonthDayPattern
;
31 public ArrayList MonthNames
= new ArrayList ();
32 public string PMDesignator
;
33 public string ShortDatePattern
;
34 public string ShortTimePattern
;
35 public string TimeSeparator
;
36 public string YearMonthPattern
;
37 public int [] OptionalCalendars
= new int [5];
38 public ArrayList ShortDatePatterns
= new ArrayList (14);
39 public ArrayList LongDatePatterns
= new ArrayList (8);
40 public ArrayList ShortTimePatterns
= new ArrayList (5);
41 public ArrayList LongTimePatterns
= new ArrayList (6);
43 public string FullDateTimePattern
{
44 get { return String.Format (RawFullDateTimePattern, LongTimePattern, LongDatePattern); }
49 public void AppendTableRow (StringBuilder builder
)
51 builder
.Append ("\t{");
52 builder
.Append (EncodeStringIdx (FullDateTimePattern
) + ", ");
53 builder
.Append (EncodeStringIdx (LongDatePattern
) + ", ");
54 builder
.Append (EncodeStringIdx (ShortDatePattern
) + ", ");
56 builder
.Append (EncodeStringIdx (LongTimePattern
) + ", ");
57 builder
.Append (EncodeStringIdx (ShortTimePattern
) + ", ");
59 builder
.Append (EncodeStringIdx (YearMonthPattern
) + ", ");
60 builder
.Append (EncodeStringIdx (MonthDayPattern
) + ", ");
62 builder
.Append (EncodeStringIdx (AMDesignator
) + ", ");
63 builder
.Append (EncodeStringIdx (PMDesignator
) + ", ");
65 AppendNames (builder
, DayNames
);
66 builder
.Append (", ");
67 AppendNames (builder
, AbbreviatedDayNames
);
68 builder
.Append (", ");
70 AppendNames (builder
, MonthNames
);
71 builder
.Append (", ");
72 AppendNames (builder
, AbbreviatedMonthNames
);
73 builder
.Append (", ");
75 builder
.Append (CalendarWeekRule
+ ", ");
76 builder
.Append (FirstDayOfWeek
+ ", ");
78 builder
.Append (EncodeStringIdx (DateSeparator
) + ", ");
79 builder
.Append (EncodeStringIdx (TimeSeparator
) + ", ");
81 AppendPatterns (builder
, ShortDatePatterns
);
83 AppendPatterns (builder
, LongDatePatterns
);
85 AppendPatterns (builder
, ShortTimePatterns
);
87 AppendPatterns (builder
, LongTimePatterns
);
92 private void AppendPatterns (StringBuilder builder
, ArrayList al
)
94 string [] patterns
= al
.ToArray (typeof (string)) as string [];
96 for (int i
= 0; i
< patterns
.Length
; i
++) {
97 string s
= EncodeStringIdx (patterns
[i
]);
99 if (i
+ 1 < patterns
.Length
)
100 builder
.Append (',');
102 if (patterns
.Length
== 0)
103 builder
.Append ('0');
104 builder
.Append ('}');
107 public override string ToString ()
109 StringBuilder builder
= new StringBuilder ();
110 AppendTableRow (builder
);
111 return builder
.ToString ();
114 private void AppendNames (StringBuilder builder
, ArrayList names
)
116 builder
.Append ('{');
117 for (int i
=0; i
<names
.Count
; i
++) {
118 builder
.Append (EncodeStringIdx (names
[i
].ToString ()));
119 if (i
+1 < names
.Count
)
120 builder
.Append (", ");
122 builder
.Append ("}");