2 // DateTimeFormatEntry.cs
5 // Jackson Harper (jackson@ximian.com)
6 // Marek Safar <marek.safar@gmail.com>
8 // (C) 2004, Novell, Inc (http://www.novell.com)
9 // Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System
.Collections
.Generic
;
35 namespace Mono
.Tools
.LocaleBuilder
37 public class DateTimeFormatEntry
: Entry
39 public string NativeCalendarName
;
40 public string[] AbbreviatedDayNames
= new string[Constants
.NUM_DAYS
];
41 // Input data are mostly missing for abbreviated month but datetime 'MMM' parse depends on them
42 // we pre-fill them the most common ones
43 public string[] AbbreviatedMonthGenitiveNames
= new string[Constants
.NUM_MONTHS
] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", null }
;
44 public string[] AbbreviatedMonthNames
= new string[Constants
.NUM_MONTHS
] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", null }
;
45 public string AMDesignator
;
46 public int? CalendarWeekRule
;
47 public string DateSeparator
;
48 public string[] DayNames
= new string[Constants
.NUM_DAYS
];
49 public int? FirstDayOfWeek
;
50 public string RawFullDateTimePattern
;
51 public string LongDatePattern
;
52 public string LongTimePattern
;
53 public string MonthDayPattern
;
54 public string[] MonthGenitiveNames
= new string[Constants
.NUM_MONTHS
];
55 public string[] MonthNames
= new string[Constants
.NUM_MONTHS
];
56 public string PMDesignator
;
57 public string ShortDatePattern
;
58 public string ShortTimePattern
;
59 public string TimeSeparator
;
60 public string YearMonthPattern
;
61 public string[] ShortDatePatterns
= new string[Constants
.NUM_SHORT_DATE_PATTERNS
];
62 public string[] LongDatePatterns
= new string[Constants
.NUM_LONG_DATE_PATTERNS
];
63 public string[] ShortTimePatterns
= new string[Constants
.NUM_SHORT_TIME_PATTERNS
];
64 public string[] LongTimePatterns
= new string[Constants
.NUM_LONG_TIME_PATTERNS
];
65 public string[] ShortestDayNames
= new string[Constants
.NUM_DAYS
];
66 public string[] YearMonthPatterns
= new string[Constants
.NUM_YEAR_MONTH_PATTERNS
];
70 public void AppendTableRow (StringBuilder builder
)
72 builder
.Append ("\t{");
73 builder
.Append (EncodeStringIdx (MonthDayPattern
) + ", ");
75 builder
.Append (EncodeStringIdx (AMDesignator
) + ", ");
76 builder
.Append (EncodeStringIdx (PMDesignator
) + ", ");
78 AppendNames (builder
, DayNames
).Append (", ");
79 AppendNames (builder
, AbbreviatedDayNames
).Append (", ");
80 AppendNames (builder
, ShortestDayNames
).Append (", ");
82 AppendNames (builder
, MonthNames
).Append (", ");
83 AppendNames (builder
, MonthGenitiveNames
).Append (", ");
84 AppendNames (builder
, AbbreviatedMonthNames
).Append (", ");
85 AppendNames (builder
, AbbreviatedMonthGenitiveNames
).Append (", ");
88 builder
.Append ((CalendarWeekRule
?? 0) + ", ");
89 builder
.Append ((FirstDayOfWeek
?? 0) + ", ");
91 builder
.Append (EncodeStringIdx (DateSeparator
) + ", ");
92 builder
.Append (EncodeStringIdx (TimeSeparator
) + ", ");
94 AppendPatterns (builder
, ShortDatePatterns
);
96 AppendPatterns (builder
, LongDatePatterns
);
98 AppendPatterns (builder
, ShortTimePatterns
);
100 AppendPatterns (builder
, LongTimePatterns
);
101 builder
.Append (',');
102 AppendPatterns (builder
, YearMonthPatterns
);
104 builder
.Append ('}');
107 private void AppendPatterns (StringBuilder builder
, IList
<string> patterns
)
109 builder
.Append ('{');
110 for (int i
= 0; i
< patterns
.Count
; i
++) {
112 builder
.Append (',');
114 string s
= EncodeStringIdx (patterns
[i
]);
117 if (patterns
.Count
== 0)
118 builder
.Append ('0');
119 builder
.Append ('}');
122 public override string ToString ()
124 StringBuilder builder
= new StringBuilder ();
125 AppendTableRow (builder
);
126 return builder
.ToString ();