Merge pull request #1861 from saper/home-override
[mono-project.git] / tools / locale-builder / DateTimeFormatEntry.cs
blobb9aa3822f6989b509a2ff04113928e1fd3d70a7f
1 //
2 // DateTimeFormatEntry.cs
3 //
4 // Authors:
5 // Jackson Harper (jackson@ximian.com)
6 // Marek Safar <marek.safar@gmail.com>
7 //
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.
32 using System.Text;
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];
68 public int Row;
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 (", ");
87 // TODO:
88 builder.Append ((CalendarWeekRule ?? 0) + ", ");
89 builder.Append ((FirstDayOfWeek ?? 0) + ", ");
91 builder.Append (EncodeStringIdx (DateSeparator) + ", ");
92 builder.Append (EncodeStringIdx (TimeSeparator) + ", ");
94 AppendPatterns (builder, ShortDatePatterns);
95 builder.Append (',');
96 AppendPatterns (builder, LongDatePatterns);
97 builder.Append (',');
98 AppendPatterns (builder, ShortTimePatterns);
99 builder.Append (',');
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++) {
111 if (i > 0)
112 builder.Append (',');
114 string s = EncodeStringIdx (patterns[i]);
115 builder.Append (s);
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 ();