[xbuild] Fix bug #674630.
[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 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);
42
43                 public string FullDateTimePattern {
44                         get { return String.Format (RawFullDateTimePattern, LongTimePattern, LongDatePattern); }
45                 }
46
47                 public int Row;
48
49                 public void AppendTableRow (StringBuilder builder)
50                 {
51                         builder.Append ("\t{");
52                         builder.Append (EncodeStringIdx (FullDateTimePattern) + ", ");
53                         builder.Append (EncodeStringIdx (LongDatePattern) + ", ");
54                         builder.Append (EncodeStringIdx (ShortDatePattern) + ", ");
55
56                         builder.Append (EncodeStringIdx (LongTimePattern) + ", ");
57                         builder.Append (EncodeStringIdx (ShortTimePattern) + ", ");
58
59                         builder.Append (EncodeStringIdx (YearMonthPattern) + ", ");
60                         builder.Append (EncodeStringIdx (MonthDayPattern) + ", ");
61
62                         builder.Append (EncodeStringIdx (AMDesignator) + ", ");
63                         builder.Append (EncodeStringIdx (PMDesignator) + ", ");
64
65                         AppendNames (builder, DayNames);
66                         builder.Append (", ");
67                         AppendNames (builder, AbbreviatedDayNames);
68                         builder.Append (", ");
69
70                         AppendNames (builder, MonthNames);
71                         builder.Append (", ");
72                         AppendNames (builder, AbbreviatedMonthNames);
73                         builder.Append (", ");
74
75                         builder.Append (CalendarWeekRule + ", ");
76                         builder.Append (FirstDayOfWeek + ", ");
77                         
78                         builder.Append (EncodeStringIdx (DateSeparator) + ", ");
79                         builder.Append (EncodeStringIdx (TimeSeparator) + ", ");
80
81                         AppendPatterns (builder, ShortDatePatterns);
82                         builder.Append (',');
83                         AppendPatterns (builder, LongDatePatterns);
84                         builder.Append (',');
85                         AppendPatterns (builder, ShortTimePatterns);
86                         builder.Append (',');
87                         AppendPatterns (builder, LongTimePatterns);
88
89                         builder.Append ('}');
90                 }
91
92                 private void AppendPatterns (StringBuilder builder, ArrayList al)
93                 {
94                         string [] patterns = al.ToArray (typeof (string)) as string [];
95                         builder.Append ('{');
96                         for (int i = 0; i < patterns.Length; i++) {
97                                 string s = EncodeStringIdx (patterns [i]);
98                                 builder.Append (s);
99                                 if (i + 1 < patterns.Length)
100                                         builder.Append (',');
101                         }
102                         if (patterns.Length == 0)
103                                 builder.Append ('0');
104                         builder.Append ('}');
105                 }
106
107                 public override string ToString ()
108                 {
109                         StringBuilder builder = new StringBuilder ();
110                         AppendTableRow (builder);
111                         return builder.ToString ();
112                 }
113
114                 private void AppendNames (StringBuilder builder, ArrayList names)
115                 {
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 (", ");
121                         }
122                         builder.Append ("}");
123                 }
124         }
125 }
126
127