New test.
[mono.git] / tools / locale-builder / DateTimeFormatEntry.cs
1 //
2 // Mono.Tools.LocaleBuilder.DateTimeFormatEntry
3 //
4 // Author(s):
5 //  Jackson Harper (jackson@ximian.com)
6 //
7 // (C) 2004, Novell, Inc (http://www.novell.com)
8 //
9
10
11 using System;
12 using System.Text;
13 using System.Collections;
14
15 namespace Mono.Tools.LocaleBuilder {
16
17         public class DateTimeFormatEntry : Entry {
18
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 FullDateTimePattern;
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);
42
43                 public int Row;
44
45                 public void AppendTableRow (StringBuilder builder)
46                 {
47                         builder.Append ("\t{");
48                         builder.Append (EncodeStringIdx (FullDateTimePattern) + ", ");
49                         builder.Append (EncodeStringIdx (LongDatePattern) + ", ");
50                         builder.Append (EncodeStringIdx (ShortDatePattern) + ", ");
51
52                         builder.Append (EncodeStringIdx (LongTimePattern) + ", ");
53                         builder.Append (EncodeStringIdx (ShortTimePattern) + ", ");
54
55                         builder.Append (EncodeStringIdx (YearMonthPattern) + ", ");
56                         builder.Append (EncodeStringIdx (MonthDayPattern) + ", ");
57
58                         builder.Append (EncodeStringIdx (AMDesignator) + ", ");
59                         builder.Append (EncodeStringIdx (PMDesignator) + ", ");
60
61                         AppendNames (builder, DayNames);
62                         builder.Append (", ");
63                         AppendNames (builder, AbbreviatedDayNames);
64                         builder.Append (", ");
65
66                         AppendNames (builder, MonthNames);
67                         builder.Append (", ");
68                         AbbreviatedMonthNames.Add (String.Empty); /* ALLWAYS ?? */
69                         AppendNames (builder, AbbreviatedMonthNames);
70                         builder.Append (", ");
71
72                         builder.Append (CalendarWeekRule + ", ");
73                         builder.Append (FirstDayOfWeek + ", ");
74                         
75                         builder.Append (EncodeStringIdx (DateSeparator) + ", ");
76                         builder.Append (EncodeStringIdx (TimeSeparator) + ", ");
77
78                         AppendPatterns (builder, ShortDatePatterns);
79                         builder.Append (',');
80                         AppendPatterns (builder, LongDatePatterns);
81                         builder.Append (',');
82                         AppendPatterns (builder, ShortTimePatterns);
83                         builder.Append (',');
84                         AppendPatterns (builder, LongTimePatterns);
85
86                         builder.Append ('}');
87                 }
88
89                 private void AppendPatterns (StringBuilder builder, ArrayList al)
90                 {
91                         string [] patterns = al.ToArray (typeof (string)) as string [];
92                         builder.Append ('{');
93                         for (int i = 0; i < patterns.Length; i++) {
94                                 string s = EncodeStringIdx (patterns [i]);
95                                 builder.Append (s);
96                                 if (i + 1 < patterns.Length)
97                                         builder.Append (',');
98                         }
99                         if (patterns.Length == 0)
100                                 builder.Append ('0');
101                         builder.Append ('}');
102                 }
103
104                 public override string ToString ()
105                 {
106                         StringBuilder builder = new StringBuilder ();
107                         AppendTableRow (builder);
108                         return builder.ToString ();
109                 }
110
111                 private void AppendNames (StringBuilder builder, ArrayList names)
112                 {
113                         builder.Append ('{');
114                         for (int i=0; i<names.Count; i++) {
115                                 builder.Append (EncodeStringIdx (names [i].ToString ()));
116                                 if (i+1 < names.Count)
117                                         builder.Append (", ");
118                         }
119                         builder.Append ("}");
120                 }
121         }
122 }
123
124